Changeset 1211
- Timestamp:
- Apr 10, 2012, 3:15:37 AM (11 years ago)
- Location:
- trunk/mrpigeon
- Files:
-
- 3 added
- 7 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
trunk/mrpigeon/Makefile.am
r1205 r1211 5 5 mrpigeon.cpp mrpigeon.h \ 6 6 player.cpp player.h \ 7 enemy.cpp enemy.h 7 enemy.cpp enemy.h \ 8 blueenemy.cpp blueenemy.h \ 9 redenemy.cpp redenemy.h 8 10 mrpigeon_CPPFLAGS = @LOL_CFLAGS@ @PIPI_CFLAGS@ 9 11 mrpigeon_LDADD = -
trunk/mrpigeon/blueenemy.cpp
r1207 r1211 20 20 21 21 #include "mrpigeon.h" 22 #include " enemy.h"22 #include "blueenemy.h" 23 23 24 Enemy::Enemy(MrPigeon *in_game) :25 game(in_game),24 BlueEnemy::BlueEnemy(MrPigeon *in_game) : 25 Enemy(in_game), 26 26 enemytime(0.0f) 27 27 { 28 28 enemy_casualblue = Tiler::Register("mrpigeon/gfx/enemy_CasualBLUE_walk.png", ivec2(16,24), ivec2(0)); /* 6 frames */ 29 29 enemy_casualblueattack = Tiler::Register("mrpigeon/gfx/enemy_CasualBLUE_walkAttack.png", ivec2(16,24), ivec2(0)); /* 6 frames */ 30 31 position = vec3(512, 81, 0); 32 velocity = vec3(-0.15f, 0, 0); 30 33 } 31 34 32 void Enemy::TickGame(float deltams)35 void BlueEnemy::TickGame(float deltams) 33 36 { 34 WorldEntity::TickGame(deltams);37 Enemy::TickGame(deltams); 35 38 36 39 deltams *= game->GetSpeed(); 37 40 38 41 enemytime = fmod(deltams + enemytime, 700.0f);; 42 43 position += velocity * deltams; 39 44 } 40 45 41 void Enemy::TickDraw(float deltams)46 void BlueEnemy::TickDraw(float deltams) 42 47 { 43 48 WorldEntity::TickDraw(deltams); 44 49 45 Scene::GetDefault()->AddTile(enemy_casualblue, (int)(enemytime * 6 / 700.0f), ivec3(420, 81, 0), 0, vec2(-3.0f, 3.0f));46 Scene::GetDefault()->AddTile( enemy_casualblueattack, (int)(enemytime * 6 / 700.0f), ivec3(320, 81, 0), 0, vec2(-3.0f, 3.0f));50 /* + 48 because of vertical flip */ 51 Scene::GetDefault()->AddTile(position.x > 255 ? enemy_casualblue : enemy_casualblueattack, (int)(enemytime * 6 / 700.0f), position + vec3(48.0f, 0, 0), 0, vec2(-3.0f, 3.0f)); 47 52 } 48 53 49 Enemy::~Enemy()54 BlueEnemy::~BlueEnemy() 50 55 { 51 56 Tiler::Deregister(enemy_casualblue); -
trunk/mrpigeon/enemy.cpp
r1205 r1211 23 23 24 24 Enemy::Enemy(MrPigeon *in_game) : 25 game(in_game), 26 enemytime(0.0f) 25 game(in_game) 27 26 { 28 enemy_casualblue = Tiler::Register("mrpigeon/gfx/enemy_CasualBLUE_walk.png", ivec2(16,24), ivec2(0)); /* 6 frames */29 enemy_casualblueattack = Tiler::Register("mrpigeon/gfx/enemy_CasualBLUE_walkAttack.png", ivec2(16,24), ivec2(0)); /* 6 frames */30 27 } 31 28 … … 35 32 36 33 deltams *= game->GetSpeed(); 37 38 enemytime = fmod(deltams + enemytime, 700.0f);;39 34 } 40 35 … … 42 37 { 43 38 WorldEntity::TickDraw(deltams); 44 45 Scene::GetDefault()->AddTile(enemy_casualblue, (int)(enemytime * 6 / 700.0f), ivec3(420, 81, 0), 0, vec2(-3.0f, 3.0f));46 Scene::GetDefault()->AddTile(enemy_casualblueattack, (int)(enemytime * 6 / 700.0f), ivec3(320, 81, 0), 0, vec2(-3.0f, 3.0f));47 39 } 48 40 49 41 Enemy::~Enemy() 50 42 { 51 Tiler::Deregister(enemy_casualblue);52 Tiler::Deregister(enemy_casualblueattack);53 43 } 54 44 -
trunk/mrpigeon/enemy.h
r1205 r1211 7 7 { 8 8 public: 9 char const *GetName() { return "<enemy>"; } 10 11 protected: 9 12 Enemy(MrPigeon *game); 10 13 virtual ~Enemy(); 11 14 12 char const *GetName() { return "<enemy>"; }13 14 MrPigeon *game;15 16 protected:17 15 virtual void TickGame(float deltams); 18 16 virtual void TickDraw(float deltams); … … 21 19 *enemy_casualblueattack; 22 20 23 float enemytime;21 MrPigeon *game; 24 22 }; 25 23 -
trunk/mrpigeon/mrpigeon.cpp
r1207 r1211 26 26 #include "player.h" 27 27 #include "enemy.h" 28 #include "blueenemy.h" 29 #include "redenemy.h" 28 30 29 31 MrPigeon::MrPigeon() : … … 35 37 player = new Player(this); 36 38 Ticker::Ref(player); 37 enemy = new Enemy(this); 38 Ticker::Ref(enemy); 39 40 for (int i = 0; i < 10; i++) 41 enemies[i] = NULL; 39 42 40 43 hud_progress = Tiler::Register("mrpigeon/gfx/HUD_timeline.png", ivec2(160,16), ivec2(0)); … … 86 89 deltams *= GetSpeed(); 87 90 88 railtime = fmod(deltams + railtime, 1000.0f);; 89 backtime = fmod(deltams + backtime, 10000.0f / 288 * active_deco_width);; 91 /* Delete enemies that went past us */ 92 for (int i = 0; i < 10; i++) 93 { 94 if (enemies[i] && enemies[i]->position.x < -100.0f) 95 { 96 Ticker::Unref(enemies[i]); 97 enemies[i] = NULL; 98 } 99 } 100 101 /* Spawn enemies if necessary */ 102 spawntime += deltams; 103 if (spawntime > 600.0f) 104 { 105 if (RandF(1.0f) < 0.2f) 106 spawntime -= 300.0f; 107 spawntime -= 600.0f; 108 for (int i = 0; i < 10; i++) 109 { 110 if (enemies[i] == NULL) 111 { 112 if (RandF(1.0f) < 0.4f) 113 enemies[i] = new BlueEnemy(this); 114 else if (totaltime > 9000.0f && RandF(1.0f) < 0.3f) 115 enemies[i] = new RedEnemy(this); 116 117 if (enemies[i]) 118 Ticker::Ref(enemies[i]); 119 break; 120 } 121 } 122 } 123 124 /* Scroll background etc. */ 125 railtime = fmod(railtime + deltams, 1000.0f);; 126 backtime = fmod(backtime + deltams, 10000.0f / 288 * active_deco_width);; 90 127 91 128 ivec3 buttons = Input::GetMouseButtons(); … … 135 172 136 173 Ticker::Unref(player); 137 Ticker::Unref(enemy); 174 for (int i = 0; i < 10; i++) 175 if (enemies[i]) 176 Ticker::Unref(enemies[i]); 138 177 139 178 Input::UntrackMouse(this); -
trunk/mrpigeon/mrpigeon.h
r1205 r1211 11 11 12 12 float GetSpeed() { return speed; } 13 class Enemy *const *GetEnemies() { return enemies; } 13 14 14 15 protected: … … 17 18 18 19 class Player *player; 19 class Enemy *enem y;20 class Enemy *enemies[10]; 20 21 21 22 TileSet *hud_progress, … … 33 34 34 35 double totaltime; 35 float railtime, backtime ;36 float railtime, backtime, spawntime; 36 37 float speed; 37 38 }; -
trunk/mrpigeon/player.cpp
r1205 r1211 21 21 #include "mrpigeon.h" 22 22 #include "player.h" 23 #include "enemy.h" 23 24 24 25 #define GRAVITY 0.0007f … … 26 27 27 28 #define LEN_KICKAIR 500.0f 29 #define LEN_KICKFLOOR 300.0f 28 30 29 31 Player::Player(MrPigeon *in_game) : … … 57 59 case WALKING: 58 60 case FUNKING: 59 velocity.y = JUMPVEL; 60 state = JUMPING; 61 { 62 Enemy *const *enemies = game->GetEnemies(); 63 bool must_kick = false; 64 for (int i = 0; i < 10; i++) 65 if (enemies[i] 66 && enemies[i]->position.x > position.x + 60.0f - 30.0f 67 && enemies[i]->position.x < position.x + 60.0f + 30.0f) 68 { 69 must_kick = true; 70 break; 71 } 72 if (must_kick) 73 { 74 walktime = 0.0f; 75 state = KICKFLOOR; 76 } 77 else 78 { 79 velocity.y = JUMPVEL; 80 state = JUMPING; 81 } 82 } 61 83 break; 62 84 case JUMPING: … … 88 110 walktime = fmod(deltams + walktime, 700.0f);; 89 111 break; 112 case KICKFLOOR: 113 walktime += deltams; 114 if (walktime > LEN_KICKFLOOR) 115 state = WALKING; 116 break; 90 117 case FALLING: 91 118 velocity.y -= deltams * GRAVITY; … … 131 158 active_set = player_walkraisefist; 132 159 active_frame = (int)(walktime * 8 / 700.0f); 160 break; 161 case KICKFLOOR: 162 active_set = player_kickfloor; 163 active_frame = (int)(walktime * 3 / LEN_KICKFLOOR); 133 164 break; 134 165 case FALLING: -
trunk/mrpigeon/player.h
r1205 r1211 37 37 WALKING, 38 38 FUNKING, 39 KICKFLOOR, 39 40 FALLING, 40 41 JUMPING,
Note: See TracChangeset
for help on using the changeset viewer.