Add gold mining
This commit is contained in:
@@ -11,7 +11,6 @@
|
|||||||
extern ECS_TAG_DECLARE(GameEntity);
|
extern ECS_TAG_DECLARE(GameEntity);
|
||||||
|
|
||||||
typedef enum ResourceType {
|
typedef enum ResourceType {
|
||||||
RES_IRON,
|
|
||||||
RES_WOOD,
|
RES_WOOD,
|
||||||
RES_GOLD,
|
RES_GOLD,
|
||||||
RES_FOOD,
|
RES_FOOD,
|
||||||
@@ -20,7 +19,6 @@ typedef enum ResourceType {
|
|||||||
|
|
||||||
static const char *getResourceTypePrettyName(ResourceType type) {
|
static const char *getResourceTypePrettyName(ResourceType type) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case RES_IRON: return "Iron";
|
|
||||||
case RES_WOOD: return "Wood";
|
case RES_WOOD: return "Wood";
|
||||||
case RES_GOLD: return "Gold";
|
case RES_GOLD: return "Gold";
|
||||||
case RES_FOOD: return "Food";
|
case RES_FOOD: return "Food";
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ typedef struct InputState {
|
|||||||
enum {
|
enum {
|
||||||
CURSOR_NONE,
|
CURSOR_NONE,
|
||||||
CURSOR_COLLECT_WOOD,
|
CURSOR_COLLECT_WOOD,
|
||||||
|
CURSOR_COLLECT_GOLD,
|
||||||
} cursor;
|
} cursor;
|
||||||
|
|
||||||
// INPUT_BUILDING
|
// INPUT_BUILDING
|
||||||
|
|||||||
@@ -82,41 +82,37 @@ void inputUnitAction(Game *game, InputState *input) {
|
|||||||
input->cursor = CURSOR_NONE;
|
input->cursor = CURSOR_NONE;
|
||||||
ecs_entity_t taskEntity;
|
ecs_entity_t taskEntity;
|
||||||
if ((taskEntity = queryEntity(game->entityGrid, input->mouseWorld, Harvestable))) {
|
if ((taskEntity = queryEntity(game->entityGrid, input->mouseWorld, Harvestable))) {
|
||||||
input->cursor = CURSOR_COLLECT_WOOD;
|
Resource resource = *ecs_get(ECS, taskEntity, Resource);
|
||||||
|
switch (resource.type) {
|
||||||
|
case RES_WOOD:
|
||||||
|
input->cursor = CURSOR_COLLECT_WOOD;
|
||||||
|
break;
|
||||||
|
case RES_GOLD:
|
||||||
|
input->cursor = CURSOR_COLLECT_GOLD;
|
||||||
|
break;
|
||||||
|
case RES_FOOD:
|
||||||
|
//input->cursor = CURSOR_COLLECT_FOOD;
|
||||||
|
break;
|
||||||
|
default:;
|
||||||
|
}
|
||||||
if (isInputBtnJustUp(input, actionBtn)) {
|
if (isInputBtnJustUp(input, actionBtn)) {
|
||||||
ecs_defer_begin(ECS);
|
ecs_defer_begin(ECS);
|
||||||
ecs_iter_t it = ecs_query_iter(ECS, query);
|
ecs_iter_t it = ecs_query_iter(ECS, query);
|
||||||
while (ecs_query_next(&it)) {
|
while (ecs_query_next(&it)) {
|
||||||
for (i32 i = 0; i < it.count; i++) {
|
for (i32 i = 0; i < it.count; i++) {
|
||||||
const ecs_entity_t entity = it.entities[i];
|
ecs_entity_t entity = it.entities[i];
|
||||||
const Position target = *ecs_get(ECS, taskEntity, Position);
|
Position target = *ecs_get(ECS, taskEntity, Position);
|
||||||
|
|
||||||
setAIBehaviour(entity, game->BTs.workerHarvest, &(AIBlackboard) {
|
setAIBehaviour(entity, game->BTs.workerHarvest, &(AIBlackboard) {
|
||||||
.as.worker = {
|
.as.worker = {
|
||||||
.harvestType = RES_WOOD,
|
.harvestType = resource.type,
|
||||||
.harvestTarget = taskEntity,
|
.harvestTarget = taskEntity,
|
||||||
.harvestPos = target,
|
.harvestPos = target,
|
||||||
},
|
},
|
||||||
.proximity = 6.0f,
|
.proximity = 6.0f,
|
||||||
});
|
});
|
||||||
/*
|
|
||||||
setUnitAI(entity, game, &(const UnitAI) {
|
|
||||||
.type = AI_WORKER_HARVEST,
|
|
||||||
.as.workerHarvest.resource = RES_WOOD,
|
|
||||||
.as.workerHarvest.target = taskEntity,
|
|
||||||
.as.workerHarvest.targetPosition = target
|
|
||||||
});
|
|
||||||
*/
|
|
||||||
//addAction(entity, game, &(const Action) {
|
|
||||||
// .type = ACTION_MOVE_TO,
|
|
||||||
// .as.moveTo.target = target,
|
|
||||||
// .as.moveTo.proximityThreshold = 10.0f,
|
|
||||||
//});
|
|
||||||
//ecs_set(ECS, entity, HarvestTask, {taskEntity});
|
|
||||||
goto while_break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
while_break:
|
|
||||||
ecs_iter_fini(&it);
|
|
||||||
ecs_defer_end(ECS);
|
ecs_defer_end(ECS);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
@@ -348,6 +344,12 @@ void drawPlayerInputUI() {
|
|||||||
DrawText("Collect wood", point.x, point.y, 10.0f, RED);
|
DrawText("Collect wood", point.x, point.y, 10.0f, RED);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case CURSOR_COLLECT_GOLD: {
|
||||||
|
const Vector2 point = input->mouseWorld;
|
||||||
|
DrawCircle(point.x, point.y, 2.0f, RED);
|
||||||
|
DrawText("Collect gold", point.x, point.y, 10.0f, RED);
|
||||||
|
break;
|
||||||
|
}
|
||||||
default: break;
|
default: break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user