WIP converting to separate states. Don't think I want this.

This commit is contained in:
2025-01-03 20:21:36 -05:00
parent 717f29fcb3
commit 4be582a7a4
7 changed files with 56 additions and 48 deletions

View File

@@ -58,15 +58,15 @@ ErrorContext *actor_automatic_face(actor *obj)
ATTEMPT {
if ( obj->movement_controls_face == true ) {
// TODO : This doesn't really work properly
BITMASK_DEL(obj->state, ACTOR_STATE_FACE_ALL);
if ( BITMASK_HAS(obj->state, ACTOR_STATE_MOVING_LEFT) ) {
BITMASK_ADD(obj->state, ACTOR_STATE_FACE_LEFT);
} else if ( BITMASK_HAS(obj->state, ACTOR_STATE_MOVING_RIGHT) ) {
BITMASK_ADD(obj->state, ACTOR_STATE_FACE_RIGHT);
} else if ( BITMASK_HAS(obj->state, ACTOR_STATE_MOVING_UP) ) {
BITMASK_ADD(obj->state, ACTOR_STATE_FACE_UP);
} else if ( BITMASK_HAS(obj->state, ACTOR_STATE_MOVING_DOWN) ) {
BITMASK_ADD(obj->state, ACTOR_STATE_FACE_DOWN);
BITMASK_DEL(obj->visualstate, ACTOR_STATE_FACE_ALL);
if ( BITMASK_HAS(obj->logicstate, ACTOR_STATE_MOVING_LEFT) ) {
BITMASK_ADD(obj->visualstate, ACTOR_STATE_FACE_LEFT);
} else if ( BITMASK_HAS(obj->logicstate, ACTOR_STATE_MOVING_RIGHT) ) {
BITMASK_ADD(obj->visualstate, ACTOR_STATE_FACE_RIGHT);
} else if ( BITMASK_HAS(obj->logicstate, ACTOR_STATE_MOVING_UP) ) {
BITMASK_ADD(obj->visualstate, ACTOR_STATE_FACE_UP);
} else if ( BITMASK_HAS(obj->logicstate, ACTOR_STATE_MOVING_DOWN) ) {
BITMASK_ADD(obj->visualstate, ACTOR_STATE_FACE_DOWN);
}
}
} CLEANUP {
@@ -115,16 +115,16 @@ ErrorContext *actor_logic_movement(actor *obj, SDL_Time curtimems)
PREPARE_ERROR(errctx);
FAIL_ZERO_RETURN(errctx, obj, ERR_NULLPOINTER, "Null actor reference");
ATTEMPT {
if ( BITMASK_HAS(obj->state, ACTOR_STATE_MOVING_LEFT) ) {
if ( BITMASK_HAS(obj->logicstate, ACTOR_STATE_MOVING_LEFT) ) {
obj->x -= obj->basechar->vx;
}
if ( BITMASK_HAS(obj->state, ACTOR_STATE_MOVING_RIGHT) ) {
if ( BITMASK_HAS(obj->logicstate, ACTOR_STATE_MOVING_RIGHT) ) {
obj->x += obj->basechar->vx;
}
if ( BITMASK_HAS(obj->state, ACTOR_STATE_MOVING_UP) ) {
if ( BITMASK_HAS(obj->logicstate, ACTOR_STATE_MOVING_UP) ) {
obj->y -= obj->basechar->vy;
}
if ( BITMASK_HAS(obj->state, ACTOR_STATE_MOVING_DOWN) ) {
if ( BITMASK_HAS(obj->logicstate, ACTOR_STATE_MOVING_DOWN) ) {
obj->y += obj->basechar->vy;
}
obj->logictimer = curtimems;
@@ -157,7 +157,7 @@ ErrorContext *actor_update(actor *obj)
} FINISH(errctx, false);
ATTEMPT {
CATCH(errctx, character_sprite_get(obj->basechar, obj->state, &curSprite));
CATCH(errctx, character_sprite_get(obj->basechar, obj->visualstate, &curSprite));
// is it time to change frames?
if ( (curtimems - obj->curSpriteFrameTimer) >= curSprite->speed ) {
CATCH(errctx, obj->changeframefunc(obj, curSprite, curtimems));
@@ -182,7 +182,7 @@ static ErrorContext *actor_visible(actor *obj, SDL_FRect *camera, bool *visible)
FAIL_ZERO_RETURN(errctx, obj->basechar, ERR_NULLPOINTER, "Actor has NULL base character reference");
ATTEMPT {
CATCH(errctx, character_sprite_get(obj->basechar, obj->state, &curSprite));
CATCH(errctx, character_sprite_get(obj->basechar, obj->visualstate, &curSprite));
} CLEANUP {
} PROCESS(errctx) {
} HANDLE(errctx, ERR_KEY) {
@@ -215,7 +215,7 @@ ErrorContext *actor_render(actor *obj, SDL_Renderer *renderer)
FAIL_ZERO_RETURN(errctx, obj->basechar, ERR_NULLPOINTER, "Actor has NULL base character reference");
ATTEMPT {
CATCH(errctx, character_sprite_get(obj->basechar, obj->state, &curSprite));
CATCH(errctx, character_sprite_get(obj->basechar, obj->visualstate, &curSprite));
CATCH(errctx, actor_visible(obj, &camera, &visible));
} CLEANUP {
} PROCESS(errctx) {