Added some common macro utilities used by most NPCs

I'm pretty sure Pixel didn't actually use macros for this but I don't think just having this kind of stuff copied around everywhere is really great either

Forgot to commit and push this yesterday

Signed-off-by: Gabriel Ravier <gabravier@gmail.com>
This commit is contained in:
Gabriel Ravier 2019-09-15 10:48:18 +02:00
parent 041bd0e5f9
commit fcc1e3cc23
No known key found for this signature in database
GPG key ID: 1E75F156884F3DCE
2 changed files with 22 additions and 11 deletions

View file

@ -573,17 +573,9 @@ void ActBossChar_Frog(void)
break;
}
boss->ym += 0x40;
if (boss->ym > 0x5FF)
boss->ym = 0x5FF;
boss->x += boss->xm;
boss->y += boss->ym;
if (boss->direct == DIR_LEFT)
boss->rect = rcLeft[boss->ani_no];
else
boss->rect = rcRight[boss->ani_no];
NPC_DO_GRAVITY(boss, 0x40, 0x5FF);
NPC_UPDATE_POSITIONS_WITH_VELOCITIES(boss);
NPC_SET_RECT_FROM_LEFT_RIGHT(boss, rcLeft, rcRight);
ActBossChar02_01();
ActBossChar02_02();

View file

@ -1,11 +1,30 @@
#pragma once
#include "CommonDefines.h"
#include "WindowsWrapper.h"
#include "Draw.h"
#define NPC_MAX 0x200
#define NPC_CAP_Y_VELOCITY(npc, maxYVel) \
if (npc->ym > (maxYVel)) \
npc->ym = (maxYVel)
#define NPC_DO_GRAVITY(npc, ymAdd, maxYVel) \
npc->ym += ymAdd; \
NPC_CAP_Y_VELOCITY(npc, maxYVel)
#define NPC_UPDATE_POSITIONS_WITH_VELOCITIES(npc) \
npc->x += npc->xm; \
npc->y = npc->ym;
#define NPC_SET_RECT_FROM_LEFT_RIGHT(npc, rcLeft, rcRight) \
if (npc->direct == DIR_LEFT) \
npc->rect = rcLeft[npc->ani_no]; \
else \
npc->rect = rcRight[npc->ani_no];
// Be careful when changing these: they're baked into the 'npc.tbl' file
enum NPCFlags
{