Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/SB/Core/x/xGrid.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ typedef S32 (*GridEntCallback)(xEnt*, void*);
extern volatile S32 gGridIterActive;

void xGridBoundInit(xGridBound* gridb, void* data);
void xGridKill(xGrid* grid);
void xGridEmpty(xGrid* grid);
S32 xGridRemove(xGridBound* gridb);
xGridBound** xGridGetCell(xGrid* grid, const xEnt* ent, S32& grx, S32& grz);
Expand Down
17 changes: 17 additions & 0 deletions src/SB/Game/zGrid.cpp
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
#include "zGrid.h"
#include "xGrid.h"
#include "xString.h"

#include <types.h>

xGrid colls_grid;
xGrid colls_oso_grid;
xGrid npcs_grid;
static int zGridInitted;

void zGridExit(zScene* s)
{
xGridKill(&colls_grid);
xGridKill(&colls_oso_grid);
xGridKill(&npcs_grid);

gGridIterActive = NULL;
zGridInitted = NULL;
}
7 changes: 7 additions & 0 deletions src/SB/Game/zNPCGoalVillager.h
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,13 @@ struct zNPCGoalBoySwim : zNPCGoalCommon
}
};

struct NPCSndProp
{
en_NPC_SOUND sndtype;
int flg_snd;
float tym_delayNext;
};

xFactoryInst* GOALCreate_Villager(S32 who, RyzMemGrow* grow, void*);

#endif
55 changes: 55 additions & 0 deletions src/SB/Game/zNPCSndTable.cpp
Original file line number Diff line number Diff line change
@@ -1,7 +1,62 @@
#include "zNPCSndTable.h"
#include "zNPCGoalVillager.h"

#include "xString.h"

#include <types.h>

static char* g_strz_sndgroup[26];
static unsigned int g_hash_sndgroup[26];
static float g_tmrz_sndplay[26];

NPCSndProp g_sndProps[];

void NPCS_Startup()
{
for (int i = 0; i < (int)(sizeof(g_strz_sndgroup) / sizeof(char*)); i++)
{
g_hash_sndgroup[i] = xStrHash(g_strz_sndgroup[i]);
}
}

void NPCS_Shutdown()
{
}

int NPCS_SndOkToPlay(en_NPC_SOUND sndtype)
{
if (sndtype == NPC_STYP_BOGUS)
{
return 1;
}
if (sndtype == NPC_STYP_LISTEND)
{
return 0;
}
return g_tmrz_sndplay[sndtype] < 0.0f;
}

void NPCS_SndTypePlayed(en_NPC_SOUND sndtype, float delayNext)
{
float tym = 2.0f;

switch (sndtype)
{
case NPC_STYP_TIKISTACK:
tym = 0.15f;
break;
case NPC_STYP_TIKIEXPLODE:
tym = 2.0f;
break;
default:
tym = -1.0f;
break;
}

if (delayNext > 0.0f)
{
tym = delayNext;
}

g_tmrz_sndplay[sndtype] = tym;
}