Made BossLife.cpp ASM-accurate
This commit is contained in:
parent
a38ee793a2
commit
3a856e4d9d
2 changed files with 44 additions and 42 deletions
|
@ -9,7 +9,7 @@
|
||||||
|
|
||||||
static struct
|
static struct
|
||||||
{
|
{
|
||||||
bool flag;
|
BOOL flag;
|
||||||
int *pLife;
|
int *pLife;
|
||||||
int max;
|
int max;
|
||||||
int br;
|
int br;
|
||||||
|
@ -18,33 +18,32 @@ static struct
|
||||||
|
|
||||||
void InitBossLife(void)
|
void InitBossLife(void)
|
||||||
{
|
{
|
||||||
gBL.flag = false;
|
gBL.flag = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool StartBossLife(int code_event)
|
BOOL StartBossLife(int code_event)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < 0x200; ++i)
|
int i = 0;
|
||||||
{
|
while (i < 0x200 && gNPC[i].code_event != code_event)
|
||||||
if (gNPC[i].code_event == code_event)
|
++i;
|
||||||
{
|
|
||||||
gBL.flag = true;
|
|
||||||
gBL.max = gNPC[i].life;
|
|
||||||
gBL.br = gNPC[i].life;
|
|
||||||
gBL.pLife = &gNPC[i].life;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
if (i == 0x200)
|
||||||
|
return FALSE;
|
||||||
|
|
||||||
|
gBL.flag = TRUE;
|
||||||
|
gBL.max = gNPC[i].life;
|
||||||
|
gBL.br = gNPC[i].life;
|
||||||
|
gBL.pLife = &gNPC[i].life;
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool StartBossLife2(void)
|
BOOL StartBossLife2(void)
|
||||||
{
|
{
|
||||||
gBL.flag = true;
|
gBL.flag = TRUE;
|
||||||
gBL.max = gBoss[0].life;
|
gBL.max = gBoss[0].life;
|
||||||
gBL.br = gBoss[0].life;
|
gBL.br = gBoss[0].life;
|
||||||
gBL.pLife = &gBoss[0].life;
|
gBL.pLife = &gBoss[0].life;
|
||||||
return true;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PutBossLife(void)
|
void PutBossLife(void)
|
||||||
|
@ -55,32 +54,33 @@ void PutBossLife(void)
|
||||||
RECT rcLife = {0, 24, 0, 32};
|
RECT rcLife = {0, 24, 0, 32};
|
||||||
RECT rcBr = {0, 32, 232, 40};
|
RECT rcBr = {0, 32, 232, 40};
|
||||||
|
|
||||||
if (gBL.flag)
|
if (gBL.flag == FALSE)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (*gBL.pLife < 1)
|
||||||
{
|
{
|
||||||
if (*gBL.pLife >= 1)
|
gBL.flag = FALSE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
rcLife.right = 198 * *gBL.pLife / gBL.max;
|
||||||
|
|
||||||
|
if (gBL.br > *gBL.pLife)
|
||||||
{
|
{
|
||||||
rcLife.right = 198 * *gBL.pLife / gBL.max;
|
if (++gBL.count > 30)
|
||||||
|
|
||||||
if (gBL.br <= *gBL.pLife)
|
|
||||||
{
|
|
||||||
gBL.count = 0;
|
|
||||||
}
|
|
||||||
else if (++gBL.count > 30)
|
|
||||||
{
|
|
||||||
--gBL.br;
|
--gBL.br;
|
||||||
}
|
|
||||||
|
|
||||||
rcBr.right = 198 * gBL.br / gBL.max;
|
|
||||||
|
|
||||||
PutBitmap3(&grcGame, (WINDOW_WIDTH - 256) / 2, WINDOW_HEIGHT - 20, &rcBox1, SURFACE_ID_TEXT_BOX);
|
|
||||||
PutBitmap3(&grcGame, (WINDOW_WIDTH - 256) / 2, WINDOW_HEIGHT - 12, &rcBox2, SURFACE_ID_TEXT_BOX);
|
|
||||||
PutBitmap3(&grcGame, (WINDOW_WIDTH - 176) / 2, WINDOW_HEIGHT - 16, &rcBr, SURFACE_ID_TEXT_BOX);
|
|
||||||
PutBitmap3(&grcGame, (WINDOW_WIDTH - 176) / 2, WINDOW_HEIGHT - 16, &rcLife, SURFACE_ID_TEXT_BOX);
|
|
||||||
PutBitmap3(&grcGame, (WINDOW_WIDTH - 240) / 2, WINDOW_HEIGHT - 16, &rcText, SURFACE_ID_TEXT_BOX);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
gBL.flag = false;
|
gBL.count = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
rcBr.right = 198 * gBL.br / gBL.max;
|
||||||
|
|
||||||
|
PutBitmap3(&grcGame, (WINDOW_WIDTH - 256) / 2, WINDOW_HEIGHT - 20, &rcBox1, SURFACE_ID_TEXT_BOX);
|
||||||
|
PutBitmap3(&grcGame, (WINDOW_WIDTH - 256) / 2, WINDOW_HEIGHT - 12, &rcBox2, SURFACE_ID_TEXT_BOX);
|
||||||
|
PutBitmap3(&grcGame, (WINDOW_WIDTH - 176) / 2, WINDOW_HEIGHT - 16, &rcBr, SURFACE_ID_TEXT_BOX);
|
||||||
|
PutBitmap3(&grcGame, (WINDOW_WIDTH - 176) / 2, WINDOW_HEIGHT - 16, &rcLife, SURFACE_ID_TEXT_BOX);
|
||||||
|
PutBitmap3(&grcGame, (WINDOW_WIDTH - 240) / 2, WINDOW_HEIGHT - 16, &rcText, SURFACE_ID_TEXT_BOX);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "WindowsWrapper.h"
|
||||||
|
|
||||||
void InitBossLife(void);
|
void InitBossLife(void);
|
||||||
bool StartBossLife(int code_event);
|
BOOL StartBossLife(int code_event);
|
||||||
bool StartBossLife2(void);
|
BOOL StartBossLife2(void);
|
||||||
void PutBossLife(void);
|
void PutBossLife(void);
|
||||||
|
|
Loading…
Add table
Reference in a new issue