Browse Source

starting bullets.

k
Kait Lam 2 years ago
parent
commit
3c8cf5a514
  1. 2
      .gitignore
  2. 3
      src/draw.cpp
  3. 16
      src/game.h
  4. 9
      src/main.cpp

2
.gitignore vendored

@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
./2huwu
2huwu
### C ###
# Prerequisites

3
src/draw.cpp

@ -9,7 +9,8 @@ draw_player(struct game_state &gs, int player) @@ -9,7 +9,8 @@ draw_player(struct game_state &gs, int player)
{
auto p = gs.players.at(player);
DrawCircleV(Vector2 {p.pos.x, p.pos.y}, 50, MAROON);
Color c = player == 0 ? MAROON : DARKGREEN;
DrawCircleV(Vector2 {p.pos.x, p.pos.y}, 50, c);
}

16
src/game.h

@ -32,18 +32,30 @@ struct player { @@ -32,18 +32,30 @@ struct player {
};
enum pattern_type {
NONE
RAY
};
struct bullet {
unsigned int tick;
unsigned int tick_started;
bool alive;
Vector3 position;
enum pattern_type pattern;
};
// a pattern is a manager for bullets following the same pattern.
struct pattern {
std::vector<bullet> bullets;
std::vector<Vector3> data;
pattern_type type;
};
Vector3 bullet_position(pattern_type, bullet, Vector3);
struct game_state {
std::vector<player> players;
std::vector<bullet> bullets;
std::vector<pattern> patterns;
std::deque<IOEVENT> events;
};

9
src/main.cpp

@ -8,6 +8,7 @@ int main(void) @@ -8,6 +8,7 @@ int main(void)
{
struct game_state gs {};
gs.players.push_back(player());
gs.players.push_back(player());
InitWindow(SCREEN_WIDTH, SCREEN_HEIGHT, "raylib [core] example - keyboard input");
@ -15,6 +16,7 @@ int main(void) @@ -15,6 +16,7 @@ int main(void)
while (!WindowShouldClose())
{
// Update
//----------------------------------------------------------------------------------
int player = 0;
@ -22,7 +24,12 @@ int main(void) @@ -22,7 +24,12 @@ int main(void)
if (IsKeyDown(KEY_LEFT)) gs.events.push_back({player, (IOEV_Type)KEY_LEFT});
if (IsKeyDown(KEY_UP)) gs.events.push_back({player, (IOEV_Type)KEY_UP});
if (IsKeyDown(KEY_DOWN)) gs.events.push_back({player, (IOEV_Type)KEY_DOWN});
//----------------------------------------------------------------------------------
player = 1;
if (IsKeyDown(KEY_D)) gs.events.push_back({player, (IOEV_Type)KEY_RIGHT});
if (IsKeyDown(KEY_A)) gs.events.push_back({player, (IOEV_Type)KEY_LEFT});
if (IsKeyDown(KEY_W)) gs.events.push_back({player, (IOEV_Type)KEY_UP});
if (IsKeyDown(KEY_S)) gs.events.push_back({player, (IOEV_Type)KEY_DOWN});
step(gs);

Loading…
Cancel
Save