fp: Integrate new merchants
This commit is contained in:
parent
abe646e0eb
commit
dce637d804
BIN
Data/Textures/atlas.png
(Stored with Git LFS)
BIN
Data/Textures/atlas.png
(Stored with Git LFS)
Binary file not shown.
BIN
Data/Textures/atlas.txt
(Stored with Git LFS)
BIN
Data/Textures/atlas.txt
(Stored with Git LFS)
Binary file not shown.
BIN
Data/Textures/atlas/club_terry_alive_2.png
(Stored with Git LFS)
Normal file
BIN
Data/Textures/atlas/club_terry_alive_2.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Textures/atlas/merchant_graveyard_1.png
(Stored with Git LFS)
Normal file
BIN
Data/Textures/atlas/merchant_graveyard_1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Textures/atlas/merchant_graveyard_2.png
(Stored with Git LFS)
Normal file
BIN
Data/Textures/atlas/merchant_graveyard_2.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Textures/atlas/merchant_gym_1.png
(Stored with Git LFS)
Normal file
BIN
Data/Textures/atlas/merchant_gym_1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Textures/atlas/merchant_gym_2.png
(Stored with Git LFS)
Normal file
BIN
Data/Textures/atlas/merchant_gym_2.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Textures/atlas/merchant_phone_company_1.png
(Stored with Git LFS)
Normal file
BIN
Data/Textures/atlas/merchant_phone_company_1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Textures/atlas/merchant_phone_company_2.png
(Stored with Git LFS)
Normal file
BIN
Data/Textures/atlas/merchant_phone_company_2.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Textures/atlas/merchant_terry_1.png
(Stored with Git LFS)
Normal file
BIN
Data/Textures/atlas/merchant_terry_1.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Textures/atlas/merchant_terry_2.png
(Stored with Git LFS)
Normal file
BIN
Data/Textures/atlas/merchant_terry_2.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Textures/atlas/shadow_long_circle.png
(Stored with Git LFS)
Normal file
BIN
Data/Textures/atlas/shadow_long_circle.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Textures/atlas/shadow_tight_circle.png
(Stored with Git LFS)
Normal file
BIN
Data/Textures/atlas/shadow_tight_circle.png
(Stored with Git LFS)
Normal file
Binary file not shown.
BIN
Data/Textures/atlas/smoochie_death_1.png
(Stored with Git LFS)
BIN
Data/Textures/atlas/smoochie_death_1.png
(Stored with Git LFS)
Binary file not shown.
BIN
Data/Textures/atlas/smoochie_death_2.png
(Stored with Git LFS)
BIN
Data/Textures/atlas/smoochie_death_2.png
(Stored with Git LFS)
Binary file not shown.
BIN
Data/Textures/atlas/smoochie_death_3.png
(Stored with Git LFS)
BIN
Data/Textures/atlas/smoochie_death_3.png
(Stored with Git LFS)
Binary file not shown.
BIN
Data/Textures/atlas/smoochie_death_4.png
(Stored with Git LFS)
BIN
Data/Textures/atlas/smoochie_death_4.png
(Stored with Git LFS)
Binary file not shown.
BIN
Data/Textures/atlas/smoochie_death_5.png
(Stored with Git LFS)
BIN
Data/Textures/atlas/smoochie_death_5.png
(Stored with Git LFS)
Binary file not shown.
BIN
Data/Textures/atlas/smoochie_death_6.png
(Stored with Git LFS)
BIN
Data/Textures/atlas/smoochie_death_6.png
(Stored with Git LFS)
Binary file not shown.
BIN
Data/Textures/atlas/smoochie_death_7.png
(Stored with Git LFS)
BIN
Data/Textures/atlas/smoochie_death_7.png
(Stored with Git LFS)
Binary file not shown.
BIN
Data/Textures/atlas/terry_merchant_01.png
(Stored with Git LFS)
BIN
Data/Textures/atlas/terry_merchant_01.png
(Stored with Git LFS)
Binary file not shown.
BIN
Data/Textures/atlas/terry_merchant_02.png
(Stored with Git LFS)
BIN
Data/Textures/atlas/terry_merchant_02.png
(Stored with Git LFS)
Binary file not shown.
BIN
Data/Textures/sprite_spec.txt
(Stored with Git LFS)
BIN
Data/Textures/sprite_spec.txt
(Stored with Git LFS)
Binary file not shown.
185
feely_pona.cpp
185
feely_pona.cpp
@ -142,12 +142,16 @@ static void FP_Game_MoveEntity(FP_Game *game, FP_GameEntityHandle entity_handle,
|
|||||||
entity_collides_with_collider = false;
|
entity_collides_with_collider = false;
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case FP_EntityType_Nil: /*FALLTRHU*/
|
case FP_EntityType_Nil: break;
|
||||||
case FP_EntityType_Terry: /*FALLTRHU*/
|
case FP_EntityType_Terry: break;
|
||||||
case FP_EntityType_Merchant: /*FALLTRHU*/
|
case FP_EntityType_MerchantTerry: break;
|
||||||
case FP_EntityType_Count: break;
|
case FP_EntityType_Count: break;
|
||||||
case FP_EntityType_ClubTerry: break;
|
case FP_EntityType_ClubTerry: break;
|
||||||
case FP_EntityType_Map: break;
|
case FP_EntityType_Map: break;
|
||||||
|
case FP_EntityType_MerchantGraveyard: break;
|
||||||
|
case FP_EntityType_MerchantGym: break;
|
||||||
|
case FP_EntityType_MerchantPhoneCompany: break;
|
||||||
|
case FP_EntityType_Heart: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!entity_collides_with_collider)
|
if (!entity_collides_with_collider)
|
||||||
@ -302,54 +306,26 @@ void TELY_DLL_Init(void *user_data)
|
|||||||
game->player = terry;
|
game->player = terry;
|
||||||
}
|
}
|
||||||
|
|
||||||
FP_Entity_CreateMerchant(game, Dqn_V2_InitNx2(1018, -351), "Merchant");
|
{
|
||||||
FP_Entity_CreateClubTerry(game, Dqn_V2_InitNx2(1000, 400), "Club Terry");
|
Dqn_V2 base_top_left_pos = Dqn_V2_InitNx2(1018, -335);
|
||||||
|
Dqn_V2 base_bottom_right_pos = Dqn_V2_InitNx2(2118, +351);
|
||||||
|
|
||||||
|
Dqn_V2 base_top_left = base_top_left_pos;
|
||||||
|
Dqn_V2 base_top_right = Dqn_V2_InitNx2(base_bottom_right_pos.x, base_top_left_pos.y);
|
||||||
|
Dqn_V2 base_bottom_left = Dqn_V2_InitNx2(base_top_left_pos.x, base_bottom_right_pos.y);
|
||||||
|
Dqn_V2 base_bottom_right = Dqn_V2_InitNx2(base_bottom_right_pos.x, base_bottom_right_pos.y);
|
||||||
|
|
||||||
|
FP_Entity_CreateMerchantTerry(game, base_top_left, "Merchant");
|
||||||
|
FP_Entity_CreateMerchantGraveyard(game, base_bottom_left, "Graveyard");
|
||||||
|
FP_Entity_CreateMerchantGym(game, base_bottom_right, "Gym");
|
||||||
|
FP_Entity_CreateMerchantPhoneCompany(game, base_top_right, "PhoneCompany");
|
||||||
|
}
|
||||||
|
|
||||||
|
FP_Entity_CreateClubTerry(game, Dqn_V2_InitNx2(567, -191), "Club Terry");
|
||||||
|
|
||||||
game->tile_size = 37;
|
game->tile_size = 37;
|
||||||
Dqn_V2I max_tile = platform->core.window_size / game->tile_size;
|
Dqn_V2I max_tile = platform->core.window_size / game->tile_size;
|
||||||
|
|
||||||
// NOTE: Wall ==================================================================================
|
|
||||||
if (0) {
|
|
||||||
Dqn_V2I vert_wall_tile_size = Dqn_V2I_InitNx2(1, 12);
|
|
||||||
Dqn_V2I right_wall_tile_pos = Dqn_V2I_InitNx2(max_tile.x - vert_wall_tile_size.x - 0, (max_tile.y / 2.f) - (vert_wall_tile_size.y * .5f));
|
|
||||||
|
|
||||||
Dqn_V2I left_wall_top_tile = Dqn_V2I_InitNx2(max_tile.x - vert_wall_tile_size.x - 12, (max_tile.y / 2.f) - (vert_wall_tile_size.y * .5f));
|
|
||||||
Dqn_V2I left_wall_bottom_tile = Dqn_V2I_InitNx2(left_wall_top_tile.x, left_wall_top_tile.y + vert_wall_tile_size.y);
|
|
||||||
|
|
||||||
|
|
||||||
{
|
|
||||||
Dqn_V2I const vert_wall_part_tile_size = Dqn_V2I_InitNx2(1, (vert_wall_tile_size.y / 2) - 2);
|
|
||||||
FP_Entity_CreateWallAtTile(game, DQN_STRING8("Base left-top wall"), left_wall_top_tile, vert_wall_part_tile_size);
|
|
||||||
|
|
||||||
Dqn_V2I bottom_part_tile = Dqn_V2I_InitNx2(left_wall_top_tile.x, left_wall_top_tile.y + vert_wall_tile_size.y - vert_wall_part_tile_size.y);
|
|
||||||
FP_Entity_CreateWallAtTile(game, DQN_STRING8("Base left-bottom wall"), bottom_part_tile, vert_wall_part_tile_size);
|
|
||||||
}
|
|
||||||
|
|
||||||
FP_GameEntityHandle right_wall = FP_Entity_CreateWallAtTile(game, DQN_STRING8("Base right wall"), right_wall_tile_pos, vert_wall_tile_size);
|
|
||||||
Dqn_Rect right_wall_box = FP_Game_CalcEntityWorldHitBox(game, right_wall);
|
|
||||||
Dqn_V2I right_wall_bottom_tile = FP_Game_WorldPosToTilePos(game, right_wall_box.pos + Dqn_V2_InitNx2(0, right_wall_box.size.y));
|
|
||||||
Dqn_V2I right_wall_top_left_tile = FP_Game_WorldPosToTilePos(game, right_wall_box.pos);
|
|
||||||
|
|
||||||
{
|
|
||||||
Dqn_V2I hori_wall_tile_size = Dqn_V2I_InitNx2((right_wall_tile_pos.x - left_wall_top_tile.x - 1) / 2 - 1, 1);
|
|
||||||
{
|
|
||||||
Dqn_V2I bottom_left_wall_tile_pos = Dqn_V2I_InitNx2(left_wall_bottom_tile.x + 1, left_wall_bottom_tile.y - 1);
|
|
||||||
FP_Entity_CreateWallAtTile(game, DQN_STRING8("Base bottom-left wall"), bottom_left_wall_tile_pos, hori_wall_tile_size);
|
|
||||||
|
|
||||||
Dqn_V2I bottom_right_wall_tile_pos = Dqn_V2I_InitNx2(right_wall_bottom_tile.x - hori_wall_tile_size.x, right_wall_bottom_tile.y - 1);
|
|
||||||
FP_Entity_CreateWallAtTile(game, DQN_STRING8("Base bottom-right wall"), bottom_right_wall_tile_pos, hori_wall_tile_size);
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
|
||||||
Dqn_V2I top_left_wall_tile_pos = Dqn_V2I_InitNx2(left_wall_top_tile.x + 1, left_wall_top_tile.y);
|
|
||||||
FP_Entity_CreateWallAtTile(game, DQN_STRING8("Base top-left wall"), top_left_wall_tile_pos, hori_wall_tile_size);
|
|
||||||
|
|
||||||
Dqn_V2I top_right_wall_tile_pos = Dqn_V2I_InitNx2(right_wall_top_left_tile.x - hori_wall_tile_size.x, right_wall_top_left_tile.y);
|
|
||||||
FP_Entity_CreateWallAtTile(game, DQN_STRING8("Base top-right wall"), top_right_wall_tile_pos, hori_wall_tile_size);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// NOTE: Mid lane mob spawner ==================================================================
|
// NOTE: Mid lane mob spawner ==================================================================
|
||||||
Dqn_V2 base_mid_p = Dqn_V2_InitNx2(1580, 0.f);
|
Dqn_V2 base_mid_p = Dqn_V2_InitNx2(1580, 0.f);
|
||||||
Dqn_V2 mid_lane_mob_spawner_pos = Dqn_V2_InitNx2(game->map->local_hit_box_size.w * -0.5f, 0.f);
|
Dqn_V2 mid_lane_mob_spawner_pos = Dqn_V2_InitNx2(game->map->local_hit_box_size.w * -0.5f, 0.f);
|
||||||
@ -858,16 +834,69 @@ void FP_EntityActionStateMachine(FP_Game *game, TELY_Audio *audio, TELY_Platform
|
|||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case FP_EntityType_Merchant: {
|
case FP_EntityType_MerchantTerry: {
|
||||||
FP_EntityTerryMerchantState *state = DQN_CAST(FP_EntityTerryMerchantState *)&action->state;
|
FP_EntityMerchantTerryState *state = DQN_CAST(FP_EntityMerchantTerryState *)&action->state;
|
||||||
switch (*state) {
|
switch (*state) {
|
||||||
case FP_EntityTerryMerchantState_Nil: {
|
case FP_EntityMerchantTerryState_Nil: {
|
||||||
action->next_state = FP_EntityTerryMerchantState_Idle;
|
action->next_state = FP_EntityMerchantTerryState_Idle;
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case FP_EntityTerryMerchantState_Idle: {
|
case FP_EntityMerchantTerryState_Idle: {
|
||||||
if (entering_new_state) {
|
if (entering_new_state) {
|
||||||
TELY_AssetAnimatedSprite sprite = TELY_Asset_MakeAnimatedSprite(sheet, g_anim_names.terry_merchant, TELY_AssetFlip_No);
|
TELY_AssetAnimatedSprite sprite = TELY_Asset_MakeAnimatedSprite(sheet, g_anim_names.merchant_terry, TELY_AssetFlip_No);
|
||||||
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
|
FP_Game_EntityActionReset(game, entity->handle, duration_ms, sprite);
|
||||||
|
}
|
||||||
|
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case FP_EntityType_MerchantPhoneCompany: {
|
||||||
|
FP_EntityMerchantPhoneCompanyState *state = DQN_CAST(FP_EntityMerchantPhoneCompanyState *)&action->state;
|
||||||
|
switch (*state) {
|
||||||
|
case FP_EntityMerchantPhoneCompanyState_Nil: {
|
||||||
|
action->next_state = FP_EntityMerchantPhoneCompanyState_Idle;
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case FP_EntityMerchantPhoneCompanyState_Idle: {
|
||||||
|
if (entering_new_state) {
|
||||||
|
TELY_AssetAnimatedSprite sprite = TELY_Asset_MakeAnimatedSprite(sheet, g_anim_names.merchant_phone_company, TELY_AssetFlip_No);
|
||||||
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
|
FP_Game_EntityActionReset(game, entity->handle, duration_ms, sprite);
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case FP_EntityType_MerchantGym: {
|
||||||
|
FP_EntityMerchantGymState *state = DQN_CAST(FP_EntityMerchantGymState *)&action->state;
|
||||||
|
switch (*state) {
|
||||||
|
case FP_EntityMerchantGymState_Nil: {
|
||||||
|
action->next_state = FP_EntityMerchantGymState_Idle;
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case FP_EntityMerchantGymState_Idle: {
|
||||||
|
if (entering_new_state) {
|
||||||
|
TELY_AssetAnimatedSprite sprite = TELY_Asset_MakeAnimatedSprite(sheet, g_anim_names.merchant_gym, TELY_AssetFlip_No);
|
||||||
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
|
FP_Game_EntityActionReset(game, entity->handle, duration_ms, sprite);
|
||||||
|
}
|
||||||
|
|
||||||
|
} break;
|
||||||
|
}
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case FP_EntityType_MerchantGraveyard: {
|
||||||
|
FP_EntityMerchantGraveyardState *state = DQN_CAST(FP_EntityMerchantGraveyardState *)&action->state;
|
||||||
|
switch (*state) {
|
||||||
|
case FP_EntityMerchantGraveyardState_Nil: {
|
||||||
|
action->next_state = FP_EntityMerchantGraveyardState_Idle;
|
||||||
|
} break;
|
||||||
|
|
||||||
|
case FP_EntityMerchantGraveyardState_Idle: {
|
||||||
|
if (entering_new_state) {
|
||||||
|
TELY_AssetAnimatedSprite sprite = TELY_Asset_MakeAnimatedSprite(sheet, g_anim_names.merchant_graveyard, TELY_AssetFlip_No);
|
||||||
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
uint64_t duration_ms = FP_GAME_ENTITY_ACTION_INFINITE_TIMER;
|
||||||
FP_Game_EntityActionReset(game, entity->handle, duration_ms, sprite);
|
FP_Game_EntityActionReset(game, entity->handle, duration_ms, sprite);
|
||||||
}
|
}
|
||||||
@ -1032,11 +1061,14 @@ void FP_Update(TELY_Platform *platform, FP_Game *game, TELY_PlatformInput *input
|
|||||||
move_entity = *state == FP_EntityClingerState_Run || *state == FP_EntityClingerState_Idle;
|
move_entity = *state == FP_EntityClingerState_Run || *state == FP_EntityClingerState_Idle;
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case FP_EntityType_Merchant: break;
|
case FP_EntityType_Nil: break;
|
||||||
case FP_EntityType_Nil: break;
|
case FP_EntityType_ClubTerry: break;
|
||||||
case FP_EntityType_ClubTerry: break;
|
case FP_EntityType_Count: break;
|
||||||
case FP_EntityType_Count: break;
|
case FP_EntityType_Map: break;
|
||||||
case FP_EntityType_Map: break;
|
case FP_EntityType_MerchantTerry: break;
|
||||||
|
case FP_EntityType_MerchantGraveyard: break;
|
||||||
|
case FP_EntityType_MerchantPhoneCompany: break;
|
||||||
|
case FP_EntityType_Heart: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (move_entity) {
|
if (move_entity) {
|
||||||
@ -1259,9 +1291,6 @@ void FP_Update(TELY_Platform *platform, FP_Game *game, TELY_PlatformInput *input
|
|||||||
}
|
}
|
||||||
|
|
||||||
switch (entity->type) {
|
switch (entity->type) {
|
||||||
case FP_EntityType_Nil: /*FALLTHRU*/
|
|
||||||
case FP_EntityType_Merchant: break;
|
|
||||||
|
|
||||||
case FP_EntityType_Terry: /*FALLTHRU*/
|
case FP_EntityType_Terry: /*FALLTHRU*/
|
||||||
case FP_EntityType_Smoochie: /*FALLTHRU*/
|
case FP_EntityType_Smoochie: /*FALLTHRU*/
|
||||||
case FP_EntityType_Clinger: {
|
case FP_EntityType_Clinger: {
|
||||||
@ -1280,9 +1309,15 @@ void FP_Update(TELY_Platform *platform, FP_Game *game, TELY_PlatformInput *input
|
|||||||
} break;
|
} break;
|
||||||
|
|
||||||
case FP_EntityType_Count: DQN_INVALID_CODE_PATH; break;
|
case FP_EntityType_Count: DQN_INVALID_CODE_PATH; break;
|
||||||
case FP_EntityType_ClubTerry: break;
|
|
||||||
case FP_EntityType_Map: break;
|
case FP_EntityType_Nil: break;
|
||||||
case FP_EntityType_Heart: break;
|
case FP_EntityType_ClubTerry: break;
|
||||||
|
case FP_EntityType_Map: break;
|
||||||
|
case FP_EntityType_Heart: break;
|
||||||
|
case FP_EntityType_MerchantTerry: break;
|
||||||
|
case FP_EntityType_MerchantGraveyard: break;
|
||||||
|
case FP_EntityType_MerchantGym: break;
|
||||||
|
case FP_EntityType_MerchantPhoneCompany: break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1422,12 +1457,16 @@ void FP_Update(TELY_Platform *platform, FP_Game *game, TELY_PlatformInput *input
|
|||||||
permit_attack = false;
|
permit_attack = false;
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
case FP_EntityType_Nil: /*FALLTRHU*/
|
case FP_EntityType_Nil: break;
|
||||||
case FP_EntityType_Terry: /*FALLTRHU*/
|
case FP_EntityType_Terry: break;
|
||||||
case FP_EntityType_Merchant: /*FALLTRHU*/
|
case FP_EntityType_Count: break;
|
||||||
case FP_EntityType_Count: break;
|
case FP_EntityType_ClubTerry: break;
|
||||||
case FP_EntityType_ClubTerry: break;
|
case FP_EntityType_Map: break;
|
||||||
case FP_EntityType_Map: break;
|
case FP_EntityType_MerchantTerry: break;
|
||||||
|
case FP_EntityType_MerchantGraveyard: break;
|
||||||
|
case FP_EntityType_MerchantGym: break;
|
||||||
|
case FP_EntityType_MerchantPhoneCompany: break;
|
||||||
|
case FP_EntityType_Heart: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!permit_attack)
|
if (!permit_attack)
|
||||||
|
47
feely_pona.h
47
feely_pona.h
@ -23,28 +23,10 @@ struct FP_Meters
|
|||||||
|
|
||||||
struct FP_GlobalAnimations
|
struct FP_GlobalAnimations
|
||||||
{
|
{
|
||||||
Dqn_String8 terry_walk_idle = DQN_STRING8("terry_walk_idle");
|
|
||||||
Dqn_String8 terry_walk_up = DQN_STRING8("terry_walk_up");
|
|
||||||
Dqn_String8 terry_walk_down = DQN_STRING8("terry_walk_down");
|
|
||||||
Dqn_String8 terry_walk_left = DQN_STRING8("terry_walk_left");
|
|
||||||
Dqn_String8 terry_walk_right = DQN_STRING8("terry_walk_right");
|
|
||||||
Dqn_String8 terry_attack_up = DQN_STRING8("terry_attack_up");
|
|
||||||
Dqn_String8 terry_attack_side = DQN_STRING8("terry_attack_side");
|
|
||||||
Dqn_String8 terry_attack_down = DQN_STRING8("terry_attack_down");
|
|
||||||
Dqn_String8 terry_merchant = DQN_STRING8("terry_merchant");
|
|
||||||
|
|
||||||
Dqn_String8 smoochie_walk_up = DQN_STRING8("smoochie_walk_up");
|
|
||||||
Dqn_String8 smoochie_walk_down = DQN_STRING8("smoochie_walk_down");
|
|
||||||
Dqn_String8 smoochie_walk_left = DQN_STRING8("smoochie_walk_left");
|
|
||||||
Dqn_String8 smoochie_walk_right = DQN_STRING8("smoochie_walk_right");
|
|
||||||
Dqn_String8 smoochie_attack_down = DQN_STRING8("smoochie_attack_down");
|
|
||||||
Dqn_String8 smoochie_hurt_side = DQN_STRING8("smoochie_hurt_side");
|
|
||||||
Dqn_String8 smoochie_attack_heart = DQN_STRING8("smoochie_attack_heart");
|
|
||||||
Dqn_String8 smoochie_death = DQN_STRING8("smoochie_death");
|
|
||||||
|
|
||||||
Dqn_String8 clinger_attack_down = DQN_STRING8("clinger_attack_down");
|
Dqn_String8 clinger_attack_down = DQN_STRING8("clinger_attack_down");
|
||||||
Dqn_String8 clinger_attack_side = DQN_STRING8("clinger_attack_side");
|
Dqn_String8 clinger_attack_side = DQN_STRING8("clinger_attack_side");
|
||||||
Dqn_String8 clinger_attack_up = DQN_STRING8("clinger_attack_up");
|
Dqn_String8 clinger_attack_up = DQN_STRING8("clinger_attack_up");
|
||||||
|
|
||||||
Dqn_String8 clinger_death = DQN_STRING8("clinger_death");
|
Dqn_String8 clinger_death = DQN_STRING8("clinger_death");
|
||||||
Dqn_String8 clinger_walk_up = DQN_STRING8("clinger_walk_up");
|
Dqn_String8 clinger_walk_up = DQN_STRING8("clinger_walk_up");
|
||||||
Dqn_String8 clinger_walk_down = DQN_STRING8("clinger_walk_down");
|
Dqn_String8 clinger_walk_down = DQN_STRING8("clinger_walk_down");
|
||||||
@ -56,6 +38,33 @@ struct FP_GlobalAnimations
|
|||||||
Dqn_String8 heart_bleed = DQN_STRING8("heart_bleed");
|
Dqn_String8 heart_bleed = DQN_STRING8("heart_bleed");
|
||||||
|
|
||||||
Dqn_String8 map = DQN_STRING8("map");
|
Dqn_String8 map = DQN_STRING8("map");
|
||||||
|
|
||||||
|
Dqn_String8 merchant_graveyard = DQN_STRING8("merchant_graveyard");
|
||||||
|
Dqn_String8 merchant_gym = DQN_STRING8("merchant_gym");
|
||||||
|
Dqn_String8 merchant_phone_company= DQN_STRING8("merchant_phone_company");
|
||||||
|
Dqn_String8 merchant_terry = DQN_STRING8("merchant_terry");
|
||||||
|
|
||||||
|
Dqn_String8 shadow_long_circle = DQN_STRING8("shadow_long_circle");
|
||||||
|
Dqn_String8 shadow_tight_circle = DQN_STRING8("shadow_tight_circle");
|
||||||
|
|
||||||
|
Dqn_String8 smoochie_walk_up = DQN_STRING8("smoochie_walk_up");
|
||||||
|
Dqn_String8 smoochie_walk_down = DQN_STRING8("smoochie_walk_down");
|
||||||
|
Dqn_String8 smoochie_walk_left = DQN_STRING8("smoochie_walk_left");
|
||||||
|
Dqn_String8 smoochie_walk_right = DQN_STRING8("smoochie_walk_right");
|
||||||
|
Dqn_String8 smoochie_attack_down = DQN_STRING8("smoochie_attack_down");
|
||||||
|
Dqn_String8 smoochie_hurt_side = DQN_STRING8("smoochie_hurt_side");
|
||||||
|
Dqn_String8 smoochie_attack_heart = DQN_STRING8("smoochie_attack_heart");
|
||||||
|
Dqn_String8 smoochie_death = DQN_STRING8("smoochie_death");
|
||||||
|
|
||||||
|
Dqn_String8 terry_attack_up = DQN_STRING8("terry_attack_up");
|
||||||
|
Dqn_String8 terry_attack_side = DQN_STRING8("terry_attack_side");
|
||||||
|
Dqn_String8 terry_attack_down = DQN_STRING8("terry_attack_down");
|
||||||
|
|
||||||
|
Dqn_String8 terry_walk_idle = DQN_STRING8("terry_walk_idle");
|
||||||
|
Dqn_String8 terry_walk_up = DQN_STRING8("terry_walk_up");
|
||||||
|
Dqn_String8 terry_walk_down = DQN_STRING8("terry_walk_down");
|
||||||
|
Dqn_String8 terry_walk_left = DQN_STRING8("terry_walk_left");
|
||||||
|
Dqn_String8 terry_walk_right = DQN_STRING8("terry_walk_right");
|
||||||
}
|
}
|
||||||
g_anim_names;
|
g_anim_names;
|
||||||
|
|
||||||
|
@ -9,7 +9,10 @@ enum FP_EntityType
|
|||||||
FP_EntityType_Map,
|
FP_EntityType_Map,
|
||||||
FP_EntityType_Terry,
|
FP_EntityType_Terry,
|
||||||
FP_EntityType_Smoochie,
|
FP_EntityType_Smoochie,
|
||||||
FP_EntityType_Merchant,
|
FP_EntityType_MerchantTerry,
|
||||||
|
FP_EntityType_MerchantGraveyard,
|
||||||
|
FP_EntityType_MerchantGym,
|
||||||
|
FP_EntityType_MerchantPhoneCompany,
|
||||||
FP_EntityType_ClubTerry,
|
FP_EntityType_ClubTerry,
|
||||||
FP_EntityType_Clinger,
|
FP_EntityType_Clinger,
|
||||||
FP_EntityType_Heart,
|
FP_EntityType_Heart,
|
||||||
@ -45,10 +48,28 @@ enum FP_EntityClingerState
|
|||||||
FP_EntityClingerState_Run,
|
FP_EntityClingerState_Run,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FP_EntityTerryMerchantState
|
enum FP_EntityMerchantTerryState
|
||||||
{
|
{
|
||||||
FP_EntityTerryMerchantState_Nil,
|
FP_EntityMerchantTerryState_Nil,
|
||||||
FP_EntityTerryMerchantState_Idle,
|
FP_EntityMerchantTerryState_Idle,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum FP_EntityMerchantGymState
|
||||||
|
{
|
||||||
|
FP_EntityMerchantGymState_Nil,
|
||||||
|
FP_EntityMerchantGymState_Idle,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum FP_EntityMerchantPhoneCompanyState
|
||||||
|
{
|
||||||
|
FP_EntityMerchantPhoneCompanyState_Nil,
|
||||||
|
FP_EntityMerchantPhoneCompanyState_Idle,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum FP_EntityMerchantGraveyardState
|
||||||
|
{
|
||||||
|
FP_EntityMerchantGraveyardState_Nil,
|
||||||
|
FP_EntityMerchantGraveyardState_Idle,
|
||||||
};
|
};
|
||||||
|
|
||||||
enum FP_EntityClubTerryState
|
enum FP_EntityClubTerryState
|
||||||
|
@ -150,7 +150,7 @@ static FP_GameEntityHandle FP_Entity_CreateTerry(FP_Game *game, Dqn_V2 pos, DQN_
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static FP_GameEntityHandle FP_Entity_CreateMerchant(FP_Game *game, Dqn_V2 pos, DQN_FMT_STRING_ANNOTATE char const *fmt, ...)
|
static FP_GameEntityHandle FP_Entity_CreateMerchantTerry(FP_Game *game, Dqn_V2 pos, DQN_FMT_STRING_ANNOTATE char const *fmt, ...)
|
||||||
{
|
{
|
||||||
va_list args;
|
va_list args;
|
||||||
va_start(args, fmt);
|
va_start(args, fmt);
|
||||||
@ -158,7 +158,61 @@ static FP_GameEntityHandle FP_Entity_CreateMerchant(FP_Game *game, Dqn_V2 pos, D
|
|||||||
FP_GameEntityHandle result = entity->handle;
|
FP_GameEntityHandle result = entity->handle;
|
||||||
va_end(args);
|
va_end(args);
|
||||||
|
|
||||||
entity->type = FP_EntityType_Merchant;
|
entity->type = FP_EntityType_MerchantTerry;
|
||||||
|
entity->local_pos = pos;
|
||||||
|
entity->local_hit_box_size = Dqn_V2_InitNx2(50, 50);
|
||||||
|
entity->sprite_height.meters = 3.66f;
|
||||||
|
FP_Entity_AddDebugEditorFlags(game, result);
|
||||||
|
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static FP_GameEntityHandle FP_Entity_CreateMerchantGraveyard(FP_Game *game, Dqn_V2 pos, DQN_FMT_STRING_ANNOTATE char const *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
va_start(args, fmt);
|
||||||
|
FP_GameEntity *entity = FP_Game_MakeEntityPointerFV(game, fmt, args);
|
||||||
|
FP_GameEntityHandle result = entity->handle;
|
||||||
|
va_end(args);
|
||||||
|
|
||||||
|
entity->type = FP_EntityType_MerchantGraveyard;
|
||||||
|
entity->local_pos = pos;
|
||||||
|
entity->local_hit_box_size = Dqn_V2_InitNx2(50, 50);
|
||||||
|
entity->sprite_height.meters = 3.66f;
|
||||||
|
FP_Entity_AddDebugEditorFlags(game, result);
|
||||||
|
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static FP_GameEntityHandle FP_Entity_CreateMerchantGym(FP_Game *game, Dqn_V2 pos, DQN_FMT_STRING_ANNOTATE char const *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
va_start(args, fmt);
|
||||||
|
FP_GameEntity *entity = FP_Game_MakeEntityPointerFV(game, fmt, args);
|
||||||
|
FP_GameEntityHandle result = entity->handle;
|
||||||
|
va_end(args);
|
||||||
|
|
||||||
|
entity->type = FP_EntityType_MerchantGym;
|
||||||
|
entity->local_pos = pos;
|
||||||
|
entity->local_hit_box_size = Dqn_V2_InitNx2(50, 50);
|
||||||
|
entity->sprite_height.meters = 3.66f;
|
||||||
|
FP_Entity_AddDebugEditorFlags(game, result);
|
||||||
|
entity->flags |= FP_GameEntityFlag_NonTraversable;
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
static FP_GameEntityHandle FP_Entity_CreateMerchantPhoneCompany(FP_Game *game, Dqn_V2 pos, DQN_FMT_STRING_ANNOTATE char const *fmt, ...)
|
||||||
|
{
|
||||||
|
va_list args;
|
||||||
|
va_start(args, fmt);
|
||||||
|
FP_GameEntity *entity = FP_Game_MakeEntityPointerFV(game, fmt, args);
|
||||||
|
FP_GameEntityHandle result = entity->handle;
|
||||||
|
va_end(args);
|
||||||
|
|
||||||
|
entity->type = FP_EntityType_MerchantPhoneCompany;
|
||||||
entity->local_pos = pos;
|
entity->local_pos = pos;
|
||||||
entity->local_hit_box_size = Dqn_V2_InitNx2(50, 50);
|
entity->local_hit_box_size = Dqn_V2_InitNx2(50, 50);
|
||||||
entity->sprite_height.meters = 3.66f;
|
entity->sprite_height.meters = 3.66f;
|
||||||
|
Loading…
Reference in New Issue
Block a user