Add rest of assets, add blue player
This commit is contained in:
@@ -106,7 +106,7 @@ void igResource(ecs_world_t *ecs,
|
||||
void igOwner(ecs_world_t *ecs,
|
||||
ecs_entity_t entity, ecs_entity_t comp) {
|
||||
Owner *owner = ecs_get_mut_id(ecs, entity, comp);
|
||||
igInputInt("PlayerID", &owner->playerID, 0, 0, 0);
|
||||
igInputInt("PlayerID", &owner->player, 0, 0, 0);
|
||||
}
|
||||
|
||||
void igSpatialGridID(ecs_world_t *ecs,
|
||||
|
||||
@@ -33,8 +33,14 @@ typedef struct Resource {
|
||||
} Resource;
|
||||
extern ECS_COMPONENT_DECLARE(Resource);
|
||||
|
||||
typedef enum Player {
|
||||
PLAYER_RED = 0,
|
||||
PLAYER_BLUE = 1,
|
||||
PLAYER_COUNT
|
||||
} Player;
|
||||
|
||||
typedef struct Owner {
|
||||
int32_t playerID;
|
||||
Player player;
|
||||
} Owner;
|
||||
extern ECS_COMPONENT_DECLARE(Owner);
|
||||
|
||||
|
||||
@@ -57,6 +57,7 @@ ecs_entity_t entityCreateWorker(const Position position, Game *game) {
|
||||
Arms arms = {.primary = right};
|
||||
ecs_set_ptr(ECS, e, Arms, &arms);
|
||||
ecs_set(ECS, right, Arm, {.offset = 45.0f, 4.5f});
|
||||
ecs_set(ECS, e, Owner, {PLAYER_RED});
|
||||
|
||||
ecs_set(ECS, right, Size, {8, 8});
|
||||
ecs_set(ECS, right, Rotation, { 0.0f });
|
||||
|
||||
@@ -18,6 +18,7 @@ typedef struct DrawData {
|
||||
Rectangle dst;
|
||||
Vector2 origin;
|
||||
f32 rotation;
|
||||
u8 layer;
|
||||
bool canHaveAlpha;
|
||||
} DrawData;
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -28,13 +28,13 @@ void updateAnimationState(ecs_iter_t *it) {
|
||||
}
|
||||
}
|
||||
void updateAnimation(ecs_iter_t *it) {
|
||||
Game *game = ecs_singleton_get_mut(ECS, Game);
|
||||
Animation *anim = ecs_field(it, Animation, 1);
|
||||
TextureRegion *texture = ecs_field(it, TextureRegion, 2);
|
||||
|
||||
float dt = GetFrameTime();
|
||||
|
||||
for (i32 i = 0; i < it->count; i++) {
|
||||
ecs_entity_t entity = it->entities[i];
|
||||
AnimationFrame frame = anim[i].frame;
|
||||
AnimationSequence seq = anim[i].sequence;
|
||||
|
||||
@@ -46,7 +46,14 @@ void updateAnimation(ecs_iter_t *it) {
|
||||
anim[i].frame = entityGetAnimationFrame(anim[i].entityType, anim[i].animType, nextFrame);
|
||||
anim[i].elapsed = 0.0f;
|
||||
|
||||
texture[i].rec = bzTilesetGetTileRegion(anim[i].tileset, anim[i].frame.frame);
|
||||
texture[i].rec = getTextureRect(anim[i].frame.frame);
|
||||
if (ecs_has(ECS, entity, Owner)) {
|
||||
Owner owner = *ecs_get(ECS, entity, Owner);
|
||||
BzTileID base = anim[i].frame.frame;
|
||||
Vector2 offset = getTileOffset(base, owner.player);
|
||||
texture[i].rec.x += offset.x;
|
||||
texture[i].rec.y += offset.y;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -45,10 +45,23 @@ void entityPathRemove(ecs_iter_t *it) {
|
||||
}
|
||||
}
|
||||
|
||||
void updateTextureOwnerTile(ecs_iter_t *it) {
|
||||
TextureRegion *tex = ecs_field(it, TextureRegion, 1);
|
||||
Owner *owner = ecs_field(it, Owner, 2);
|
||||
|
||||
for (i32 i = 0; i < it->count; i++) {
|
||||
Rectangle rec = tex[i].rec;
|
||||
BzTileID base = ((int)rec.y / 16) * 256 + ((int) rec.x / 16);
|
||||
Vector2 offset = getTileOffset(base, owner[i].player);
|
||||
tex[i].rec.x += offset.x;
|
||||
tex[i].rec.y += offset.y;
|
||||
}
|
||||
}
|
||||
|
||||
void entityUpdateSpatialID(ecs_iter_t *it) {
|
||||
Game *game = ecs_singleton_get_mut(ECS, Game);
|
||||
Position *position = ecs_field(it, Position, 1);
|
||||
Position *size = ecs_field(it, Position, 2);
|
||||
Position *size = ecs_field(it, Size, 2);
|
||||
//Velocity *velocity = ecs_field(it, Velocity, 3);
|
||||
SpatialGridID *id = ecs_field(it, SpatialGridID, 4);
|
||||
|
||||
|
||||
@@ -252,7 +252,7 @@ void updatePlayerInput() {
|
||||
getBuildingSize(input->building, &sizeX, &sizeY);
|
||||
bool canPlace = canPlaceBuilding(game, input->building, tileX, tileY);
|
||||
if (canPlace && isInputBtnDown(input, primaryBtn)) {
|
||||
placeBuilding(game, input->building, tileX, tileY, (Owner) {-1});
|
||||
placeBuilding(game, input->building, tileX, tileY, (Owner) {PLAYER_BLUE});
|
||||
}
|
||||
input->buildingCanPlace = canPlace;
|
||||
input->buildingPos = (Vec2i) {tileX, tileY};
|
||||
|
||||
@@ -58,7 +58,7 @@ void drawGameUI(Game *game, f32 dt) {
|
||||
BUILDING_MARKET,
|
||||
BUILDING_MILL,
|
||||
BUILDING_HOUSE_02, // placeholder for farm
|
||||
BUILDING_BARRACS,
|
||||
BUILDING_BARRACKS,
|
||||
BUILDING_ARCHERY_RANGE
|
||||
};
|
||||
const char *buildingNames[] = {
|
||||
|
||||
@@ -107,6 +107,8 @@ void setupSystems() {
|
||||
|
||||
ECS_OBSERVER(ECS, entityPathRemove, EcsOnRemove, Path);
|
||||
|
||||
ECS_OBSERVER(ECS, updateTextureOwnerTile, EcsOnSet, TextureRegion, Owner);
|
||||
|
||||
ECS_SYSTEM(ECS, entityUpdateSpatialID, EcsOnUpdate, Position, Size, Velocity, SpatialGridID);
|
||||
ECS_SYSTEM(ECS, entityUpdateKinematic, EcsOnUpdate, Position, Velocity, Steering, Unit);
|
||||
|
||||
|
||||
@@ -60,6 +60,8 @@ void updateEasingSystem(ecs_iter_t *it);
|
||||
*/
|
||||
void entityPathRemove(ecs_iter_t *it);
|
||||
|
||||
void updateTextureOwnerTile(ecs_iter_t *it);
|
||||
|
||||
/*
|
||||
* 0: Game (singleton) for entity map
|
||||
* 1: Position
|
||||
|
||||
Reference in New Issue
Block a user