1 /*
2 * Copyright (C) 2004 Ivo Danihelka (ivo@danihelka.net)
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 */
9 #include "WorldInput.h"
10
11 #include "WorldMap.h"
12 #include "Keymap.h"
13
14 #include "KeyStroke.h"
15 #include "MouseStroke.h"
16
17 //-----------------------------------------------------------------
WorldInput(WorldMap * world)18 WorldInput::WorldInput(WorldMap *world)
19 : GameInput(world)
20 {
21 //TODO: 'O' ... options, 'I' ... intro, 'E' ... exit, 'C' ... credits
22 KeyDesc key_tab(KEY_TAB, "select next level");
23 KeyDesc key_enter(KEY_ENTER, "run selected");
24
25 m_keymap->registerKey(KeyStroke(SDLK_TAB, KMOD_NONE), key_tab);
26 m_keymap->registerKey(KeyStroke(SDLK_RETURN, KMOD_NONE), key_enter);
27 }
28 //-----------------------------------------------------------------
29 WorldMap *
getWorld()30 WorldInput::getWorld()
31 {
32 return dynamic_cast<WorldMap*>(m_state);
33 }
34 //-----------------------------------------------------------------
35 void
specKey(int keyIndex)36 WorldInput::specKey(int keyIndex)
37 {
38 switch (keyIndex) {
39 case KEY_TAB:
40 getWorld()->selectNextLevel();
41 break;
42 case KEY_ENTER:
43 getWorld()->runSelected();
44 break;
45 default:
46 GameInput::specKey(keyIndex);
47 }
48 }
49 //-----------------------------------------------------------------
50 void
mouseEvent(const MouseStroke & buttons)51 WorldInput::mouseEvent(const MouseStroke &buttons)
52 {
53 if (buttons.isLeft()) {
54 getWorld()->runSelected();
55 }
56 }
57
58