simplify prefabs

efd/v1
Dominik Madarász 2023-01-23 15:56:02 +01:00
parent 1c68c73028
commit 36a4a010c8
18 changed files with 120 additions and 229 deletions

View File

@ -18,13 +18,6 @@ add_library(eco2d-foundation STATIC
src/models/prefabs/player.c src/models/prefabs/player.c
src/models/prefabs/vehicle.c src/models/prefabs/vehicle.c
src/models/prefabs/storage.c
src/models/prefabs/furnace.c
src/models/prefabs/blueprint.c
src/models/prefabs/splitter.c
src/models/prefabs/craftbench.c
src/models/prefabs/assembler.c
src/models/prefabs/creature.c
src/pkt/packet.c src/pkt/packet.c

View File

@ -1,12 +1,5 @@
// NOTE(zaklaus): access to spawners // NOTE(zaklaus): access to spawners
#include "models/prefabs/storage.h" #include "models/prefabs/prefabs_list.c"
#include "models/prefabs/furnace.h"
#include "models/prefabs/blueprint.h"
#include "models/prefabs/craftbench.h"
#include "models/prefabs/splitter.h"
#include "models/prefabs/assembler.h"
#include "models/prefabs/creature.h"
static struct { static struct {
asset_id id; asset_id id;
uint64_t (*proc)(); uint64_t (*proc)();

View File

@ -1,27 +0,0 @@
#include "assembler.h"
#include "models/device.h"
#include "world/world.h"
#include "models/entity.h"
#include "models/components.h"
uint64_t assembler_spawn(void) {
ecs_entity_t e = device_spawn(ASSET_ASSEMBLER);
ItemContainer *storage = ecs_get_mut(world_ecs(), e, ItemContainer);
*storage = (ItemContainer){0};
Producer *producer = ecs_get_mut(world_ecs(), e, Producer);
*producer = (Producer){0};
producer->energy_level = 69.0f;
producer->pending_task = PRODUCER_CRAFT_AUTO;
producer->push_filter = PRODUCER_PUSH_PRODUCT;
producer->target_item = ASSET_INVALID;
ecs_set(world_ecs(), e, ItemRouter, {.push_qty = 1, .counter = 0});
return (uint64_t)e;
}
void assembler_despawn(uint64_t ent_id) {
entity_despawn(ent_id);
}

View File

@ -1,6 +0,0 @@
#pragma once
#include "platform/system.h"
uint64_t assembler_spawn(void);
void assembler_despawn(uint64_t id);

View File

@ -1,30 +0,0 @@
#include "vehicle.h"
#include "world/entity_view.h"
#include "world/world.h"
#include "models/device.h"
#include "models/entity.h"
#include "models/items.h"
#include "models/components.h"
uint64_t blueprint_spawn(uint8_t w, uint8_t h, const asset_id *plan) {
ZPL_ASSERT((w*h) < 256);
ecs_entity_t e = device_spawn(ASSET_BLUEPRINT);
Blueprint *blueprint = ecs_get_mut(world_ecs(), e, Blueprint);
blueprint->w = w;
blueprint->h = h;
zpl_memcopy(blueprint->plan, plan, w*h*sizeof(asset_id));
return (uint64_t)e;
}
uint64_t blueprint_spawn_udata(void* udata) {
item_desc *it = (item_desc*)udata;
return blueprint_spawn(it->blueprint.w, it->blueprint.h, it->blueprint.plan);
}
void blueprint_despawn(uint64_t id) {
entity_despawn(id);
}

View File

@ -1,8 +0,0 @@
#pragma once
#include "platform/system.h"
uint64_t blueprint_spawn(uint8_t w, uint8_t h, const uint16_t *plan);
uint64_t blueprint_spawn_udata(void* udata);
void blueprint_despawn(uint64_t id);

View File

@ -1,24 +0,0 @@
#include "craftbench.h"
#include "models/device.h"
#include "world/world.h"
#include "models/entity.h"
#include "models/components.h"
uint64_t craftbench_spawn(void) {
ecs_entity_t e = device_spawn(ASSET_CRAFTBENCH);
ItemContainer *storage = ecs_get_mut(world_ecs(), e, ItemContainer);
*storage = (ItemContainer){0};
Producer *producer = ecs_get_mut(world_ecs(), e, Producer);
*producer = (Producer){0};
producer->energy_level = 69.0f;
producer->pending_task = PRODUCER_CRAFT_WAITING;
producer->push_filter = PRODUCER_PUSH_NONE;
return (uint64_t)e;
}
void craftbench_despawn(uint64_t ent_id) {
entity_despawn(ent_id);
}

View File

@ -1,7 +0,0 @@
#pragma once
#include "platform/system.h"
uint64_t craftbench_spawn(void);
void craftbench_despawn(uint64_t id);

View File

@ -1,21 +0,0 @@
#include "creature.h"
#include "world/world.h"
#include "models/entity.h"
#include "world/entity_view.h"
#include "models/components.h"
uint64_t creature_spawn(void) {
ecs_entity_t e = entity_spawn(EKIND_DEMO_NPC);
Creature *c = ecs_get_mut_ex(world_ecs(), e, Creature);
c->hunger_satisfied = 0;
c->mating_satisfied = rand() % 1800;
c->life_remaining = 500 + rand() % 5200;
return (uint64_t)e;
}
void creature_despawn(uint64_t ent_id) {
entity_despawn(ent_id);
}

View File

@ -1,6 +0,0 @@
#pragma once
#include "platform/system.h"
uint64_t creature_spawn(void);
void creature_despawn(uint64_t id);

View File

@ -1,26 +0,0 @@
#include "furnace.h"
#include "models/device.h"
#include "world/world.h"
#include "models/entity.h"
#include "models/components.h"
uint64_t furnace_spawn(void) {
ecs_entity_t e = device_spawn(ASSET_FURNACE);
ItemContainer *storage = ecs_get_mut(world_ecs(), e, ItemContainer);
*storage = (ItemContainer){0};
Producer *producer = ecs_get_mut(world_ecs(), e, Producer);
*producer = (Producer){0};
producer->energy_level = 69.0f;
producer->pending_task = PRODUCER_CRAFT_AUTO;
producer->push_filter = PRODUCER_PUSH_ANY;
ecs_set(world_ecs(), e, ItemRouter, {.push_qty = 1, .counter = 0});
return (uint64_t)e;
}
void furnace_despawn(uint64_t ent_id) {
entity_despawn(ent_id);
}

View File

@ -1,7 +0,0 @@
#pragma once
#include "platform/system.h"
uint64_t furnace_spawn(void);
void furnace_despawn(uint64_t id);

View File

@ -0,0 +1,119 @@
#include "models/device.h"
#include "models/assets.h"
#include "world/world.h"
#include "models/components.h"
#include "world/entity_view.h"
#include "world/world.h"
#include "models/device.h"
#include "models/entity.h"
#include "models/items.h"
#include "models/components.h"
//------------------------------------------------------------------------
uint64_t assembler_spawn(void) {
ecs_entity_t e = device_spawn(ASSET_ASSEMBLER);
ItemContainer *storage = ecs_get_mut(world_ecs(), e, ItemContainer);
*storage = (ItemContainer){0};
Producer *producer = ecs_get_mut(world_ecs(), e, Producer);
*producer = (Producer){0};
producer->energy_level = 69.0f;
producer->pending_task = PRODUCER_CRAFT_AUTO;
producer->push_filter = PRODUCER_PUSH_PRODUCT;
producer->target_item = ASSET_INVALID;
ecs_set(world_ecs(), e, ItemRouter, {.push_qty = 1, .counter = 0});
return (uint64_t)e;
}
//------------------------------------------------------------------------
uint64_t blueprint_spawn(uint8_t w, uint8_t h, const asset_id *plan) {
ZPL_ASSERT((w*h) < 256);
ecs_entity_t e = device_spawn(ASSET_BLUEPRINT);
Blueprint *blueprint = ecs_get_mut(world_ecs(), e, Blueprint);
blueprint->w = w;
blueprint->h = h;
zpl_memcopy(blueprint->plan, plan, w*h*sizeof(asset_id));
return (uint64_t)e;
}
uint64_t blueprint_spawn_udata(void* udata) {
item_desc *it = (item_desc*)udata;
return blueprint_spawn(it->blueprint.w, it->blueprint.h, it->blueprint.plan);
}
//------------------------------------------------------------------------
uint64_t craftbench_spawn(void) {
ecs_entity_t e = device_spawn(ASSET_CRAFTBENCH);
ItemContainer *storage = ecs_get_mut(world_ecs(), e, ItemContainer);
*storage = (ItemContainer){0};
Producer *producer = ecs_get_mut(world_ecs(), e, Producer);
*producer = (Producer){0};
producer->energy_level = 69.0f;
producer->pending_task = PRODUCER_CRAFT_WAITING;
producer->push_filter = PRODUCER_PUSH_NONE;
return (uint64_t)e;
}
//------------------------------------------------------------------------
uint64_t creature_spawn(void) {
ecs_entity_t e = entity_spawn(EKIND_DEMO_NPC);
Creature *c = ecs_get_mut_ex(world_ecs(), e, Creature);
c->hunger_satisfied = 0;
c->mating_satisfied = rand() % 1800;
c->life_remaining = 500 + rand() % 5200;
return (uint64_t)e;
}
//------------------------------------------------------------------------
uint64_t furnace_spawn(void) {
ecs_entity_t e = device_spawn(ASSET_FURNACE);
ItemContainer *storage = ecs_get_mut(world_ecs(), e, ItemContainer);
*storage = (ItemContainer){0};
Producer *producer = ecs_get_mut(world_ecs(), e, Producer);
*producer = (Producer){0};
producer->energy_level = 69.0f;
producer->pending_task = PRODUCER_CRAFT_AUTO;
producer->push_filter = PRODUCER_PUSH_ANY;
ecs_set(world_ecs(), e, ItemRouter, {.push_qty = 1, .counter = 0});
return (uint64_t)e;
}
//------------------------------------------------------------------------
uint64_t splitter_spawn(void) {
ecs_entity_t e = device_spawn(ASSET_SPLITTER);
ItemContainer *storage = ecs_get_mut(world_ecs(), e, ItemContainer);
*storage = (ItemContainer){0};
ecs_set(world_ecs(), e, ItemRouter, {.push_qty = 1, .counter = 0});
return (uint64_t)e;
}
//------------------------------------------------------------------------
uint64_t storage_spawn(void) {
ecs_entity_t e = device_spawn(ASSET_CHEST);
ItemContainer *storage = ecs_get_mut(world_ecs(), e, ItemContainer);
*storage = (ItemContainer){0};
return (uint64_t)e;
}
//------------------------------------------------------------------------

View File

@ -1,20 +0,0 @@
#include "splitter.h"
#include "models/device.h"
#include "world/world.h"
#include "models/entity.h"
#include "models/components.h"
uint64_t splitter_spawn(void) {
ecs_entity_t e = device_spawn(ASSET_SPLITTER);
ItemContainer *storage = ecs_get_mut(world_ecs(), e, ItemContainer);
*storage = (ItemContainer){0};
ecs_set(world_ecs(), e, ItemRouter, {.push_qty = 1, .counter = 0});
return (uint64_t)e;
}
void splitter_despawn(uint64_t ent_id) {
entity_despawn(ent_id);
}

View File

@ -1,7 +0,0 @@
#pragma once
#include "platform/system.h"
uint64_t splitter_spawn(void);
void splitter_despawn(uint64_t id);

View File

@ -1,18 +0,0 @@
#include "storage.h"
#include "models/device.h"
#include "world/world.h"
#include "models/entity.h"
#include "models/components.h"
uint64_t storage_spawn(void) {
ecs_entity_t e = device_spawn(ASSET_CHEST);
ItemContainer *storage = ecs_get_mut(world_ecs(), e, ItemContainer);
*storage = (ItemContainer){0};
return (uint64_t)e;
}
void storage_despawn(uint64_t ent_id) {
entity_despawn(ent_id);
}

View File

@ -1,7 +0,0 @@
#pragma once
#include "platform/system.h"
uint64_t storage_spawn(void);
void storage_despawn(uint64_t id);