]> Dogcows Code - chaz/yoink/blob - src/Heroine.cc
the massive refactoring effort
[chaz/yoink] / src / Heroine.cc
1
2 /*] Copyright (c) 2009-2010, Charles McGarvey [**************************
3 **] All rights reserved.
4 *
5 * vi:ts=4 sw=4 tw=75
6 *
7 * Distributable under the terms and conditions of the 2-clause BSD license;
8 * see the file COPYING for a complete text of the license.
9 *
10 **************************************************************************/
11
12 #include <moof/log.hh>
13 #include <moof/sound.hh>
14
15 #include "Heroine.hh"
16
17 Heroine::Heroine() :
18 Character("Heroine") {}
19
20
21 void Heroine::update(moof::scalar t, moof::scalar dt)
22 {
23 Character::update(t, dt);
24
25 moof::vector3 at(0.0, 0.0, 0.0);
26 const moof::vector3 up(0.0, 1.0, 0.0);
27
28 if (state_.velocity[0] < 0.0) at[0] = -1.0;
29 else at[0] = 1.0;
30
31 moof::sound::listener_position(moof::promote(state_.position));
32 moof::sound::listener_velocity(moof::promote(state_.velocity));
33 moof::sound::listener_orientation(at, up);
34 }
35
36
37 bool Heroine::handle_event(const moof::event& event)
38 {
39 moof::scalar force = 40.0;
40
41 switch (event.type)
42 {
43 case SDL_KEYDOWN:
44 if (event.key.keysym.sym == SDLK_a)
45 {
46 state_.force += moof::vector2(-force, 0.0);
47 return true;
48 }
49 else if (event.key.keysym.sym == SDLK_d)
50 {
51 state_.force += moof::vector2(force, 0.0);
52 return true;
53 }
54 else if (event.key.keysym.sym == SDLK_s)
55 {
56 state_.force += moof::vector2(0.0, -force);
57 return true;
58 }
59 else if (event.key.keysym.sym == SDLK_w)
60 {
61 state_.force += moof::vector2(0.0, force);
62 return true;
63 }
64
65 case SDL_KEYUP:
66 if (event.key.keysym.sym == SDLK_a)
67 {
68 state_.force += moof::vector2(force, 0.0);
69 return true;
70 }
71 else if (event.key.keysym.sym == SDLK_d)
72 {
73 state_.force += moof::vector2(-force, 0.0);
74 return true;
75 }
76 else if (event.key.keysym.sym == SDLK_s)
77 {
78 state_.force += moof::vector2(0.0, force);
79 return true;
80 }
81 else if (event.key.keysym.sym == SDLK_w)
82 {
83 state_.force += moof::vector2(0.0, -force);
84 return true;
85 }
86 }
87 return false;
88 }
89
This page took 0.032223 seconds and 4 git commands to generate.