/[enigma]/enigma/src/menus.cc
ViewVC logotype

Diff of /enigma/src/menus.cc

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.18 by dheck, Sat Mar 29 10:34:42 2003 UTC revision 1.19 by reallysoft, Sat Mar 29 17:05:24 2003 UTC
# Line 43  namespace Line 43  namespace
43    
44      typedef Cache<px::Surface*, ImageAlloc> ImageCache;      typedef Cache<px::Surface*, ImageAlloc> ImageCache;
45    
46        class LevelMenu;
47    
48      class LevelWidget : public Widget {      class LevelWidget : public Widget {
49      public:      public:
# Line 77  namespace Line 78  namespace
78          void next_unsolved();          void next_unsolved();
79    
80          bool on_event(const SDL_Event &e);          bool on_event(const SDL_Event &e);
81    
82            LevelMenu *get_menu();
83    
84      private:      private:
85          // Private functions.          // Private functions.
86          void scroll_up(int lines);          void scroll_up(int lines);
# Line 101  namespace Line 105  namespace
105      class LevelMenu : public Menu {      class LevelMenu : public Menu {
106      public:      public:
107          LevelMenu(LevelPack *lp, unsigned ilevel_pack);          LevelMenu(LevelPack *lp, unsigned ilevel_pack);
108    
109            // rotate through levelpacks
110            void next_levelpack() {
111                int next_pack = m_ilevelpack+1;
112                if (next_pack == enigma::LevelPacks.size()) next_pack = 0;
113                set_levelpack(next_pack);
114            }
115    
116      private:      private:
117          void set_levelpack (int index);          void set_levelpack (int index);
118    
# Line 122  namespace Line 134  namespace
134          Widget *m_nextlp, *m_prevlp; // Next/previous level pack          Widget *m_nextlp, *m_prevlp; // Next/previous level pack
135          TextButton *m_lpbutton; // Current level pack          TextButton *m_lpbutton; // Current level pack
136          LevelWidget *levelwidget;          LevelWidget *levelwidget;
137          LevelPack *level_pack;          LevelPack   *level_pack;
138          unsigned m_ilevelpack;          unsigned     m_ilevelpack;
139    
140      };      };
141    
142      class LevelPackMenu : public Menu {      class LevelPackMenu : public Menu {
# Line 174  LevelWidget::LevelWidget(LevelPack *lp, Line 187  LevelWidget::LevelWidget(LevelPack *lp,
187    listener(0)    listener(0)
188  {}  {}
189    
190    LevelMenu *
191    LevelWidget::get_menu() {
192        Menu *menu = Widget::get_menu();
193        if (menu) return dynamic_cast<LevelMenu*>(menu);
194        assert(0);
195        return 0;
196    }
197    
198  void  void
199  LevelWidget::scroll_up(int nlines)  LevelWidget::scroll_up(int nlines)
200  {  {
# Line 408  LevelWidget::handle_keydown (const SDL_E Line 429  LevelWidget::handle_keydown (const SDL_E
429  //        level_pack.init();  //        level_pack.init();
430          redraw();          redraw();
431          break;          break;
432    
433        case SDLK_n:
434            next_unsolved();
435            break;
436    
437      case SDLK_o:                // Show/hide "todo" levels      case SDLK_o:                // Show/hide "todo" levels
438          break;          break;
439    
440      case SDLK_LEFT:  set_current (iselected-1); break;      case SDLK_LEFT:  set_current (iselected-1); break;
441      case SDLK_RIGHT: set_current (iselected+1); break;      case SDLK_RIGHT: set_current (iselected+1); break;
442      case SDLK_DOWN:  set_current (iselected+width); break;      case SDLK_DOWN:  set_current (iselected+width); break;
# Line 419  LevelWidget::handle_keydown (const SDL_E Line 446  LevelWidget::handle_keydown (const SDL_E
446      case SDLK_HOME: start(); break;      case SDLK_HOME: start(); break;
447      case SDLK_END: end(); break;      case SDLK_END: end(); break;
448    
449        case SDLK_F1:
450            // @@@ FIXME: show help
451            break;
452    
453        case SDLK_SPACE: {
454            LevelMenu *lmenu = get_menu();
455            if (lmenu) {
456                lmenu->next_levelpack();
457            }
458            break;
459        }
460      case SDLK_RETURN:      case SDLK_RETURN:
461          trigger_action();          trigger_action();
462          break;          break;
# Line 680  LevelMenu::LevelMenu(LevelPack *lp, unsi Line 718  LevelMenu::LevelMenu(LevelPack *lp, unsi
718    level_pack  (lp),    level_pack  (lp),
719    m_ilevelpack ()    m_ilevelpack ()
720  {  {
721      const int      const int
722          BX=100,                 // button xsize          BX=100,                 // button xsize
723          BY=28,                  // button ysize          BY=28,                  // button ysize
724          SX=5,                   // x spacing          SX=5,                   // x spacing
# Line 771  LevelMenu::on_action(Widget *w) Line 809  LevelMenu::on_action(Widget *w)
809      }      }
810      else if (w == m_prevlp) {      else if (w == m_prevlp) {
811          set_levelpack (m_ilevelpack-1);          set_levelpack (m_ilevelpack-1);
812      }      }
813      else if (w == m_nextlp) {      else if (w == m_nextlp) {
814          set_levelpack (m_ilevelpack+1);          set_levelpack (m_ilevelpack+1);
815      }      }

Legend:
Removed from v.1.18  
changed lines
  Added in v.1.19

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26