From b1e412ee33585d8e1a3e71120273947d2a7dbfc8 Mon Sep 17 00:00:00 2001 From: lachablock Date: Mon, 21 Jun 2021 12:03:01 +1000 Subject: [PATCH] Address item capsule suggestoastions --- src/p_enemy.c | 58 +++++++++++++++++++++++++++------------------------ 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/src/p_enemy.c b/src/p_enemy.c index 61e25c153..dfe6f671e 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -14658,14 +14658,11 @@ void P_RefreshItemCapsuleParts(mobj_t *mobj) UINT8 numNumbers = 0; INT32 count = 0; INT32 itemType = mobj->threshold; - mobj_t *part = mobj->tracer; + mobj_t *part; skincolornum_t color; UINT32 newRenderFlags = 0; boolean colorized; - part->threshold = mobj->threshold; - part->movecount = mobj->movecount; - if (itemType < 1 || itemType >= NUMKARTITEMS) itemType = KITEM_SAD; @@ -14682,7 +14679,35 @@ void P_RefreshItemCapsuleParts(mobj_t *mobj) mobj->colorized = false; } + // update cap colors + if (itemType == KITEM_SUPERRING) + { + color = SKINCOLOR_GOLD; + newRenderFlags |= RF_SEMIBRIGHT; + } + else if (mobj->spawnpoint && (mobj->spawnpoint->options & MTF_EXTRA)) + color = SKINCOLOR_SAPPHIRE; + else + color = SKINCOLOR_NONE; + + colorized = (color != SKINCOLOR_NONE); + part = mobj; + while (!P_MobjWasRemoved(part->hnext)) + { + part = part->hnext; + part->color = color; + part->colorized = colorized; + part->renderflags = (part->renderflags & ~RF_BRIGHTMASK) | newRenderFlags; + } + // update inside item frame + part = mobj->tracer; + if (P_MobjWasRemoved(part)) + return; + + part->threshold = mobj->threshold; + part->movecount = mobj->movecount; + switch (itemType) { case KITEM_ORBINAUT: @@ -14749,27 +14774,6 @@ void P_RefreshItemCapsuleParts(mobj_t *mobj) P_RemoveMobj(part->tracer); P_SetTarget(&part->tracer, NULL); } - - // update cap colors - if (itemType == KITEM_SUPERRING) - { - color = SKINCOLOR_GOLD; - newRenderFlags |= RF_SEMIBRIGHT; - } - else if (mobj->spawnpoint && (mobj->spawnpoint->options & MTF_EXTRA)) - color = SKINCOLOR_SAPPHIRE; - else - color = SKINCOLOR_NONE; - - colorized = (color != SKINCOLOR_NONE); - part = mobj; - while (!P_MobjWasRemoved(part->hnext)) - { - part = part->hnext; - part->color = color; - part->colorized = colorized; - part->renderflags = (part->renderflags & ~RF_BRIGHTMASK) | newRenderFlags; - } } #define CAPSULESIDES 5 @@ -14781,7 +14785,7 @@ void A_SpawnItemCapsuleParts(mobj_t *actor) mobj_t *part; fixed_t buttScale = 0; statenum_t buttState = S_ITEMCAPSULE_BOTTOM_SIDE_AIR; - angle_t spin = -ROTATIONSPEED; + angle_t spin = ANGLE_MAX - ROTATIONSPEED; if (LUA_CallAction(A_SPAWNITEMCAPSULEPARTS, actor)) return; @@ -14799,7 +14803,7 @@ void A_SpawnItemCapsuleParts(mobj_t *actor) P_SetMobjState(part, S_ITEMICON); part->movedir = ROTATIONSPEED; // rotation speed part->extravalue1 = 175*FRACUNIT/100; // relative scale - part->flags2 |= MF2_CLASSICPUSH|MF2_INFLOAT; // classicpush = centered horizontally, infloat = don't recolor + part->flags2 |= MF2_CLASSICPUSH; // classicpush = centered horizontally P_SetTarget(&actor->tracer, part); // pointer to this item, so we can modify its sprite/frame // capsule caps