Compare commits
3 Commits
9515dad661
...
0736314600
Author | SHA1 | Date | |
---|---|---|---|
0736314600 | |||
87fb216256 | |||
daa6cb4cb4 |
BIN
Data/Audio/airport.ogg
(Stored with Git LFS)
Normal file
BIN
Data/Audio/airport.ogg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Audio/ching.ogg
(Stored with Git LFS)
Normal file
BIN
Data/Audio/ching.ogg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Audio/church.wav
(Stored with Git LFS)
Normal file
BIN
Data/Audio/church.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Audio/dog.wav
(Stored with Git LFS)
Normal file
BIN
Data/Audio/dog.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Audio/door_squeek.wav
(Stored with Git LFS)
Normal file
BIN
Data/Audio/door_squeek.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Audio/ghost.ogg
(Stored with Git LFS)
Normal file
BIN
Data/Audio/ghost.ogg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Audio/gym_bro.ogg
(Stored with Git LFS)
Normal file
BIN
Data/Audio/gym_bro.ogg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Audio/heart_beat.ogg
(Stored with Git LFS)
Normal file
BIN
Data/Audio/heart_beat.ogg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Audio/monkey.ogg
(Stored with Git LFS)
Normal file
BIN
Data/Audio/monkey.ogg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Audio/monkey_put.wav
(Stored with Git LFS)
Normal file
BIN
Data/Audio/monkey_put.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Audio/portal_destroy.ogg
(Stored with Git LFS)
Normal file
BIN
Data/Audio/portal_destroy.ogg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Audio/tech_sound.wav
(Stored with Git LFS)
Normal file
BIN
Data/Audio/tech_sound.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Audio/wifi.ogg
(Stored with Git LFS)
Normal file
BIN
Data/Audio/wifi.ogg
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Audio/woosh.wav
(Stored with Git LFS)
Normal file
BIN
Data/Audio/woosh.wav
(Stored with Git LFS)
Normal file
Binary file not shown.
2378
feely_pona.cpp
2378
feely_pona.cpp
File diff suppressed because it is too large
Load Diff
@ -29,7 +29,6 @@ enum FP_EntityType
|
|||||||
|
|
||||||
enum FP_EntityTerryState
|
enum FP_EntityTerryState
|
||||||
{
|
{
|
||||||
FP_EntityTerryState_Nil,
|
|
||||||
FP_EntityTerryState_Idle,
|
FP_EntityTerryState_Idle,
|
||||||
FP_EntityTerryState_Attack,
|
FP_EntityTerryState_Attack,
|
||||||
FP_EntityTerryState_RangeAttack,
|
FP_EntityTerryState_RangeAttack,
|
||||||
@ -39,14 +38,12 @@ enum FP_EntityTerryState
|
|||||||
|
|
||||||
enum FP_EntityMobSpawnerState
|
enum FP_EntityMobSpawnerState
|
||||||
{
|
{
|
||||||
FP_EntityMobSpawnerState_Nil,
|
|
||||||
FP_EntityMobSpawnerState_Idle,
|
FP_EntityMobSpawnerState_Idle,
|
||||||
FP_EntityMobSpawnerState_Shutdown,
|
FP_EntityMobSpawnerState_Shutdown,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FP_EntitySmoochieState
|
enum FP_EntitySmoochieState
|
||||||
{
|
{
|
||||||
FP_EntitySmoochieState_Nil,
|
|
||||||
FP_EntitySmoochieState_Idle,
|
FP_EntitySmoochieState_Idle,
|
||||||
FP_EntitySmoochieState_Attack,
|
FP_EntitySmoochieState_Attack,
|
||||||
FP_EntitySmoochieState_HurtSide,
|
FP_EntitySmoochieState_HurtSide,
|
||||||
@ -56,7 +53,6 @@ enum FP_EntitySmoochieState
|
|||||||
|
|
||||||
enum FP_EntityCatfishState
|
enum FP_EntityCatfishState
|
||||||
{
|
{
|
||||||
FP_EntityCatfishState_Nil,
|
|
||||||
FP_EntityCatfishState_Idle,
|
FP_EntityCatfishState_Idle,
|
||||||
FP_EntityCatfishState_Attack,
|
FP_EntityCatfishState_Attack,
|
||||||
FP_EntityCatfishState_Death,
|
FP_EntityCatfishState_Death,
|
||||||
@ -65,7 +61,6 @@ enum FP_EntityCatfishState
|
|||||||
|
|
||||||
enum FP_EntityClingerState
|
enum FP_EntityClingerState
|
||||||
{
|
{
|
||||||
FP_EntityClingerState_Nil,
|
|
||||||
FP_EntityClingerState_Idle,
|
FP_EntityClingerState_Idle,
|
||||||
FP_EntityClingerState_Attack,
|
FP_EntityClingerState_Attack,
|
||||||
FP_EntityClingerState_Death,
|
FP_EntityClingerState_Death,
|
||||||
@ -74,82 +69,63 @@ enum FP_EntityClingerState
|
|||||||
|
|
||||||
enum FP_EntityMerchantTerryState
|
enum FP_EntityMerchantTerryState
|
||||||
{
|
{
|
||||||
FP_EntityMerchantTerryState_Nil,
|
|
||||||
FP_EntityMerchantTerryState_Idle,
|
FP_EntityMerchantTerryState_Idle,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FP_EntityMerchantGymState
|
enum FP_EntityMerchantGymState
|
||||||
{
|
{
|
||||||
FP_EntityMerchantGymState_Nil,
|
|
||||||
FP_EntityMerchantGymState_Idle,
|
FP_EntityMerchantGymState_Idle,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FP_EntityMerchantPhoneCompanyState
|
enum FP_EntityMerchantPhoneCompanyState
|
||||||
{
|
{
|
||||||
FP_EntityMerchantPhoneCompanyState_Nil,
|
|
||||||
FP_EntityMerchantPhoneCompanyState_Idle,
|
FP_EntityMerchantPhoneCompanyState_Idle,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FP_EntityMerchantGraveyardState
|
enum FP_EntityMerchantGraveyardState
|
||||||
{
|
{
|
||||||
FP_EntityMerchantGraveyardState_Nil,
|
|
||||||
FP_EntityMerchantGraveyardState_Idle,
|
FP_EntityMerchantGraveyardState_Idle,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FP_EntityClubTerryState
|
enum FP_EntityClubTerryState
|
||||||
{
|
{
|
||||||
FP_EntityClubTerryState_Nil,
|
|
||||||
FP_EntityClubTerryState_Idle,
|
FP_EntityClubTerryState_Idle,
|
||||||
FP_EntityClubTerryState_PartyTime,
|
FP_EntityClubTerryState_PartyTime,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FP_EntityAirportTerryState
|
enum FP_EntityAirportTerryState
|
||||||
{
|
{
|
||||||
FP_EntityAirportTerryState_Nil,
|
|
||||||
FP_EntityAirportTerryState_Idle,
|
FP_EntityAirportTerryState_Idle,
|
||||||
FP_EntityAirportTerryState_FlyPassenger,
|
FP_EntityAirportTerryState_FlyPassenger,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FP_EntityAirportTerryPlaneState
|
enum FP_EntityAirportTerryPlaneState
|
||||||
{
|
{
|
||||||
FP_EntityAirportTerryPlaneState_Nil,
|
|
||||||
FP_EntityAirportTerryPlaneState_Idle,
|
FP_EntityAirportTerryPlaneState_Idle,
|
||||||
FP_EntityAirportTerryPlaneState_FlyPassenger,
|
FP_EntityAirportTerryPlaneState_FlyPassenger,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FP_EntityChurchTerryState
|
enum FP_EntityChurchTerryState
|
||||||
{
|
{
|
||||||
FP_EntityChurchTerryState_Nil,
|
|
||||||
FP_EntityChurchTerryState_Idle,
|
FP_EntityChurchTerryState_Idle,
|
||||||
FP_EntityChurchTerryState_ConvertPatron,
|
FP_EntityChurchTerryState_ConvertPatron,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FP_EntityKennelTerryState
|
enum FP_EntityKennelTerryState
|
||||||
{
|
{
|
||||||
FP_EntityKennelTerryState_Nil,
|
|
||||||
FP_EntityKennelTerryState_Idle,
|
FP_EntityKennelTerryState_Idle,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FP_EntityMapState
|
enum FP_EntityMapState
|
||||||
{
|
{
|
||||||
FP_EntityMapState_Nil,
|
|
||||||
FP_EntityMapState_Idle,
|
FP_EntityMapState_Idle,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FP_EntityHeartState
|
enum FP_EntityHeartState
|
||||||
{
|
{
|
||||||
FP_EntityHeartState_Nil,
|
|
||||||
FP_EntityHeartState_Idle,
|
FP_EntityHeartState_Idle,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FP_EntityPortalMonkeyState
|
|
||||||
{
|
|
||||||
FP_EntityPortalMonkeyState_Nil,
|
|
||||||
FP_EntityPortalMonkeyState_Idle,
|
|
||||||
FP_EntityPortalMonkeyState_BeingCarried,
|
|
||||||
FP_EntityPortalMonkeyState_DisablingPortal,
|
|
||||||
};
|
|
||||||
|
|
||||||
struct FP_EntityRenderData
|
struct FP_EntityRenderData
|
||||||
{
|
{
|
||||||
FP_Meters height;
|
FP_Meters height;
|
||||||
@ -161,6 +137,6 @@ struct FP_EntityRenderData
|
|||||||
TELY_AssetAnimatedSprite sprite;
|
TELY_AssetAnimatedSprite sprite;
|
||||||
};
|
};
|
||||||
|
|
||||||
Dqn_usize const FP_TERRY_MOBILE_DATA_PER_RANGE_ATTACK = DQN_KILOBYTES(1);
|
Dqn_usize const FP_TERRY_MOBILE_DATA_PER_RANGE_ATTACK = DQN_KILOBYTES(5);
|
||||||
uint16_t const FP_TERRY_DASH_STAMINA_COST = 33;
|
uint16_t const FP_TERRY_DASH_STAMINA_COST = 33;
|
||||||
uint16_t const FP_DEFAULT_DAMAGE = 30;
|
uint16_t const FP_DEFAULT_DAMAGE = 30;
|
||||||
|
@ -35,7 +35,6 @@ FP_EntityRenderData FP_Entity_GetRenderData(FP_Game *game, FP_EntityType type, u
|
|||||||
result.height.meters = 1.8f;
|
result.height.meters = 1.8f;
|
||||||
FP_EntityTerryState state = DQN_CAST(FP_EntityTerryState)raw_state;
|
FP_EntityTerryState state = DQN_CAST(FP_EntityTerryState)raw_state;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case FP_EntityTerryState_Nil: break;
|
|
||||||
case FP_EntityTerryState_Idle: result.anim_name = g_anim_names.terry_walk_idle; break;
|
case FP_EntityTerryState_Idle: result.anim_name = g_anim_names.terry_walk_idle; break;
|
||||||
|
|
||||||
case FP_EntityTerryState_Attack: {
|
case FP_EntityTerryState_Attack: {
|
||||||
@ -84,7 +83,6 @@ FP_EntityRenderData FP_Entity_GetRenderData(FP_Game *game, FP_EntityType type, u
|
|||||||
result.height.meters = 1.6f;
|
result.height.meters = 1.6f;
|
||||||
FP_EntitySmoochieState state = DQN_CAST(FP_EntitySmoochieState)raw_state;
|
FP_EntitySmoochieState state = DQN_CAST(FP_EntitySmoochieState)raw_state;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case FP_EntitySmoochieState_Nil: break;
|
|
||||||
case FP_EntitySmoochieState_Idle: result.anim_name = g_anim_names.smoochie_walk_down; break;
|
case FP_EntitySmoochieState_Idle: result.anim_name = g_anim_names.smoochie_walk_down; break;
|
||||||
case FP_EntitySmoochieState_Attack: result.anim_name = g_anim_names.smoochie_attack_down; break;
|
case FP_EntitySmoochieState_Attack: result.anim_name = g_anim_names.smoochie_attack_down; break;
|
||||||
case FP_EntitySmoochieState_HurtSide: result.anim_name = g_anim_names.smoochie_hurt_side; result.flip = direction == FP_GameDirection_Right ? TELY_AssetFlip_X : TELY_AssetFlip_No; break;
|
case FP_EntitySmoochieState_HurtSide: result.anim_name = g_anim_names.smoochie_hurt_side; result.flip = direction == FP_GameDirection_Right ? TELY_AssetFlip_X : TELY_AssetFlip_No; break;
|
||||||
@ -105,7 +103,6 @@ FP_EntityRenderData FP_Entity_GetRenderData(FP_Game *game, FP_EntityType type, u
|
|||||||
result.height.meters = 3.66f;
|
result.height.meters = 3.66f;
|
||||||
FP_EntityMerchantTerryState state = DQN_CAST(FP_EntityMerchantTerryState)raw_state;
|
FP_EntityMerchantTerryState state = DQN_CAST(FP_EntityMerchantTerryState)raw_state;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case FP_EntityMerchantTerryState_Nil: break;
|
|
||||||
case FP_EntityMerchantTerryState_Idle: result.anim_name = g_anim_names.merchant_terry; break;
|
case FP_EntityMerchantTerryState_Idle: result.anim_name = g_anim_names.merchant_terry; break;
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
@ -114,7 +111,6 @@ FP_EntityRenderData FP_Entity_GetRenderData(FP_Game *game, FP_EntityType type, u
|
|||||||
result.height.meters = 3.66f;
|
result.height.meters = 3.66f;
|
||||||
FP_EntityMerchantGraveyardState state = DQN_CAST(FP_EntityMerchantGraveyardState)raw_state;
|
FP_EntityMerchantGraveyardState state = DQN_CAST(FP_EntityMerchantGraveyardState)raw_state;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case FP_EntityMerchantGraveyardState_Nil: break;
|
|
||||||
case FP_EntityMerchantGraveyardState_Idle: result.anim_name = g_anim_names.merchant_graveyard; break;
|
case FP_EntityMerchantGraveyardState_Idle: result.anim_name = g_anim_names.merchant_graveyard; break;
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
@ -124,7 +120,6 @@ FP_EntityRenderData FP_Entity_GetRenderData(FP_Game *game, FP_EntityType type, u
|
|||||||
result.anim_name = g_anim_names.merchant_gym;
|
result.anim_name = g_anim_names.merchant_gym;
|
||||||
FP_EntityMerchantGymState state = DQN_CAST(FP_EntityMerchantGymState)raw_state;
|
FP_EntityMerchantGymState state = DQN_CAST(FP_EntityMerchantGymState)raw_state;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case FP_EntityMerchantGymState_Nil: break;
|
|
||||||
case FP_EntityMerchantGymState_Idle: result.anim_name = g_anim_names.merchant_gym; break;
|
case FP_EntityMerchantGymState_Idle: result.anim_name = g_anim_names.merchant_gym; break;
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
@ -133,7 +128,6 @@ FP_EntityRenderData FP_Entity_GetRenderData(FP_Game *game, FP_EntityType type, u
|
|||||||
result.height.meters = 3.66f;
|
result.height.meters = 3.66f;
|
||||||
FP_EntityMerchantPhoneCompanyState state = DQN_CAST(FP_EntityMerchantPhoneCompanyState)raw_state;
|
FP_EntityMerchantPhoneCompanyState state = DQN_CAST(FP_EntityMerchantPhoneCompanyState)raw_state;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case FP_EntityMerchantPhoneCompanyState_Nil: break;
|
|
||||||
case FP_EntityMerchantPhoneCompanyState_Idle: result.anim_name = g_anim_names.merchant_phone_company; break;
|
case FP_EntityMerchantPhoneCompanyState_Idle: result.anim_name = g_anim_names.merchant_phone_company; break;
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
@ -142,7 +136,6 @@ FP_EntityRenderData FP_Entity_GetRenderData(FP_Game *game, FP_EntityType type, u
|
|||||||
result.height.meters = 4.f;
|
result.height.meters = 4.f;
|
||||||
FP_EntityClubTerryState state = DQN_CAST(FP_EntityClubTerryState)raw_state;
|
FP_EntityClubTerryState state = DQN_CAST(FP_EntityClubTerryState)raw_state;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case FP_EntityClubTerryState_Nil: break;
|
|
||||||
case FP_EntityClubTerryState_Idle: result.anim_name = g_anim_names.club_terry_dark; break;
|
case FP_EntityClubTerryState_Idle: result.anim_name = g_anim_names.club_terry_dark; break;
|
||||||
case FP_EntityClubTerryState_PartyTime: result.anim_name = g_anim_names.club_terry_alive; break;
|
case FP_EntityClubTerryState_PartyTime: result.anim_name = g_anim_names.club_terry_alive; break;
|
||||||
}
|
}
|
||||||
@ -152,7 +145,6 @@ FP_EntityRenderData FP_Entity_GetRenderData(FP_Game *game, FP_EntityType type, u
|
|||||||
result.height.meters = 1.6f;
|
result.height.meters = 1.6f;
|
||||||
FP_EntityClingerState state = DQN_CAST(FP_EntityClingerState)raw_state;
|
FP_EntityClingerState state = DQN_CAST(FP_EntityClingerState)raw_state;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case FP_EntityClingerState_Nil: break;
|
|
||||||
case FP_EntityClingerState_Idle: result.anim_name = g_anim_names.clinger_walk_down; break;
|
case FP_EntityClingerState_Idle: result.anim_name = g_anim_names.clinger_walk_down; break;
|
||||||
|
|
||||||
case FP_EntityClingerState_Attack: {
|
case FP_EntityClingerState_Attack: {
|
||||||
@ -183,7 +175,6 @@ FP_EntityRenderData FP_Entity_GetRenderData(FP_Game *game, FP_EntityType type, u
|
|||||||
result.height.meters = 4.f;
|
result.height.meters = 4.f;
|
||||||
FP_EntityHeartState state = DQN_CAST(FP_EntityHeartState)raw_state;
|
FP_EntityHeartState state = DQN_CAST(FP_EntityHeartState)raw_state;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case FP_EntityHeartState_Nil: break;
|
|
||||||
case FP_EntityHeartState_Idle: result.anim_name = g_anim_names.heart; break;
|
case FP_EntityHeartState_Idle: result.anim_name = g_anim_names.heart; break;
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
@ -192,7 +183,6 @@ FP_EntityRenderData FP_Entity_GetRenderData(FP_Game *game, FP_EntityType type, u
|
|||||||
result.height.meters = 4.f;
|
result.height.meters = 4.f;
|
||||||
FP_EntityAirportTerryState state = DQN_CAST(FP_EntityAirportTerryState)raw_state;
|
FP_EntityAirportTerryState state = DQN_CAST(FP_EntityAirportTerryState)raw_state;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case FP_EntityAirportTerryState_Nil: break;
|
|
||||||
case FP_EntityAirportTerryState_Idle: result.anim_name = g_anim_names.airport_terry; break;
|
case FP_EntityAirportTerryState_Idle: result.anim_name = g_anim_names.airport_terry; break;
|
||||||
case FP_EntityAirportTerryState_FlyPassenger: result.anim_name = g_anim_names.airport_terry; break;
|
case FP_EntityAirportTerryState_FlyPassenger: result.anim_name = g_anim_names.airport_terry; break;
|
||||||
}
|
}
|
||||||
@ -202,7 +192,6 @@ FP_EntityRenderData FP_Entity_GetRenderData(FP_Game *game, FP_EntityType type, u
|
|||||||
result.height.meters = 1.6f;
|
result.height.meters = 1.6f;
|
||||||
FP_EntityCatfishState state = DQN_CAST(FP_EntityCatfishState)raw_state;
|
FP_EntityCatfishState state = DQN_CAST(FP_EntityCatfishState)raw_state;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case FP_EntityCatfishState_Nil:
|
|
||||||
case FP_EntityCatfishState_Idle: result.anim_name = g_anim_names.catfish_walk_down; break;
|
case FP_EntityCatfishState_Idle: result.anim_name = g_anim_names.catfish_walk_down; break;
|
||||||
case FP_EntityCatfishState_Attack: {
|
case FP_EntityCatfishState_Attack: {
|
||||||
switch (direction) {
|
switch (direction) {
|
||||||
@ -230,7 +219,6 @@ FP_EntityRenderData FP_Entity_GetRenderData(FP_Game *game, FP_EntityType type, u
|
|||||||
result.height.meters = 4.f;
|
result.height.meters = 4.f;
|
||||||
FP_EntityChurchTerryState state = DQN_CAST(FP_EntityChurchTerryState)raw_state;
|
FP_EntityChurchTerryState state = DQN_CAST(FP_EntityChurchTerryState)raw_state;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case FP_EntityChurchTerryState_Nil: break;
|
|
||||||
case FP_EntityChurchTerryState_Idle: result.anim_name = g_anim_names.church_terry_dark; break;
|
case FP_EntityChurchTerryState_Idle: result.anim_name = g_anim_names.church_terry_dark; break;
|
||||||
case FP_EntityChurchTerryState_ConvertPatron: result.anim_name = g_anim_names.church_terry_alive; break;
|
case FP_EntityChurchTerryState_ConvertPatron: result.anim_name = g_anim_names.church_terry_alive; break;
|
||||||
}
|
}
|
||||||
@ -240,7 +228,6 @@ FP_EntityRenderData FP_Entity_GetRenderData(FP_Game *game, FP_EntityType type, u
|
|||||||
result.height.meters = 3.f;
|
result.height.meters = 3.f;
|
||||||
FP_EntityKennelTerryState state = DQN_CAST(FP_EntityKennelTerryState)raw_state;
|
FP_EntityKennelTerryState state = DQN_CAST(FP_EntityKennelTerryState)raw_state;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case FP_EntityKennelTerryState_Nil: break;
|
|
||||||
case FP_EntityKennelTerryState_Idle: result.anim_name = g_anim_names.kennel_terry; break;
|
case FP_EntityKennelTerryState_Idle: result.anim_name = g_anim_names.kennel_terry; break;
|
||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
@ -259,7 +246,6 @@ FP_EntityRenderData FP_Entity_GetRenderData(FP_Game *game, FP_EntityType type, u
|
|||||||
result.height.meters = 3.f;
|
result.height.meters = 3.f;
|
||||||
FP_EntityMobSpawnerState state = DQN_CAST(FP_EntityMobSpawnerState)raw_state;
|
FP_EntityMobSpawnerState state = DQN_CAST(FP_EntityMobSpawnerState)raw_state;
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case FP_EntityMobSpawnerState_Nil: break;
|
|
||||||
case FP_EntityMobSpawnerState_Idle: result.anim_name = g_anim_names.portal; break;
|
case FP_EntityMobSpawnerState_Idle: result.anim_name = g_anim_names.portal; break;
|
||||||
case FP_EntityMobSpawnerState_Shutdown: {
|
case FP_EntityMobSpawnerState_Shutdown: {
|
||||||
result.anim_name = g_anim_names.portal_break;
|
result.anim_name = g_anim_names.portal_break;
|
||||||
@ -326,7 +312,9 @@ static FP_GameEntityHandle FP_Entity_CreateClinger(FP_Game *game, Dqn_V2 pos, DQ
|
|||||||
entity->is_dying = false;
|
entity->is_dying = false;
|
||||||
entity->base_acceleration_per_s.meters = 8.f;
|
entity->base_acceleration_per_s.meters = 8.f;
|
||||||
entity->local_pos = pos;
|
entity->local_pos = pos;
|
||||||
entity->sprite_height = FP_Entity_GetRenderData(game, entity->type, 0 /*state*/, FP_GameDirection_Down).height;
|
|
||||||
|
FP_EntityRenderData render_data = FP_Entity_GetRenderData(game, entity->type, 0, FP_GameDirection_Down);
|
||||||
|
entity->sprite_height = render_data.height;
|
||||||
entity->attack_cooldown_ms = 1000;
|
entity->attack_cooldown_ms = 1000;
|
||||||
entity->faction = FP_GameEntityFaction_Foe;
|
entity->faction = FP_GameEntityFaction_Foe;
|
||||||
|
|
||||||
@ -334,6 +322,9 @@ static FP_GameEntityHandle FP_Entity_CreateClinger(FP_Game *game, Dqn_V2 pos, DQ
|
|||||||
FP_Entity_AddDebugEditorFlags(game, entity->handle);
|
FP_Entity_AddDebugEditorFlags(game, entity->handle);
|
||||||
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
||||||
entity->flags |= FP_GameEntityFlag_Attackable;
|
entity->flags |= FP_GameEntityFlag_Attackable;
|
||||||
|
|
||||||
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
|
FP_Game_EntityActionReset(game, result, duration_ms, render_data.sprite);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -349,13 +340,19 @@ static FP_GameEntityHandle FP_Entity_CreateSmoochie(FP_Game *game, Dqn_V2 pos, D
|
|||||||
entity->base_acceleration_per_s.meters = 8.f;
|
entity->base_acceleration_per_s.meters = 8.f;
|
||||||
entity->is_dying = false;
|
entity->is_dying = false;
|
||||||
entity->local_pos = pos;
|
entity->local_pos = pos;
|
||||||
entity->sprite_height = FP_Entity_GetRenderData(game, entity->type, 0 /*state*/, FP_GameDirection_Down).height;
|
|
||||||
entity->attack_cooldown_ms = 1000;
|
entity->attack_cooldown_ms = 1000;
|
||||||
entity->local_hit_box_size = FP_Game_MetersToPixelsNx2(game, 0.7f, entity->sprite_height.meters * .6f);
|
entity->local_hit_box_size = FP_Game_MetersToPixelsNx2(game, 0.7f, entity->sprite_height.meters * .6f);
|
||||||
|
|
||||||
|
FP_EntityRenderData render_data = FP_Entity_GetRenderData(game, entity->type, 0, FP_GameDirection_Down);
|
||||||
|
entity->sprite_height = render_data.height;
|
||||||
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
|
FP_Game_EntityActionReset(game, result, duration_ms, render_data.sprite);
|
||||||
|
|
||||||
FP_Entity_AddDebugEditorFlags(game, entity->handle);
|
FP_Entity_AddDebugEditorFlags(game, entity->handle);
|
||||||
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
||||||
entity->flags |= FP_GameEntityFlag_Attackable;
|
entity->flags |= FP_GameEntityFlag_Attackable;
|
||||||
entity->faction = FP_GameEntityFaction_Foe;
|
entity->faction = FP_GameEntityFaction_Foe;
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -371,7 +368,12 @@ static FP_GameEntityHandle FP_Entity_CreateCatfish(FP_Game *game, Dqn_V2 pos, DQ
|
|||||||
entity->base_acceleration_per_s.meters = 8.f;
|
entity->base_acceleration_per_s.meters = 8.f;
|
||||||
entity->is_dying = false;
|
entity->is_dying = false;
|
||||||
entity->local_pos = pos;
|
entity->local_pos = pos;
|
||||||
entity->sprite_height = FP_Entity_GetRenderData(game, entity->type, 0 /*state*/, FP_GameDirection_Down).height;
|
|
||||||
|
FP_EntityRenderData render_data = FP_Entity_GetRenderData(game, entity->type, 0, FP_GameDirection_Down);
|
||||||
|
entity->sprite_height = render_data.height;
|
||||||
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
|
FP_Game_EntityActionReset(game, result, duration_ms, render_data.sprite);
|
||||||
|
|
||||||
entity->attack_cooldown_ms = 1000;
|
entity->attack_cooldown_ms = 1000;
|
||||||
entity->local_hit_box_size = FP_Game_MetersToPixelsNx2(game, 0.7f, entity->sprite_height.meters * .6f);
|
entity->local_hit_box_size = FP_Game_MetersToPixelsNx2(game, 0.7f, entity->sprite_height.meters * .6f);
|
||||||
FP_Entity_AddDebugEditorFlags(game, entity->handle);
|
FP_Entity_AddDebugEditorFlags(game, entity->handle);
|
||||||
@ -424,9 +426,13 @@ static FP_GameEntityHandle FP_Entity_CreateMobSpawner(FP_Game *game, Dqn_V2 pos,
|
|||||||
entity->type = FP_EntityType_MobSpawner;
|
entity->type = FP_EntityType_MobSpawner;
|
||||||
entity->local_pos = pos;
|
entity->local_pos = pos;
|
||||||
entity->local_hit_box_size = Dqn_V2_InitNx1(32);
|
entity->local_hit_box_size = Dqn_V2_InitNx1(32);
|
||||||
entity->sprite_height = FP_Entity_GetRenderData(game, entity->type, 0 /*state*/, FP_GameDirection_Down).height;
|
|
||||||
FP_Entity_AddDebugEditorFlags(game, result);
|
FP_Entity_AddDebugEditorFlags(game, result);
|
||||||
|
|
||||||
|
FP_EntityRenderData render_data = FP_Entity_GetRenderData(game, entity->type, 0, FP_GameDirection_Down);
|
||||||
|
entity->sprite_height = render_data.height;
|
||||||
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
|
FP_Game_EntityActionReset(game, result, duration_ms, render_data.sprite);
|
||||||
|
|
||||||
entity->spawn_cap = spawn_cap;
|
entity->spawn_cap = spawn_cap;
|
||||||
entity->spawn_list = FP_SentinelList_Init<FP_GameEntityHandle>(game->chunk_pool);
|
entity->spawn_list = FP_SentinelList_Init<FP_GameEntityHandle>(game->chunk_pool);
|
||||||
return result;
|
return result;
|
||||||
@ -443,12 +449,17 @@ static FP_GameEntityHandle FP_Entity_CreateTerry(FP_Game *game, Dqn_V2 pos, DQN_
|
|||||||
entity->type = FP_EntityType_Terry;
|
entity->type = FP_EntityType_Terry;
|
||||||
entity->local_pos = pos;
|
entity->local_pos = pos;
|
||||||
entity->base_acceleration_per_s.meters = 16.f;
|
entity->base_acceleration_per_s.meters = 16.f;
|
||||||
entity->sprite_height = FP_Entity_GetRenderData(game, entity->type, 0 /*state*/, FP_GameDirection_Down).height;
|
|
||||||
|
FP_EntityRenderData render_data = FP_Entity_GetRenderData(game, entity->type, 0, FP_GameDirection_Down);
|
||||||
|
entity->sprite_height = render_data.height;
|
||||||
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
|
FP_Game_EntityActionReset(game, result, duration_ms, render_data.sprite);
|
||||||
|
|
||||||
entity->attack_cooldown_ms = 500;
|
entity->attack_cooldown_ms = 500;
|
||||||
entity->local_hit_box_size = FP_Game_MetersToPixelsNx2(game, 0.5f, entity->sprite_height.meters * .6f);
|
entity->local_hit_box_size = FP_Game_MetersToPixelsNx2(game, 0.5f, entity->sprite_height.meters * .6f);
|
||||||
entity->hp_cap = FP_DEFAULT_DAMAGE * 3;
|
entity->hp_cap = FP_DEFAULT_DAMAGE * 3;
|
||||||
entity->hp = entity->hp_cap;
|
entity->hp = entity->hp_cap;
|
||||||
entity->coins = 1'000'000;
|
entity->coins = 0;//1'000'000;
|
||||||
FP_Entity_AddDebugEditorFlags(game, result);
|
FP_Entity_AddDebugEditorFlags(game, result);
|
||||||
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
||||||
entity->flags |= FP_GameEntityFlag_Attackable;
|
entity->flags |= FP_GameEntityFlag_Attackable;
|
||||||
@ -469,7 +480,12 @@ static FP_GameEntityHandle FP_Entity_CreateMerchantTerry(FP_Game *game, Dqn_V2 p
|
|||||||
|
|
||||||
entity->type = FP_EntityType_MerchantTerry;
|
entity->type = FP_EntityType_MerchantTerry;
|
||||||
entity->local_pos = pos;
|
entity->local_pos = pos;
|
||||||
entity->sprite_height = FP_Entity_GetRenderData(game, entity->type, 0 /*state*/, FP_GameDirection_Down).height;
|
|
||||||
|
FP_EntityRenderData render_data = FP_Entity_GetRenderData(game, entity->type, 0, FP_GameDirection_Down);
|
||||||
|
entity->sprite_height = render_data.height;
|
||||||
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
|
FP_Game_EntityActionReset(game, result, duration_ms, render_data.sprite);
|
||||||
|
|
||||||
FP_Entity_AddDebugEditorFlags(game, result);
|
FP_Entity_AddDebugEditorFlags(game, result);
|
||||||
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
||||||
|
|
||||||
@ -493,7 +509,12 @@ static FP_GameEntityHandle FP_Entity_CreateMerchantGraveyard(FP_Game *game, Dqn_
|
|||||||
|
|
||||||
entity->type = FP_EntityType_MerchantGraveyard;
|
entity->type = FP_EntityType_MerchantGraveyard;
|
||||||
entity->local_pos = pos;
|
entity->local_pos = pos;
|
||||||
entity->sprite_height = FP_Entity_GetRenderData(game, entity->type, 0 /*state*/, FP_GameDirection_Down).height;
|
|
||||||
|
FP_EntityRenderData render_data = FP_Entity_GetRenderData(game, entity->type, 0, FP_GameDirection_Down);
|
||||||
|
entity->sprite_height = render_data.height;
|
||||||
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
|
FP_Game_EntityActionReset(game, result, duration_ms, render_data.sprite);
|
||||||
|
|
||||||
FP_Entity_AddDebugEditorFlags(game, result);
|
FP_Entity_AddDebugEditorFlags(game, result);
|
||||||
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
||||||
|
|
||||||
@ -517,7 +538,12 @@ static FP_GameEntityHandle FP_Entity_CreateMerchantGym(FP_Game *game, Dqn_V2 pos
|
|||||||
|
|
||||||
entity->type = FP_EntityType_MerchantGym;
|
entity->type = FP_EntityType_MerchantGym;
|
||||||
entity->local_pos = pos;
|
entity->local_pos = pos;
|
||||||
entity->sprite_height = FP_Entity_GetRenderData(game, entity->type, 0 /*state*/, FP_GameDirection_Down).height;
|
|
||||||
|
FP_EntityRenderData render_data = FP_Entity_GetRenderData(game, entity->type, 0, FP_GameDirection_Down);
|
||||||
|
entity->sprite_height = render_data.height;
|
||||||
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
|
FP_Game_EntityActionReset(game, result, duration_ms, render_data.sprite);
|
||||||
|
|
||||||
FP_Entity_AddDebugEditorFlags(game, result);
|
FP_Entity_AddDebugEditorFlags(game, result);
|
||||||
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
||||||
|
|
||||||
@ -541,7 +567,12 @@ static FP_GameEntityHandle FP_Entity_CreateMerchantPhoneCompany(FP_Game *game, D
|
|||||||
|
|
||||||
entity->type = FP_EntityType_MerchantPhoneCompany;
|
entity->type = FP_EntityType_MerchantPhoneCompany;
|
||||||
entity->local_pos = pos;
|
entity->local_pos = pos;
|
||||||
entity->sprite_height = FP_Entity_GetRenderData(game, entity->type, 0 /*state*/, FP_GameDirection_Down).height;
|
|
||||||
|
FP_EntityRenderData render_data = FP_Entity_GetRenderData(game, entity->type, 0, FP_GameDirection_Down);
|
||||||
|
entity->sprite_height = render_data.height;
|
||||||
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
|
FP_Game_EntityActionReset(game, result, duration_ms, render_data.sprite);
|
||||||
|
|
||||||
FP_Entity_AddDebugEditorFlags(game, result);
|
FP_Entity_AddDebugEditorFlags(game, result);
|
||||||
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
||||||
|
|
||||||
@ -565,7 +596,12 @@ static FP_GameEntityHandle FP_Entity_CreateClubTerry(FP_Game *game, Dqn_V2 pos,
|
|||||||
|
|
||||||
entity->type = FP_EntityType_ClubTerry;
|
entity->type = FP_EntityType_ClubTerry;
|
||||||
entity->local_pos = pos;
|
entity->local_pos = pos;
|
||||||
entity->sprite_height = FP_Entity_GetRenderData(game, entity->type, 0 /*state*/, FP_GameDirection_Down).height;
|
|
||||||
|
FP_EntityRenderData render_data = FP_Entity_GetRenderData(game, entity->type, 0, FP_GameDirection_Down);
|
||||||
|
entity->sprite_height = render_data.height;
|
||||||
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
|
FP_Game_EntityActionReset(game, result, duration_ms, render_data.sprite);
|
||||||
|
|
||||||
FP_Entity_AddDebugEditorFlags(game, result);
|
FP_Entity_AddDebugEditorFlags(game, result);
|
||||||
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
||||||
|
|
||||||
@ -589,7 +625,12 @@ static FP_GameEntityHandle FP_Entity_CreateHeart(FP_Game *game, Dqn_V2 pos, DQN_
|
|||||||
|
|
||||||
entity->type = FP_EntityType_Heart;
|
entity->type = FP_EntityType_Heart;
|
||||||
entity->local_pos = pos;
|
entity->local_pos = pos;
|
||||||
entity->sprite_height = FP_Entity_GetRenderData(game, entity->type, 0 /*state*/, FP_GameDirection_Down).height;
|
|
||||||
|
FP_EntityRenderData render_data = FP_Entity_GetRenderData(game, entity->type, 0, FP_GameDirection_Down);
|
||||||
|
entity->sprite_height = render_data.height;
|
||||||
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
|
FP_Game_EntityActionReset(game, result, duration_ms, render_data.sprite);
|
||||||
|
|
||||||
FP_Entity_AddDebugEditorFlags(game, result);
|
FP_Entity_AddDebugEditorFlags(game, result);
|
||||||
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
||||||
|
|
||||||
@ -613,7 +654,12 @@ static FP_GameEntityHandle FP_Entity_CreateChurchTerry(FP_Game *game, Dqn_V2 pos
|
|||||||
|
|
||||||
entity->type = FP_EntityType_ChurchTerry;
|
entity->type = FP_EntityType_ChurchTerry;
|
||||||
entity->local_pos = pos;
|
entity->local_pos = pos;
|
||||||
entity->sprite_height = FP_Entity_GetRenderData(game, entity->type, 0 /*state*/, FP_GameDirection_Down).height;
|
|
||||||
|
FP_EntityRenderData render_data = FP_Entity_GetRenderData(game, entity->type, 0, FP_GameDirection_Down);
|
||||||
|
entity->sprite_height = render_data.height;
|
||||||
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
|
FP_Game_EntityActionReset(game, result, duration_ms, render_data.sprite);
|
||||||
|
|
||||||
FP_Entity_AddDebugEditorFlags(game, result);
|
FP_Entity_AddDebugEditorFlags(game, result);
|
||||||
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
||||||
|
|
||||||
@ -637,7 +683,12 @@ static FP_GameEntityHandle FP_Entity_CreateKennelTerry(FP_Game *game, Dqn_V2 pos
|
|||||||
|
|
||||||
entity->type = FP_EntityType_KennelTerry;
|
entity->type = FP_EntityType_KennelTerry;
|
||||||
entity->local_pos = pos;
|
entity->local_pos = pos;
|
||||||
entity->sprite_height = FP_Entity_GetRenderData(game, entity->type, 0 /*state*/, FP_GameDirection_Down).height;
|
|
||||||
|
FP_EntityRenderData render_data = FP_Entity_GetRenderData(game, entity->type, 0, FP_GameDirection_Down);
|
||||||
|
entity->sprite_height = render_data.height;
|
||||||
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
|
FP_Game_EntityActionReset(game, result, duration_ms, render_data.sprite);
|
||||||
|
|
||||||
FP_Entity_AddDebugEditorFlags(game, result);
|
FP_Entity_AddDebugEditorFlags(game, result);
|
||||||
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
||||||
|
|
||||||
@ -661,7 +712,12 @@ static FP_GameEntityHandle FP_Entity_CreateAirportTerry(FP_Game *game, Dqn_V2 po
|
|||||||
|
|
||||||
entity->type = FP_EntityType_AirportTerry;
|
entity->type = FP_EntityType_AirportTerry;
|
||||||
entity->local_pos = pos;
|
entity->local_pos = pos;
|
||||||
entity->sprite_height = FP_Entity_GetRenderData(game, entity->type, 0 /*state*/, FP_GameDirection_Down).height;
|
|
||||||
|
FP_EntityRenderData render_data = FP_Entity_GetRenderData(game, entity->type, 0, FP_GameDirection_Down);
|
||||||
|
entity->sprite_height = render_data.height;
|
||||||
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
|
FP_Game_EntityActionReset(game, result, duration_ms, render_data.sprite);
|
||||||
|
|
||||||
FP_Entity_AddDebugEditorFlags(game, result);
|
FP_Entity_AddDebugEditorFlags(game, result);
|
||||||
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
||||||
|
|
||||||
@ -684,11 +740,15 @@ static FP_GameEntityHandle FP_Entity_CreatePhoneMessageProjectile(FP_Game *game,
|
|||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
entity->type = FP_EntityType_PhoneMessageProjectile;
|
entity->type = FP_EntityType_PhoneMessageProjectile;
|
||||||
FP_EntityRenderData render_data = FP_Entity_GetRenderData(game, entity->type, 0, FP_GameDirection_Down);
|
|
||||||
|
|
||||||
entity->constant_acceleration_per_s = velocity;
|
entity->constant_acceleration_per_s = velocity;
|
||||||
entity->local_pos = pos;
|
entity->local_pos = pos;
|
||||||
entity->sprite_height = render_data.height;
|
|
||||||
|
FP_EntityRenderData render_data = FP_Entity_GetRenderData(game, entity->type, 0, FP_GameDirection_Down);
|
||||||
|
entity->sprite_height = render_data.height;
|
||||||
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
|
FP_Game_EntityActionReset(game, result, duration_ms, render_data.sprite);
|
||||||
|
|
||||||
FP_Entity_AddDebugEditorFlags(game, result);
|
FP_Entity_AddDebugEditorFlags(game, result);
|
||||||
entity->flags |= FP_GameEntityFlag_TTL;
|
entity->flags |= FP_GameEntityFlag_TTL;
|
||||||
|
|
||||||
@ -699,10 +759,6 @@ static FP_GameEntityHandle FP_Entity_CreatePhoneMessageProjectile(FP_Game *game,
|
|||||||
entity->ttl_end_timestamp = game->clock_ms + 1000;
|
entity->ttl_end_timestamp = game->clock_ms + 1000;
|
||||||
entity->projectile_owner = owner;
|
entity->projectile_owner = owner;
|
||||||
entity->faction = FP_GameEntityFaction_Friendly;
|
entity->faction = FP_GameEntityFaction_Friendly;
|
||||||
|
|
||||||
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
|
||||||
FP_Game_EntityActionReset(game, result, duration_ms, render_data.sprite);
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -714,19 +770,19 @@ static FP_GameEntityHandle FP_Entity_CreatePortalMonkey(FP_Game *game, Dqn_V2 po
|
|||||||
FP_GameEntityHandle result = entity->handle;
|
FP_GameEntityHandle result = entity->handle;
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
entity->type = FP_EntityType_PortalMonkey;
|
entity->type = FP_EntityType_PortalMonkey;
|
||||||
FP_EntityRenderData render_data = FP_Entity_GetRenderData(game, entity->type, 0, FP_GameDirection_Down);
|
entity->local_pos = pos;
|
||||||
|
|
||||||
|
FP_EntityRenderData render_data = FP_Entity_GetRenderData(game, entity->type, 0, FP_GameDirection_Down);
|
||||||
|
entity->sprite_height = render_data.height;
|
||||||
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
|
FP_Game_EntityActionReset(game, result, duration_ms, render_data.sprite);
|
||||||
|
|
||||||
entity->local_pos = pos;
|
|
||||||
entity->sprite_height = render_data.height;
|
|
||||||
FP_Entity_AddDebugEditorFlags(game, result);
|
FP_Entity_AddDebugEditorFlags(game, result);
|
||||||
|
|
||||||
entity->local_hit_box_offset = Dqn_V2_InitNx2(0, render_data.render_size.h * .1f);
|
entity->local_hit_box_offset = Dqn_V2_InitNx2(0, render_data.render_size.h * .1f);
|
||||||
entity->local_hit_box_size = Dqn_V2_InitNx2(render_data.render_size.w, render_data.render_size.h - (render_data.render_size.h * .4f));
|
entity->local_hit_box_size = Dqn_V2_InitNx2(render_data.render_size.w, render_data.render_size.h - (render_data.render_size.h * .4f));
|
||||||
|
|
||||||
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
|
||||||
FP_Game_EntityActionReset(game, result, duration_ms, render_data.sprite);
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -740,18 +796,16 @@ static FP_GameEntityHandle FP_Entity_CreateAirportTerryPlane(FP_Game *game, Dqn_
|
|||||||
|
|
||||||
entity->type = FP_EntityType_AirportTerryPlane;
|
entity->type = FP_EntityType_AirportTerryPlane;
|
||||||
FP_EntityRenderData render_data = FP_Entity_GetRenderData(game, entity->type, 0, FP_GameDirection_Down);
|
FP_EntityRenderData render_data = FP_Entity_GetRenderData(game, entity->type, 0, FP_GameDirection_Down);
|
||||||
|
entity->sprite_height = render_data.height;
|
||||||
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
|
FP_Game_EntityActionReset(game, result, duration_ms, render_data.sprite);
|
||||||
|
|
||||||
entity->local_pos = pos;
|
entity->local_pos = pos;
|
||||||
entity->sprite_height = render_data.height;
|
|
||||||
entity->flags |= FP_GameEntityFlag_NoClip;
|
entity->flags |= FP_GameEntityFlag_NoClip;
|
||||||
FP_Entity_AddDebugEditorFlags(game, result);
|
FP_Entity_AddDebugEditorFlags(game, result);
|
||||||
|
|
||||||
entity->local_hit_box_offset = Dqn_V2_InitNx2(0, render_data.render_size.h * .1f);
|
entity->local_hit_box_offset = Dqn_V2_InitNx2(0, render_data.render_size.h * .1f);
|
||||||
entity->local_hit_box_size = Dqn_V2_InitNx2(render_data.render_size.w, render_data.render_size.h - (render_data.render_size.h * .4f));
|
entity->local_hit_box_size = Dqn_V2_InitNx2(render_data.render_size.w, render_data.render_size.h - (render_data.render_size.h * .4f));
|
||||||
entity->base_acceleration_per_s.meters = 32.f;
|
entity->base_acceleration_per_s.meters = 32.f;
|
||||||
|
|
||||||
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
|
||||||
FP_Game_EntityActionReset(game, result, duration_ms, render_data.sprite);
|
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -229,15 +229,15 @@ static FP_GameEntity *FP_Game_MakeEntityPointerFV(FP_Game *game, DQN_FMT_STRING_
|
|||||||
result->hp_cap = FP_DEFAULT_DAMAGE;
|
result->hp_cap = FP_DEFAULT_DAMAGE;
|
||||||
result->hp = result->hp_cap;
|
result->hp = result->hp_cap;
|
||||||
|
|
||||||
result->inventory.airports_base_price = 4;
|
result->inventory.airports_base_price = 100;
|
||||||
result->inventory.churchs_base_price = 2;
|
result->inventory.churchs_base_price = 50;
|
||||||
result->inventory.kennels_base_price = 2;
|
result->inventory.kennels_base_price = 50;
|
||||||
result->inventory.clubs_base_price = 2;
|
result->inventory.clubs_base_price = 50;
|
||||||
|
|
||||||
result->inventory.stamina_base_price = 2;
|
result->inventory.stamina_base_price = 10;
|
||||||
result->inventory.health_base_price = 2;
|
result->inventory.health_base_price = 10;
|
||||||
result->inventory.mobile_plan_base_price = 2;
|
result->inventory.mobile_plan_base_price = 10;
|
||||||
result->inventory.attack_base_price = 2;
|
result->inventory.attack_base_price = 10;
|
||||||
|
|
||||||
|
|
||||||
// NOTE: Attach entity as a child to the parent
|
// NOTE: Attach entity as a child to the parent
|
||||||
|
@ -223,9 +223,9 @@ struct FP_GameEntity
|
|||||||
|
|
||||||
Dqn_usize coins;
|
Dqn_usize coins;
|
||||||
FP_GameInventory inventory;
|
FP_GameInventory inventory;
|
||||||
uint16_t hp;
|
Dqn_f32 hp;
|
||||||
uint16_t hp_cap;
|
uint16_t hp_cap;
|
||||||
uint16_t stamina;
|
Dqn_f32 stamina;
|
||||||
uint16_t stamina_cap;
|
uint16_t stamina_cap;
|
||||||
|
|
||||||
bool converted_faction;
|
bool converted_faction;
|
||||||
@ -263,11 +263,17 @@ enum FP_GameAudio
|
|||||||
FP_GameAudio_Count,
|
FP_GameAudio_Count,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FP_GameActiveMenu
|
enum FP_GameInGameMenu
|
||||||
{
|
{
|
||||||
FP_GameActiveMenu_Nil,
|
FP_GameInGameMenu_Nil,
|
||||||
FP_GameActiveMenu_Build,
|
FP_GameInGameMenu_Build,
|
||||||
FP_GameActiveMenu_Merchant,
|
FP_GameInGameMenu_Merchant,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum FP_GameState
|
||||||
|
{
|
||||||
|
FP_GameState_IntroScreen,
|
||||||
|
FP_GameState_Play,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FP_Game
|
struct FP_Game
|
||||||
@ -275,6 +281,7 @@ struct FP_Game
|
|||||||
Dqn_f32 delta_s_accumulator;
|
Dqn_f32 delta_s_accumulator;
|
||||||
uint16_t tile_size;
|
uint16_t tile_size;
|
||||||
TELY_ChunkPool *chunk_pool;
|
TELY_ChunkPool *chunk_pool;
|
||||||
|
TELY_AssetFontHandle inter_regular_font_large;
|
||||||
TELY_AssetFontHandle inter_regular_font;
|
TELY_AssetFontHandle inter_regular_font;
|
||||||
TELY_AssetFontHandle inter_italic_font;
|
TELY_AssetFontHandle inter_italic_font;
|
||||||
TELY_AssetFontHandle jetbrains_mono_font;
|
TELY_AssetFontHandle jetbrains_mono_font;
|
||||||
@ -319,7 +326,7 @@ struct FP_Game
|
|||||||
Dqn_PCG32 rng;
|
Dqn_PCG32 rng;
|
||||||
|
|
||||||
bool debug_ui;
|
bool debug_ui;
|
||||||
FP_GameActiveMenu active_menu;
|
FP_GameInGameMenu in_game_menu;
|
||||||
bool build_mode_can_place_building;
|
bool build_mode_can_place_building;
|
||||||
Dqn_usize build_mode_building_index;
|
Dqn_usize build_mode_building_index;
|
||||||
|
|
||||||
@ -330,6 +337,8 @@ struct FP_Game
|
|||||||
uint32_t enemies_per_wave;
|
uint32_t enemies_per_wave;
|
||||||
uint32_t enemies_spawned_this_wave;
|
uint32_t enemies_spawned_this_wave;
|
||||||
uint64_t wave_cooldown_timestamp_ms;
|
uint64_t wave_cooldown_timestamp_ms;
|
||||||
|
|
||||||
|
FP_GameState state;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct FP_GameAStarNode
|
struct FP_GameAStarNode
|
||||||
|
Loading…
Reference in New Issue
Block a user