aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authornathansmith117 <thenathansmithsmith@gmail.com>2024-05-06 18:23:19 +0000
committernathansmith117 <thenathansmithsmith@gmail.com>2024-05-06 18:23:19 +0000
commit926f3b1467efa314bb667ddbfd45a01c0edcd426 (patch)
tree0d6beeaedea151199332e20c2c3dbbb3bf7028ed /src
parentf6635129ef339ffa4c3725b6a04b0dd644f2c7cf (diff)
downloadPenguinYippies-926f3b1467efa314bb667ddbfd45a01c0edcd426.tar.gz
PenguinYippies-926f3b1467efa314bb667ddbfd45a01c0edcd426.tar.bz2
PenguinYippies-926f3b1467efa314bb667ddbfd45a01c0edcd426.zip
Working on shooter penguins
Diffstat (limited to 'src')
-rw-r--r--src/shooterScreen.c45
-rw-r--r--src/shooterScreen.h19
2 files changed, 61 insertions, 3 deletions
diff --git a/src/shooterScreen.c b/src/shooterScreen.c
index 4feeb9a..07b77fa 100644
--- a/src/shooterScreen.c
+++ b/src/shooterScreen.c
@@ -16,8 +16,11 @@ void initShooterScreeen(ShooterScreen* shooterScreen, Game* game)
.direction = (Vector3){0.0, 0.0, 1.0},
.velocity = Vector3Zero(),
.cameraAngle = Vector2Zero(),
- .jumpStage = 0
+ .jumpStage = 0,
+ .sleepyness = 0.0
};
+
+ resetShooterScreen(shooterScreen);
}
void updateShooterScreenControls(ShooterScreen* shooterScreen, Game* game)
@@ -99,6 +102,14 @@ void updateShooterScreenJump(ShooterScreen* shooterScreen, Game* game)
}
}
+void updateShooterScreenPenguins(ShooterScreen* ShooterScreen, Game* game)
+{
+ for (int i = 0; i < SHOOTER_PENGUIN_COUNT; ++i)
+ {
+
+ }
+}
+
void updateShooterScreen(ShooterScreen* shooterScreen, Game* game)
{
ShooterPlayer* player = &shooterScreen->player;
@@ -120,7 +131,9 @@ void updateShooterScreen(ShooterScreen* shooterScreen, Game* game)
// Draw 3d scene.
BeginMode3D(shooterScreen->player.camera);
- DrawGrid(32, 2.0);
+ DrawGrid(SHOOTER_MAP_SIZE, 2.0);
+
+ updateShooterScreenPenguins(shooterScreen, game);
EndMode3D();
}
@@ -129,6 +142,34 @@ void closeShooterScreen(ShooterScreen* shooterScreen)
{
}
+void resetShooterScreen(ShooterScreen* shooterScreen)
+{
+ // Player.
+ ShooterPlayer* player = &shooterScreen->player;
+ player->position = (Vector3){0.0, PLAYER_HEIGHT, 0.0};
+ player->direction = (Vector3){0.0, 0.0, 1.0};
+ player->cameraAngle = Vector2Zero();
+ player->jumpStage = 0;
+ player->sleepyness = 0.0;
+ player->velocity = Vector3Zero();
+
+ // Penguins.
+ SetRandomSeed(time(NULL));
+
+ for (int i = 0; i < SHOOTER_PENGUIN_COUNT; ++i)
+ {
+ Vector3 randomPosition = (Vector3){
+ GetRandomValue(-SHOOTER_MAP_SIZE, SHOOTER_MAP_SIZE),
+ SHOOTER_PENGUIN_HEIGHT,
+ GetRandomValue(-SHOOTER_MAP_SIZE, SHOOTER_MAP_SIZE)
+ };
+
+ shooterScreen->penguins[i].position = randomPosition;
+ shooterScreen->penguins[i].velocity = Vector3Zero();
+ shooterScreen->penguins[i].sleepyness = 0.0;
+ }
+}
+
void enterShooterScreen(Game* game)
{
game->currentScreen = SHOOTER_SCREEN;
diff --git a/src/shooterScreen.h b/src/shooterScreen.h
index 7c69a54..766faa4 100644
--- a/src/shooterScreen.h
+++ b/src/shooterScreen.h
@@ -3,13 +3,19 @@
#ifndef SHOOTER_SCREEN_H
#define SHOOTER_SCREEN_H
+#define SHOOTER_MAP_SIZE 64
+
#define PLAYER_HEIGHT 2.0
-#define MOUSE_SPEED 0.01
#define PLAYER_SPEED 10.0
#define PLAYER_JUMP_SPEED 15.0
#define PLAYER_FALL_SPEED 18.0
#define PLAYER_JUMP_HEIGHT 8.0
+#define MOUSE_SPEED 0.01
+
+#define SHOOTER_PENGUIN_COUNT 5
+#define SHOOTER_PENGUIN_HEIGHT 2.0
+
typedef struct ShooterPlayer {
Camera3D camera;
@@ -20,16 +26,27 @@ typedef struct ShooterPlayer {
Vector2 cameraAngle;
int jumpStage;
+ float sleepyness;
} ShooterPlayer;
+// Penguin to "put to sleep".
+typedef struct ShooterPenguin {
+ Vector3 position;
+ Vector3 velocity;
+ float sleepyness;
+} ShooterPenguin;
+
typedef struct ShooterScreen {
ShooterPlayer player;
+ ShooterPenguin penguins[SHOOTER_PENGUIN_COUNT];
} ShooterScreen;
void initShooterScreeen(ShooterScreen* shooterScreen, Game* game);
void updateShooterScreen(ShooterScreen* shooterScreen, Game* game);
void closeShooterScreen(ShooterScreen* shooterScreen);
+void resetShooterScreen(ShooterScreen* shooterScreen);
+
void enterShooterScreen(Game* game);
void leaveShooterScreen(Game* game);