Merge branch 'main' of yibble.dev:bulmanator/ld58
This commit is contained in:
@@ -222,3 +222,12 @@ F32 Random_Bilateral(Random *rnd) {
|
|||||||
F32 result = -1.0f + (2.0f * Random_Unilateral(rnd));
|
F32 result = -1.0f + (2.0f * Random_Unilateral(rnd));
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
V2f V2f_Clip(V2f screen_xy, V2f screen_size) {
|
||||||
|
V2f result;
|
||||||
|
result.x = ((screen_xy.x / screen_size.w) * 2.0f) - 1.0f;
|
||||||
|
result.y = ((screen_xy.y / screen_size.h) * 2.0f) - 1.0f;
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -147,4 +147,6 @@ function U32 Random_U32(Random *rnd, U32 min, U32 max);
|
|||||||
function F32 Random_Unilateral(Random *rnd);
|
function F32 Random_Unilateral(Random *rnd);
|
||||||
function F32 Random_Bilateral(Random *rnd);
|
function F32 Random_Bilateral(Random *rnd);
|
||||||
|
|
||||||
|
V2f V2f_Clip(V2f screen_xy, V2f screen_size);
|
||||||
|
|
||||||
#endif // LD_CORE_MATH_H_
|
#endif // LD_CORE_MATH_H_
|
||||||
|
|||||||
25
code/first.c
25
code/first.c
@@ -14,7 +14,6 @@
|
|||||||
|
|
||||||
#include "core/core.h"
|
#include "core/core.h"
|
||||||
#include "core/types.h"
|
#include "core/types.h"
|
||||||
#include "game/npc.h"
|
|
||||||
#include "os/core.h"
|
#include "os/core.h"
|
||||||
|
|
||||||
#include "vulkan/core.h"
|
#include "vulkan/core.h"
|
||||||
@@ -27,6 +26,9 @@
|
|||||||
#include "game/impl/bandit.c"
|
#include "game/impl/bandit.c"
|
||||||
#include "game/testnavmesh.h"
|
#include "game/testnavmesh.h"
|
||||||
|
|
||||||
|
const int width = 1280;
|
||||||
|
const int height = 720;
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
(void)argc;
|
(void)argc;
|
||||||
@@ -99,29 +101,26 @@ int main(int argc, char **argv)
|
|||||||
World *world = M_ArenaPush(arena, World);
|
World *world = M_ArenaPush(arena, World);
|
||||||
game->world = world;
|
game->world = world;
|
||||||
world->random = Random_Seed(29237489723847);
|
world->random = Random_Seed(29237489723847);
|
||||||
world->npcCount = 1;
|
world->npcCount = 2;
|
||||||
for(U32 i = 0; i < world->npcCount; i++) {
|
for(U32 i = 0; i < world->npcCount; i++) {
|
||||||
NPC *npc1 = &world->npcs[i];
|
NPC *npc1 = &world->npcs[i];
|
||||||
npc1->collision.pos.x = 15;
|
npc1->collision.pos.x = 15;
|
||||||
npc1->collision.pos.y = 15;
|
npc1->collision.pos.y = 15;
|
||||||
npc1->collision.size.x = 1;
|
npc1->collision.size.x = 1;
|
||||||
npc1->collision.size.y = 1;
|
npc1->collision.size.y = 2;
|
||||||
npc1->name = S("Matt");
|
npc1->name = S("Matt");
|
||||||
npc1->mode = NPC_ACTION_WAITING;
|
npc1->mode = NPC_ACTION_WAITING;
|
||||||
|
npc1->currentArea = i;
|
||||||
npc1->waitTime = 0;
|
npc1->waitTime = 0;
|
||||||
npc1->maxWaitTime = 5;
|
npc1->maxWaitTime = 5;
|
||||||
npc1->currentNavNode = 0;
|
npc1->currentNavNode = 0;
|
||||||
npc1->collision.pos.x = 15;
|
|
||||||
npc1->collision.pos.y = 15;
|
|
||||||
npc1->collision.size.x = 10;
|
|
||||||
npc1->collision.size.y = 10;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Bandit *badman = &world->bandit;
|
Bandit *badman = &world->bandit;
|
||||||
badman->collision.pos.x = 15;
|
badman->collision.pos.x = 15;
|
||||||
badman->collision.pos.y = 15;
|
badman->collision.pos.y = 15;
|
||||||
badman->collision.size.x = 10;
|
badman->collision.size.x = 1;
|
||||||
badman->collision.size.y = 10;
|
badman->collision.size.y = 2;
|
||||||
badman->name = S("Leroy Brown");
|
badman->name = S("Leroy Brown");
|
||||||
badman->mode = BANDIT_WAITING;
|
badman->mode = BANDIT_WAITING;
|
||||||
badman->waitTime = 0;
|
badman->waitTime = 0;
|
||||||
@@ -132,10 +131,12 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
world->navMesh = &TestNavMesh;
|
world->navMesh = &TestNavMesh;
|
||||||
world->npcPOI[0] = 100;
|
world->npcPOI[0] = 100;
|
||||||
|
world->player.world = world;
|
||||||
world->player.pos.x = 0;
|
world->player.pos.x = 0;
|
||||||
world->player.pos.y = 0;
|
world->player.pos.y = 0;
|
||||||
world->player.bulletsLoaded = PLAYER_BULLET_COUNT;
|
world->player.bulletsLoaded = PLAYER_BULLET_COUNT;
|
||||||
world->player.reloadTimer = 0;
|
world->player.reloadTimer = 0;
|
||||||
|
world->player.currentArea = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -158,7 +159,11 @@ int main(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
running = false;
|
running = false;
|
||||||
}
|
}
|
||||||
|
V3f projection = G_CameraUnproject(&game->camera, V2f_Clip(
|
||||||
|
V2F(e.button.x, e.button.y),
|
||||||
|
V2F(width, height)
|
||||||
|
));
|
||||||
|
game->world->mouseProjected = V2F(projection.x, projection.y);
|
||||||
ProcessEvents(&e, game->world);
|
ProcessEvents(&e, game->world);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ struct AABB
|
|||||||
function bool AABB_Collide(AABB a, AABB b);
|
function bool AABB_Collide(AABB a, AABB b);
|
||||||
function bool AABB_Point(AABB a, V2f v);
|
function bool AABB_Point(AABB a, V2f v);
|
||||||
function bool AABB_Slab(V2f origin, V2f point, AABB a);
|
function bool AABB_Slab(V2f origin, V2f point, AABB a);
|
||||||
|
function V2f AABB_Centre(AABB a);
|
||||||
|
|
||||||
#endif // LD_GAME_AABB_H_
|
#endif // LD_GAME_AABB_H_
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ struct Bandit {
|
|||||||
//// Personal
|
//// Personal
|
||||||
AABB collision;
|
AABB collision;
|
||||||
Str8 name;
|
Str8 name;
|
||||||
|
World_Area currentArea;
|
||||||
|
|
||||||
//// Actions
|
//// Actions
|
||||||
BANDIT_ACTION mode;
|
BANDIT_ACTION mode;
|
||||||
|
|||||||
@@ -34,3 +34,7 @@ bool AABB_Slab(V2f origin, V2f point, AABB a)
|
|||||||
|
|
||||||
return tMax >= tMin;
|
return tMax >= tMin;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
V2f AABB_Centre(AABB a) {
|
||||||
|
return V2F(a.pos.x + a.size.x/2, a.pos.y + a.size.y/2);
|
||||||
|
}
|
||||||
|
|||||||
@@ -2,6 +2,12 @@
|
|||||||
#include "game/bandit.h"
|
#include "game/bandit.h"
|
||||||
|
|
||||||
void UpdateBandit(F32 delta, Bandit *bandit, World *world) {
|
void UpdateBandit(F32 delta, Bandit *bandit, World *world) {
|
||||||
|
if (
|
||||||
|
world->player.controls.shot && AABB_Slab(world->player.pos, world->player.shotPos, bandit->collision) && bandit->currentArea == world->player.currentArea)
|
||||||
|
{
|
||||||
|
printf("You shot the bandit %*.s\n", Sv(bandit->name));
|
||||||
|
bandit->health--;
|
||||||
|
}
|
||||||
switch (bandit->mode) {
|
switch (bandit->mode) {
|
||||||
case BANDIT_WAITING:
|
case BANDIT_WAITING:
|
||||||
bandit->waitTime+=delta;
|
bandit->waitTime+=delta;
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
void PlayerInput(SDL_Event *event, Player *player)
|
void PlayerInput(SDL_Event *event, Player *player)
|
||||||
{
|
{
|
||||||
player->controls.shot = false;
|
|
||||||
SDL_KeyboardEvent key = event->key;
|
SDL_KeyboardEvent key = event->key;
|
||||||
SDL_MouseButtonEvent mouseBtn = event->button;
|
SDL_MouseButtonEvent mouseBtn = event->button;
|
||||||
if(event->type == SDL_EVENT_KEY_DOWN || event->type == SDL_EVENT_KEY_UP) {
|
if(event->type == SDL_EVENT_KEY_DOWN || event->type == SDL_EVENT_KEY_UP) {
|
||||||
@@ -42,8 +41,8 @@ void PlayerInput(SDL_Event *event, Player *player)
|
|||||||
// shooting
|
// shooting
|
||||||
player->bulletsLoaded -= 1;
|
player->bulletsLoaded -= 1;
|
||||||
player->controls.shot = true;
|
player->controls.shot = true;
|
||||||
player->shotPos = V2F(mouseBtn.x, mouseBtn.y);
|
player->shotPos = player->world->mouseProjected;
|
||||||
printf("shot %f %f\n", mouseBtn.x, mouseBtn.y);
|
printf("shot %f %f\n", player->shotPos.x, player->shotPos.y);
|
||||||
} else if(player->reloadTimer == 0) {
|
} else if(player->reloadTimer == 0) {
|
||||||
player->reloadTimer = PLAYER_RELOAD_TIME;
|
player->reloadTimer = PLAYER_RELOAD_TIME;
|
||||||
printf("reloading\n");
|
printf("reloading\n");
|
||||||
@@ -52,6 +51,7 @@ void PlayerInput(SDL_Event *event, Player *player)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PlayerUpdate(F32 delta, Player *player) {
|
void PlayerUpdate(F32 delta, Player *player) {
|
||||||
|
player->controls.shot = false;
|
||||||
V2f dir = V2F(0, 0);
|
V2f dir = V2F(0, 0);
|
||||||
if(player->controls.upDown) {
|
if(player->controls.upDown) {
|
||||||
dir.y -= 1;
|
dir.y -= 1;
|
||||||
|
|||||||
@@ -1,7 +1,9 @@
|
|||||||
#include "../world.h"
|
#include "../world.h"
|
||||||
#include "../npc.h"
|
#include "../npc.h"
|
||||||
#include "../player.h"
|
#include "../player.h"
|
||||||
|
#include "../aabb.h"
|
||||||
#include <SDL3/SDL_events.h>
|
#include <SDL3/SDL_events.h>
|
||||||
|
#include "../map.h"
|
||||||
|
|
||||||
void UpdateWorld(F32 delta, World *world)
|
void UpdateWorld(F32 delta, World *world)
|
||||||
{
|
{
|
||||||
@@ -14,10 +16,12 @@ void UpdateNPCs(F32 delta, World *world)
|
|||||||
{
|
{
|
||||||
for (U32 i = 0; i < world->npcCount; i++)
|
for (U32 i = 0; i < world->npcCount; i++)
|
||||||
{
|
{
|
||||||
UpdateNPC(delta, &world->npcs[i], world);
|
NPC *npc = &world->npcs[i];
|
||||||
if(world->player.controls.shot && AABB_Point(world->npcs[i].collision, world->player.shotPos)) {
|
UpdateNPC(delta, npc, world);
|
||||||
// TODO we need to unproject the mouse location !!!
|
if (
|
||||||
printf("You shot %.*s\n", Sv(world->npcs[i].name));
|
world->player.controls.shot && AABB_Slab(world->player.pos, world->player.shotPos, npc->collision) && npc->currentArea == world->player.currentArea)
|
||||||
|
{
|
||||||
|
printf("You shot %*.s\n", Sv(world->npcs[i].name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -28,12 +32,24 @@ void ProcessEvents(SDL_Event *event, World *world)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void RenderWorld(World *world, D_Context *draw) {
|
void RenderWorld(World *world, D_Context *draw) {
|
||||||
|
World_Tile tileTypes[] = {dirt, middlePath, middlePathEdgeTop, middlePathEdgeRight, middlePathEdgeBottom, middlePathEdgeLeft, middlePathCornerTopLeft, middlePathCornerTopRight, middlePathCornerBottomRight, middlePathCornerTurnBottomLeft};
|
||||||
|
for (int i = 0; i < 4800; i++)
|
||||||
|
{
|
||||||
|
D_Rect(draw, (i % 96), __floor(i / 96), .texture = tileTypes[map[i]].tile, .angle = tileTypes[map[i]].rotation);
|
||||||
|
}
|
||||||
for(U32 i = 0; i < world->npcCount; i++) {
|
for(U32 i = 0; i < world->npcCount; i++) {
|
||||||
NPC npc = world->npcs[i];
|
NPC npc = world->npcs[i];
|
||||||
D_Rect(draw, npc.collision.pos.x, npc.collision.pos.y, .texture = 1);
|
if(npc.currentArea == world->player.currentArea) {
|
||||||
D_Rect(draw, npc.collision.pos.x, npc.collision.pos.y, .texture = 0, .dim = npc.collision.size);
|
V2f drawPos = AABB_Centre(npc.collision);
|
||||||
|
D_Rect(draw, drawPos.x, drawPos.y, .texture = 1);
|
||||||
|
D_Rect(draw, drawPos.x, drawPos.y, .texture = 0, .dim = npc.collision.size, .flags = D_RECT_IGNORE_ASPECT);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(world->bandit.currentArea == world->player.currentArea) {
|
||||||
|
V2f drawPos = AABB_Centre(world->bandit.collision);
|
||||||
|
D_Rect(draw, drawPos.x, drawPos.y, .texture = 9);
|
||||||
|
D_Rect(draw, drawPos.x, drawPos.y, .texture = 0, .dim = world->bandit.collision.size, .flags = D_RECT_IGNORE_ASPECT);
|
||||||
}
|
}
|
||||||
D_Rect(draw, world->bandit.collision.pos.x, world->bandit.collision.pos.y, .texture = 9);
|
|
||||||
D_Rect(draw, world->player.pos.x, world->player.pos.y, .texture = 1);
|
D_Rect(draw, world->player.pos.x, world->player.pos.y, .texture = 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
65
code/game/map.h
Normal file
65
code/game/map.h
Normal file
@@ -0,0 +1,65 @@
|
|||||||
|
#include "world.h"
|
||||||
|
|
||||||
|
|
||||||
|
World_Tile dirt = {.rotation=0,.collision=false,.tile=16};//0
|
||||||
|
World_Tile middlePath = {.rotation=0,.collision=false,.tile=6};//1
|
||||||
|
World_Tile middlePathEdgeTop = {.rotation=0,.collision=false,.tile=7};//2
|
||||||
|
World_Tile middlePathEdgeRight = {.rotation=PI_F32/2,.collision=false,.tile=7};//3
|
||||||
|
World_Tile middlePathEdgeBottom = {.rotation=PI_F32,.collision=false,.tile=7};//4
|
||||||
|
World_Tile middlePathEdgeLeft = {.rotation=-PI_F32/2,.collision=false,.tile=7};//5
|
||||||
|
World_Tile middlePathCornerTopLeft = {.rotation=0,.collision=false,.tile=5};//6
|
||||||
|
World_Tile middlePathCornerTopRight = {.rotation=PI_F32/2,.collision=false,.tile=5};//7
|
||||||
|
World_Tile middlePathCornerBottomRight = {.rotation=-PI_F32,.collision=false,.tile=5};//8
|
||||||
|
World_Tile middlePathCornerTurnBottomLeft = {.rotation=-PI_F32/2,.collision=false,.tile=5};//9
|
||||||
|
int map[] = {
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,6,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,9,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,8,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,9,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,5,3,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,7,2,2,2,2,2,6,7,2,2,2,2,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,8,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,5,3,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,7,2,2,2,2,2,6,7,2,2,2,2,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,8,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,5,3,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,7,2,2,2,2,2,6,7,2,2,2,2,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,8,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
};
|
||||||
@@ -22,6 +22,7 @@ struct NPC {
|
|||||||
AABB collision;
|
AABB collision;
|
||||||
Str8 name;
|
Str8 name;
|
||||||
NPC_LOOK look;
|
NPC_LOOK look;
|
||||||
|
World_Area currentArea;
|
||||||
|
|
||||||
bool customPOI;
|
bool customPOI;
|
||||||
U32 customPOICount;
|
U32 customPOICount;
|
||||||
|
|||||||
@@ -22,7 +22,9 @@ struct ControlState {
|
|||||||
typedef struct Player Player;
|
typedef struct Player Player;
|
||||||
struct Player
|
struct Player
|
||||||
{
|
{
|
||||||
|
World *world;
|
||||||
V2f pos;
|
V2f pos;
|
||||||
|
World_Area currentArea;
|
||||||
U32 bulletsLoaded;
|
U32 bulletsLoaded;
|
||||||
ControlState controls;
|
ControlState controls;
|
||||||
V2f shotPos;
|
V2f shotPos;
|
||||||
|
|||||||
@@ -1,26 +1,41 @@
|
|||||||
#if !defined(LD_GAME_WORLD_H_)
|
#if !defined(LD_GAME_WORLD_H_)
|
||||||
#define LD_GAME_WORLD_H_
|
#define LD_GAME_WORLD_H_
|
||||||
|
|
||||||
#include "player.h"
|
|
||||||
#include "npc.h"
|
|
||||||
#include "bandit.h"
|
|
||||||
#include "../core/math.h"
|
#include "../core/math.h"
|
||||||
|
|
||||||
// Areas are which
|
// Areas are which
|
||||||
typedef U32 World_Area;
|
typedef U32 World_Area;
|
||||||
enum World_Area {
|
enum World_Area
|
||||||
|
{
|
||||||
WORLD_AREA_OUTSIDE = (1 << 0),
|
WORLD_AREA_OUTSIDE = (1 << 0),
|
||||||
WORLD_AREA_SALOON = (1 << 1),
|
WORLD_AREA_SALOON = (1 << 1),
|
||||||
|
WORLD_PATH_MIDDLE_EDGE = (1 << 2),
|
||||||
|
WORLD_PATH_MIDDLE = (1 << 3),
|
||||||
|
WORLD_PATH_CORNER = (1 << 4),
|
||||||
|
WORLD_PATH_CORNER_EDGE = (1 << 5),
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct World_Tile World_Tile;
|
||||||
|
struct World_Tile
|
||||||
|
{
|
||||||
|
World_Area tile;
|
||||||
|
double rotation;
|
||||||
|
bool collision;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct World World;
|
typedef struct World World;
|
||||||
|
#include "player.h"
|
||||||
|
#include "npc.h"
|
||||||
|
#include "bandit.h"
|
||||||
|
|
||||||
struct World {
|
struct World {
|
||||||
//// Static stuff
|
//// Static stuff
|
||||||
NavMesh *navMesh;
|
NavMesh *navMesh;
|
||||||
Random random;
|
Random random;
|
||||||
|
V2f mouseProjected;
|
||||||
|
|
||||||
//// Player
|
//// Player
|
||||||
Player player;
|
Player player;
|
||||||
|
|
||||||
//// NPCs
|
//// NPCs
|
||||||
U32 npcCount;
|
U32 npcCount;
|
||||||
@@ -35,10 +50,10 @@ struct World {
|
|||||||
};
|
};
|
||||||
|
|
||||||
function void UpdateWorld(F32 delta, World *world);
|
function void UpdateWorld(F32 delta, World *world);
|
||||||
function void RenderWorld(World *world, D_Context *drawContext );
|
function void RenderWorld(World *world, D_Context *drawContext);
|
||||||
function void ProcessEvents(SDL_Event *event, World *world);
|
function void ProcessEvents(SDL_Event *event, World *world);
|
||||||
function void UpdateNPCs(F32 delta, World *world);
|
function void UpdateNPCs(F32 delta, World *world);
|
||||||
function void UpdateNPC(F32 delta, NPC *npc, World *world);
|
function void UpdateNPC(F32 delta, NPC *npc, World *world);
|
||||||
function void UpdateBandit(F32 delta, Bandit *bandit, World *world);
|
function void UpdateBandit(F32 delta, Bandit *bandit, World *world);
|
||||||
|
|
||||||
#endif // LD_GAME_WORLD_H_
|
#endif // LD_GAME_WORLD_H_
|
||||||
|
|||||||
2
linux
2
linux
@@ -57,7 +57,7 @@ glslangValidator -o "assets/shaders/basic.frag.spv" --target-env "vulkan1.3" "..
|
|||||||
|
|
||||||
echo "[Building source]"
|
echo "[Building source]"
|
||||||
|
|
||||||
COMPILER_OPTS="-Wall -Wno-missing-braces -Wno-unused-function -Ideps/stb -I../code"
|
COMPILER_OPTS="-Wall -Wno-override-init-side-effects -Wno-missing-braces -Wno-unused-function -Ideps/stb -I../code"
|
||||||
LINKER_OPTS="-lSDL3 -lm"
|
LINKER_OPTS="-lSDL3 -lm"
|
||||||
|
|
||||||
if [[ $release == 1 ]]
|
if [[ $release == 1 ]]
|
||||||
|
|||||||
Reference in New Issue
Block a user