aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authornathansmithsmith <thenathansmithsmith@gmail.com>2023-07-09 01:26:05 -0600
committernathansmithsmith <thenathansmithsmith@gmail.com>2023-07-09 01:26:05 -0600
commit708072e716e7ab22a37f528311a433f195f75054 (patch)
treeee778b916531b8da3967ad5324019cbfb4e03e1c /src
parent3f0be672f9c5a07a98be0dc703b95f1bbe73f33e (diff)
World entries added
Diffstat (limited to 'src')
-rw-r--r--src/entities/antifaShip.c4
-rw-r--r--src/game.c45
-rw-r--r--src/settings.c10
-rw-r--r--src/settings.h4
-rw-r--r--src/world.c31
-rw-r--r--src/world.h10
6 files changed, 71 insertions, 33 deletions
diff --git a/src/entities/antifaShip.c b/src/entities/antifaShip.c
index 7dfbe26..f102f6c 100644
--- a/src/entities/antifaShip.c
+++ b/src/entities/antifaShip.c
@@ -60,8 +60,8 @@ void controlAntifaShipKeyboardAndMouse(Game * game, Entity * entity) {
// Using mouse as a joystick.
Vector3 mouseStick = (Vector3){
- (v.y / GetScreenHeight()) * game->settings.mouseSensitivity,
- (-v.x / GetScreenWidth()) * game->settings.mouseSensitivity,
+ v.y * game->settings.mouseSensitivity,
+ -v.x * game->settings.mouseSensitivity,
0.0,
};
diff --git a/src/game.c b/src/game.c
index 3fd0c78..a89cf0c 100644
--- a/src/game.c
+++ b/src/game.c
@@ -6,6 +6,7 @@ void initGame(Game * game) {
// Settings.
initSettings(&game->settings);
+ applySettings(&game->settings);
// Assets.
LoadAssets(&game->assets);
@@ -19,7 +20,6 @@ void initGame(Game * game) {
// Camera.
initPlayerCamera(&game->playerCamera);
- SetTargetFPS(60);
DisableCursor();
// World.
@@ -27,32 +27,26 @@ void initGame(Game * game) {
// Debug.
// Add player.
- addEntityToWorld(
+ //addEntityToWorld(
+ // &game->world,
+ // createEntity(ENTITY_ANTIFA, game)
+ //);
+
+ WorldEntry entries[] = {
+ (WorldEntry){ENTITY_ANTIFA, Vector3Zero(), QuaternionIdentity()},
+ (WorldEntry){ENTITY_SOLDATO, (Vector3){10.0, 10.0, 10.0}, QuaternionIdentity()},
+ (WorldEntry){ENTITY_SOLDATO, (Vector3){20.0, 20.0, 20.0}, QuaternionIdentity()},
+ (WorldEntry){ENTITY_SOLDATO, (Vector3){30.0, 30.0, 30.0}, QuaternionIdentity()},
+ (WorldEntry){ENTITY_SOLDATO, (Vector3){40.0, 40.0, 40.0}, QuaternionIdentity()}
+ };
+
+ addEntriesToWorld(
&game->world,
- createEntity(ENTITY_ANTIFA, game)
+ game,
+ entries,
+ sizeof(entries) / sizeof(WorldEntry)
);
- // Test entity.
- Entity soldato = createEntity(ENTITY_SOLDATO, game);
- soldato.position = (Vector3){10.0, 10.0, 10.0};
- addEntityToWorld(&game->world, soldato);
-
- soldato = createEntity(ENTITY_SOLDATO, game);
- soldato.position = (Vector3){20.0, 20.0, 20.0};
- addEntityToWorld(&game->world, soldato);
-
- soldato = createEntity(ENTITY_SOLDATO, game);
- soldato.position = (Vector3){30.0, 30.0, 30.0};
- addEntityToWorld(&game->world, soldato);
-
- printf("%d\n", removeEntityFromWorld(&game->world, 2));
- printf("%d\n", removeEntityFromWorld(&game->world, 3));
-
- soldato = createEntity(ENTITY_SOLDATO, game);
- soldato.position = (Vector3){-30.0, -30.0, -30.0};
- addEntityToWorld(&game->world, soldato);
-
-
puts("v");
for (int i = 0; i < game->world.vacantIdsCount; ++i)
@@ -99,7 +93,8 @@ void updateGame(Game * game) {
break;
}
- DrawFPS(5, 5);
+ if (game->settings.drawFps)
+ DrawFPS(5, 5);
EndDrawing();
}
diff --git a/src/settings.c b/src/settings.c
index d436d4a..d46bc86 100644
--- a/src/settings.c
+++ b/src/settings.c
@@ -2,8 +2,14 @@
void initSettings(Settings * settings) {
*settings = (Settings){
- .mouseSensitivity = 50.0,
+ .mouseSensitivity = 0.05,
.scrollBarSpeed = 10.0,
- .controlMode = KEYBOARD_AND_MOUSE_CONTROL
+ .controlMode = KEYBOARD_AND_MOUSE_CONTROL,
+ .fps = 60,
+ .drawFps = true
};
}
+
+void applySettings(Settings * settings) {
+ SetTargetFPS(settings->fps);
+}
diff --git a/src/settings.h b/src/settings.h
index a880a2c..15cdcb7 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -13,8 +13,12 @@ typedef struct Settings {
float mouseSensitivity;
float scrollBarSpeed;
ControlMode controlMode;
+
+ int fps;
+ bool drawFps;
} Settings;
void initSettings(Settings * settings);
+void applySettings(Settings * settings);
#endif
diff --git a/src/world.c b/src/world.c
index 0ec3b32..3bc02cd 100644
--- a/src/world.c
+++ b/src/world.c
@@ -66,7 +66,7 @@ EntityId popVacantId(World * world) {
// Already empty.
if (world->vacantIds == NULL)
- return ENTITY_ID_NONE;
+ return ENTITY_NONE;
id = world->vacantIds[world->vacantIdsCount - 1];
@@ -120,7 +120,7 @@ EntityId addEntityToWorld(World * world, Entity entity) {
if (world->entities == NULL || world->lookUp == NULL) {
ALLOCATION_ERROR;
- return ENTITY_ID_NONE;
+ return ENTITY_NONE;
}
// Set entity and id.
@@ -141,7 +141,7 @@ EntityId addEntityToWorld(World * world, Entity entity) {
if (world->entities == NULL) {
ALLOCATION_ERROR;
- return ENTITY_ID_NONE;
+ return ENTITY_NONE;
}
// Set entity.
@@ -167,7 +167,7 @@ EntityId addEntityToWorld(World * world, Entity entity) {
if (world->lookUp == NULL) {
ALLOCATION_ERROR;
- return ENTITY_ID_NONE;
+ return ENTITY_NONE;
}
// Set id.
@@ -250,3 +250,26 @@ void drawWorld(World * world, Game * game) {
entity->drawCb(game, entity);
}
}
+
+KfError addEntryToWorld(World * world, Game * game, WorldEntry entry) {
+ // Create entity.
+ Entity entity = createEntity(entry.type, game);
+ entity.position = entry.position;
+ entity.rotation = entry.rotation;
+
+ // Add to world.
+ if (addEntityToWorld(world, entity) == ENTITY_NONE)
+ return KFERROR;
+
+ return KFSUCCESS;
+}
+
+KfError addEntriesToWorld(World * world, Game * game, WorldEntry * entries, size_t entriesCount) {
+ int i;
+
+ for (i = 0; i < entriesCount; ++i)
+ if (addEntryToWorld(world, game, entries[i]) != KFSUCCESS)
+ return KFERROR;
+
+ return KFSUCCESS;
+}
diff --git a/src/world.h b/src/world.h
index b075301..b3a7d69 100644
--- a/src/world.h
+++ b/src/world.h
@@ -35,4 +35,14 @@ KfError removeEntityFromWorld(World * world, EntityId id);
void updateWorld(World * world, Game * game);
void drawWorld(World * world, Game * game);
+// Used for creating worlds.
+typedef struct WorldEntry {
+ EntityType type;
+ Vector3 position;
+ Quaternion rotation;
+} WorldEntry;
+
+KfError addEntryToWorld(World * world, Game * game, WorldEntry entry);
+KfError addEntriesToWorld(World * world, Game * game, WorldEntry * entries, size_t entriesCount);
+
#endif