From 2c3110b63ec54470aa83e3893ce9f8b6fb7734b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Madar=C3=A1sz?= Date: Tue, 9 Aug 2022 18:11:02 +0200 Subject: [PATCH] improve item dragging --- code/game/src/gui/inventory.c | 8 ++++---- code/modules/modules/systems.c | 2 +- code/modules/source/system_items.c | 3 +-- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/code/game/src/gui/inventory.c b/code/game/src/gui/inventory.c index 7d6423b..2a806b3 100644 --- a/code/game/src/gui/inventory.c +++ b/code/game/src/gui/inventory.c @@ -58,24 +58,24 @@ void inventory_draw_panel(entity_view *e, bool is_player, float sx, float sy){ inv->swap = true; inv->swap_from = inv2->held_item_idx; inv->swap_to = i; - } else if (area == DAREA_PRESS && !inv->item_is_held) { + } else if (area == DAREA_PRESS && !inv->item_is_held && !inv2->item_is_held) { color = VIOLET; - inv->selected_item = i; inv_is_storage_action = true; + inv->selected_item = i; } else if (area == DAREA_PRESS && inv->item_is_held) { color = VIOLET; + inv_is_storage_action = true; inv->selected_item = i; inv->item_is_held = false; inv->swap = true; inv->swap_from = inv->held_item_idx; inv->swap_to = i; + } else if (area == DAREA_HELD && item->quantity > 0 && !inv->item_is_held && !inv2->item_is_held) { inv_is_storage_action = true; - } else if (area == DAREA_HELD && item->quantity > 0 && !inv->item_is_held) { inv->selected_item = i; inv->item_is_held = true; inv->held_item = *item; inv->held_item_idx = i; - inv_is_storage_action = true; } else if (i == inv->selected_item) { color = RED; } diff --git a/code/modules/modules/systems.c b/code/modules/modules/systems.c index cdab34d..3a02f27 100644 --- a/code/modules/modules/systems.c +++ b/code/modules/modules/systems.c @@ -221,7 +221,7 @@ void SystemsImport(ecs_world_t *ecs) { //ECS_SYSTEM(ecs, MergeItems, EcsPostUpdate, components.Position, components.ItemDrop); ECS_SYSTEM(ecs, UseItem, EcsPostUpdate, components.Input, components.Position, components.Inventory, !components.IsInVehicle); ECS_SYSTEM(ecs, InspectContainers, EcsPostUpdate, components.Input, !components.IsInVehicle); - //ECS_SYSTEM(ecs, HarvestIntoContainers, EcsPostUpdate, components.ItemContainer, components.Position); + ECS_SYSTEM(ecs, HarvestIntoContainers, EcsPostUpdate, components.ItemContainer, components.Position); ECS_SYSTEM(ecs, ResetActivators, EcsPostUpdate, components.Input); diff --git a/code/modules/source/system_items.c b/code/modules/source/system_items.c index e3f9420..572ddb0 100644 --- a/code/modules/source/system_items.c +++ b/code/modules/source/system_items.c @@ -310,7 +310,7 @@ void HarvestIntoContainers(ecs_iter_t *it) { for (int i = 0; i < it->count; ++i) { // NOTE(zaklaus): find any item size_t ents_count; - int64_t *ents = world_chunk_query_entities(it->entities[i], &ents_count, 2); + int64_t *ents = world_chunk_query_entities(it->entities[i], &ents_count, 0); for (size_t j = 0; j < ents_count; j++) { ItemDrop *drop = 0; @@ -336,7 +336,6 @@ void HarvestIntoContainers(ecs_iter_t *it) { if (drop->quantity == 0) item_despawn(ents[j]); - break; } } }