home *** CD-ROM | disk | FTP | other *** search
- // --------- options.cpp
-
- #include "options.h"
-
- CUELIST(Options)
- KEYSTROKE('\r', on_escape)
- KEYSTROKE(ESC, on_escape)
- KEYSTROKE('+', OnPlus)
- KEYSTROKE('-', OnMinus)
- ENDCUELIST
-
-
- Options::Options() : SceneDirector("options.pcx", NoTransition)
- {
- fletchers = new Digit(1);
- aim = new Digit(1);
- resurrections = new Digit(6);
- pointer = new Pointer(37, 96, 154);
- buttons = new Buttons;
- }
-
- Options::~Options()
- {
- delete buttons;
- delete pointer;
- delete resurrections;
- delete aim;
- delete fletchers;
- }
-
- void Options::display()
- {
- SceneDirector::display();
- fletchers->setxy(85,46);
- fletchers->appear();
- aim->setxy(85,105);
- aim->appear();
- resurrections->setxy(85,162);
- resurrections->appear();
- buttons->setxy(55,1);
- pointer->appear();
- }
- Digit *Options::currdigit(int& lo, int &hi)
- {
- switch (pointer->getselection()) {
- case 0:
- lo = 1;
- hi = 3;
- return fletchers;
- case 1:
- lo = 0;
- hi = 5;
- return aim;
- case 2:
- lo = 1;
- hi = 6;
- return resurrections;
- default:
- break;
- }
- return 0;
- }
- void Options::OnPlus()
- {
- buttons->mode = Buttons::plus;
- buttons->appear();
- int hi, lo;
- Digit *dp = currdigit(lo, hi);
- if (dp->getnum() == hi)
- dp->setnum(lo);
- else
- (*dp)++;
- }
- void Options::OnMinus()
- {
- buttons->mode = Buttons::minus;
- buttons->appear();
- int hi, lo;
- Digit *dp = currdigit(lo, hi);
- if (dp->getnum() == lo)
- dp->setnum(hi);
- else
- --(*dp);
- }
- void Buttons::update_position()
- {
- switch (mode) {
- case up:
- disappear();
- break;
- case minus:
- set_imageno(1);
- mode = wait;
- break;
- case plus:
- set_imageno(2);
- mode = wait;
- break;
- case wait:
- mode = up;
- break;
- default:
- break;
- }
- }
-
-