diff options
| author | nathan <nathansmith@disroot.org> | 2025-12-22 03:02:10 +0000 |
|---|---|---|
| committer | nathan <nathansmith@disroot.org> | 2025-12-22 03:02:10 +0000 |
| commit | db04bfb989a5ebbd1f57e9983a2bb819c3ce4d67 (patch) | |
| tree | 370c02d05800b9f856aa3a867da90e7ebd0f3a2b /src/player.c | |
| parent | dabcd8342e77d4bfac4f7bc5cee8643121d379f7 (diff) | |
| download | FindThings-db04bfb989a5ebbd1f57e9983a2bb819c3ce4d67.tar.gz FindThings-db04bfb989a5ebbd1f57e9983a2bb819c3ce4d67.tar.bz2 FindThings-db04bfb989a5ebbd1f57e9983a2bb819c3ce4d67.zip | |
hehehehe over designed interaction menu
Diffstat (limited to 'src/player.c')
| -rw-r--r-- | src/player.c | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/src/player.c b/src/player.c index 40c60c3..27a4780 100644 --- a/src/player.c +++ b/src/player.c @@ -102,10 +102,22 @@ bool playerCanEntityBeSelected(Player* player, Entity entity) <= PLAYER_MAX_SELECT_DISTANCE; } +void playerEndInteraction(Player* player, Game* game) +{ + player->selectedEntity = ENTITY_NONE; + player->isInteracting = false; + + hideInteractionChat(&game->interactionChat); + hideInteractionMenu(&game->interactionMenu); + game->interactionChat.entityId = ENTITY_NONE; + game->interactionMenu.entityId = ENTITY_NONE; +} + void playerInteractWithEntity(Player* player, WorldUID uid, Game* game, Selection selection) { InteractionChat* chat = &game->interactionChat; + InteractionMenu* menu = &game->interactionMenu; Entity* entity = &game->world.entities[uid]; @@ -114,14 +126,14 @@ void playerInteractWithEntity(Player* player, WorldUID uid, Game* game, { case SELECTION_INTERACT: clearInteractionChat(chat); + resetInteractionMenu(menu); chat->entityId = entity->id; + menu->entityId = entity->id; player->selectedEntity = uid; player->isInteracting = true; break; case SELECTION_LEAVE: - player->selectedEntity = ENTITY_NONE; - player->isInteracting = false; - chat->entityId = ENTITY_NONE; + playerEndInteraction(player, game); break; default: break; @@ -131,13 +143,19 @@ void playerInteractWithEntity(Player* player, WorldUID uid, Game* game, switch (interactWithEntity(entity, game, selection)) { case INTERACTION_TALK: + hideInteractionMenu(menu); showInteractionChat(chat); break; - case INTERACTION_END: + case INTERACTION_SHOW_MENU: hideInteractionChat(chat); - player->selectedEntity = ENTITY_NONE; - player->isInteracting = false; - chat->entityId = ENTITY_NONE; + showInteractionMenu(menu); + break; + case INTERACTION_TALK_AND_SHOW_MENU: + showInteractionChat(chat); + showInteractionMenu(menu); + break; + case INTERACTION_END: + playerEndInteraction(player, game); break; default: break; |
