mirror of
https://github.com/isledecomp/isle.git
synced 2026-01-24 00:31:16 +00:00
Improve Score::FillArea
This commit is contained in:
parent
03b19f301b
commit
77e18eaacb
@ -26,19 +26,19 @@ class AmbulanceMissionState : public LegoState {
|
|||||||
|
|
||||||
inline void SetUnknown0x08(undefined4 p_unk0x08) { m_unk0x08 = p_unk0x08; }
|
inline void SetUnknown0x08(undefined4 p_unk0x08) { m_unk0x08 = p_unk0x08; }
|
||||||
|
|
||||||
inline MxU16 GetColor(MxU8 p_id)
|
inline MxU16 GetScore(MxU8 p_id)
|
||||||
{
|
{
|
||||||
switch (p_id) {
|
switch (p_id) {
|
||||||
case 1:
|
case 1:
|
||||||
return m_color1;
|
return m_score1;
|
||||||
case 2:
|
case 2:
|
||||||
return m_color2;
|
return m_score2;
|
||||||
case 3:
|
case 3:
|
||||||
return m_color3;
|
return m_score3;
|
||||||
case 4:
|
case 4:
|
||||||
return m_color4;
|
return m_score4;
|
||||||
case 5:
|
case 5:
|
||||||
return m_color5;
|
return m_score5;
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -55,11 +55,11 @@ class AmbulanceMissionState : public LegoState {
|
|||||||
MxU16 m_unk0x14; // 0x14
|
MxU16 m_unk0x14; // 0x14
|
||||||
MxU16 m_unk0x16; // 0x16
|
MxU16 m_unk0x16; // 0x16
|
||||||
MxU16 m_unk0x18; // 0x18
|
MxU16 m_unk0x18; // 0x18
|
||||||
MxU16 m_color1; // 0x1a
|
MxU16 m_score1; // 0x1a
|
||||||
MxU16 m_color2; // 0x1c
|
MxU16 m_score2; // 0x1c
|
||||||
MxU16 m_color3; // 0x1e
|
MxU16 m_score3; // 0x1e
|
||||||
MxU16 m_color4; // 0x20
|
MxU16 m_score4; // 0x20
|
||||||
MxU16 m_color5; // 0x22
|
MxU16 m_score5; // 0x22
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // AMBULANCEMISSIONSTATE_H
|
#endif // AMBULANCEMISSIONSTATE_H
|
||||||
|
|||||||
@ -9,7 +9,7 @@ struct PizzaMissionStateEntry {
|
|||||||
undefined2 m_unk0x00; // 0x00
|
undefined2 m_unk0x00; // 0x00
|
||||||
MxU8 m_id; // 0x02
|
MxU8 m_id; // 0x02
|
||||||
undefined m_unk0x03[0x15]; // 0x03
|
undefined m_unk0x03[0x15]; // 0x03
|
||||||
MxU16 m_color; // 0x18
|
MxU16 m_score; // 0x18
|
||||||
undefined m_unk0x18[6]; // 0x1a
|
undefined m_unk0x18[6]; // 0x1a
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -32,7 +32,7 @@ class PizzaMissionState : public LegoState {
|
|||||||
|
|
||||||
MxResult Serialize(LegoFile* p_legoFile) override; // vtable+0x1c
|
MxResult Serialize(LegoFile* p_legoFile) override; // vtable+0x1c
|
||||||
|
|
||||||
inline MxU16 GetColor(MxU8 p_id) { return GetState(p_id)->m_color; }
|
inline MxU16 GetScore(MxU8 p_id) { return GetState(p_id)->m_score; }
|
||||||
|
|
||||||
// SYNTHETIC: LEGO1 0x10039350
|
// SYNTHETIC: LEGO1 0x10039350
|
||||||
// PizzaMissionState::`scalar deleting destructor'
|
// PizzaMissionState::`scalar deleting destructor'
|
||||||
|
|||||||
@ -7,12 +7,12 @@
|
|||||||
struct RaceStateEntry {
|
struct RaceStateEntry {
|
||||||
public:
|
public:
|
||||||
inline MxS16 GetUnknown0x02() { return m_unk0x02; }
|
inline MxS16 GetUnknown0x02() { return m_unk0x02; }
|
||||||
inline MxU16 GetColor() { return m_color; }
|
inline MxU16 GetScore() { return m_score; }
|
||||||
|
|
||||||
// TODO: Possibly private
|
// TODO: Possibly private
|
||||||
MxU8 m_id; // 0x00
|
MxU8 m_id; // 0x00
|
||||||
MxS16 m_unk0x02; // 0x02
|
MxS16 m_unk0x02; // 0x02
|
||||||
MxU16 m_color; // 0x04
|
MxU16 m_score; // 0x04
|
||||||
};
|
};
|
||||||
|
|
||||||
// VTABLE: LEGO1 0x100d5e30
|
// VTABLE: LEGO1 0x100d5e30
|
||||||
|
|||||||
@ -41,7 +41,7 @@ class Score : public LegoWorld {
|
|||||||
void Paint();
|
void Paint();
|
||||||
MxLong FUN_10001510(MxEndActionNotificationParam& p_param);
|
MxLong FUN_10001510(MxEndActionNotificationParam& p_param);
|
||||||
MxLong FUN_100016d0(LegoControlManagerEvent& p_param);
|
MxLong FUN_100016d0(LegoControlManagerEvent& p_param);
|
||||||
void FillArea(MxU32 p_x, MxU32 p_y, MxS16 p_color);
|
void FillArea(MxU32 i_activity, MxU32 i_actor, MxS16 score);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void DeleteScript();
|
void DeleteScript();
|
||||||
|
|||||||
@ -24,19 +24,19 @@ class TowTrackMissionState : public LegoState {
|
|||||||
|
|
||||||
MxResult Serialize(LegoFile* p_legoFile) override; // vtable+0x1c
|
MxResult Serialize(LegoFile* p_legoFile) override; // vtable+0x1c
|
||||||
|
|
||||||
inline MxU16 GetColor(MxU8 p_id)
|
inline MxU16 GetScore(MxU8 p_id)
|
||||||
{
|
{
|
||||||
switch (p_id) {
|
switch (p_id) {
|
||||||
case 1:
|
case 1:
|
||||||
return m_color1;
|
return m_score1;
|
||||||
case 2:
|
case 2:
|
||||||
return m_color2;
|
return m_score2;
|
||||||
case 3:
|
case 3:
|
||||||
return m_color3;
|
return m_score3;
|
||||||
case 4:
|
case 4:
|
||||||
return m_color4;
|
return m_score4;
|
||||||
case 5:
|
case 5:
|
||||||
return m_color5;
|
return m_score5;
|
||||||
default:
|
default:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -54,11 +54,11 @@ class TowTrackMissionState : public LegoState {
|
|||||||
MxU16 m_unk0x16; // 0x16
|
MxU16 m_unk0x16; // 0x16
|
||||||
MxU16 m_unk0x18; // 0x18
|
MxU16 m_unk0x18; // 0x18
|
||||||
MxU16 m_unk0x1a; // 0x1a
|
MxU16 m_unk0x1a; // 0x1a
|
||||||
MxU16 m_color1; // 0x1c
|
MxU16 m_score1; // 0x1c
|
||||||
MxU16 m_color2; // 0x1e
|
MxU16 m_score2; // 0x1e
|
||||||
MxU16 m_color3; // 0x20
|
MxU16 m_score3; // 0x20
|
||||||
MxU16 m_color4; // 0x22
|
MxU16 m_score4; // 0x22
|
||||||
MxU16 m_color5; // 0x24
|
MxU16 m_score5; // 0x24
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // TOWTRACKMISSIONSTATE_H
|
#endif // TOWTRACKMISSIONSTATE_H
|
||||||
|
|||||||
@ -12,11 +12,11 @@ AmbulanceMissionState::AmbulanceMissionState()
|
|||||||
m_unk0x16 = 0;
|
m_unk0x16 = 0;
|
||||||
m_unk0x0c = 0;
|
m_unk0x0c = 0;
|
||||||
m_unk0x18 = 0;
|
m_unk0x18 = 0;
|
||||||
m_color1 = 0;
|
m_score1 = 0;
|
||||||
m_color2 = 0;
|
m_score2 = 0;
|
||||||
m_color3 = 0;
|
m_score3 = 0;
|
||||||
m_color4 = 0;
|
m_score4 = 0;
|
||||||
m_color5 = 0;
|
m_score5 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// STUB: LEGO1 0x10037440
|
// STUB: LEGO1 0x10037440
|
||||||
|
|||||||
@ -13,11 +13,11 @@ TowTrackMissionState::TowTrackMissionState()
|
|||||||
m_unk0x0c = 0;
|
m_unk0x0c = 0;
|
||||||
m_unk0x1a = 0;
|
m_unk0x1a = 0;
|
||||||
m_unk0x10 = 0;
|
m_unk0x10 = 0;
|
||||||
m_color1 = 0;
|
m_score1 = 0;
|
||||||
m_color2 = 0;
|
m_score2 = 0;
|
||||||
m_color3 = 0;
|
m_score3 = 0;
|
||||||
m_color4 = 0;
|
m_score4 = 0;
|
||||||
m_color5 = 0;
|
m_score5 = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x1004dde0
|
// FUNCTION: LEGO1 0x1004dde0
|
||||||
@ -31,11 +31,11 @@ MxResult TowTrackMissionState::Serialize(LegoFile* p_legoFile)
|
|||||||
p_legoFile->Read(&m_unk0x16, sizeof(m_unk0x16));
|
p_legoFile->Read(&m_unk0x16, sizeof(m_unk0x16));
|
||||||
p_legoFile->Read(&m_unk0x18, sizeof(m_unk0x18));
|
p_legoFile->Read(&m_unk0x18, sizeof(m_unk0x18));
|
||||||
p_legoFile->Read(&m_unk0x1a, sizeof(m_unk0x1a));
|
p_legoFile->Read(&m_unk0x1a, sizeof(m_unk0x1a));
|
||||||
p_legoFile->Read(&m_color1, sizeof(m_color1));
|
p_legoFile->Read(&m_score1, sizeof(m_score1));
|
||||||
p_legoFile->Read(&m_color2, sizeof(m_color2));
|
p_legoFile->Read(&m_score2, sizeof(m_score2));
|
||||||
p_legoFile->Read(&m_color3, sizeof(m_color3));
|
p_legoFile->Read(&m_score3, sizeof(m_score3));
|
||||||
p_legoFile->Read(&m_color4, sizeof(m_color4));
|
p_legoFile->Read(&m_score4, sizeof(m_score4));
|
||||||
p_legoFile->Read(&m_color5, sizeof(m_color5));
|
p_legoFile->Read(&m_score5, sizeof(m_score5));
|
||||||
}
|
}
|
||||||
else if (p_legoFile->IsWriteMode()) {
|
else if (p_legoFile->IsWriteMode()) {
|
||||||
MxU16 write = m_unk0x12;
|
MxU16 write = m_unk0x12;
|
||||||
@ -53,19 +53,19 @@ MxResult TowTrackMissionState::Serialize(LegoFile* p_legoFile)
|
|||||||
write = m_unk0x1a;
|
write = m_unk0x1a;
|
||||||
p_legoFile->Write(&write, sizeof(m_unk0x12));
|
p_legoFile->Write(&write, sizeof(m_unk0x12));
|
||||||
|
|
||||||
write = m_color1;
|
write = m_score1;
|
||||||
p_legoFile->Write(&write, sizeof(m_unk0x12));
|
p_legoFile->Write(&write, sizeof(m_unk0x12));
|
||||||
|
|
||||||
write = m_color2;
|
write = m_score2;
|
||||||
p_legoFile->Write(&write, sizeof(m_unk0x12));
|
p_legoFile->Write(&write, sizeof(m_unk0x12));
|
||||||
|
|
||||||
write = m_color3;
|
write = m_score3;
|
||||||
p_legoFile->Write(&write, sizeof(m_unk0x12));
|
p_legoFile->Write(&write, sizeof(m_unk0x12));
|
||||||
|
|
||||||
write = m_color4;
|
write = m_score4;
|
||||||
p_legoFile->Write(&write, sizeof(m_unk0x12));
|
p_legoFile->Write(&write, sizeof(m_unk0x12));
|
||||||
|
|
||||||
write = m_color5;
|
write = m_score5;
|
||||||
p_legoFile->Write(&write, sizeof(m_unk0x12));
|
p_legoFile->Write(&write, sizeof(m_unk0x12));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -262,23 +262,23 @@ void Score::Paint()
|
|||||||
|
|
||||||
m_surface = (MxU8*) desc.lpSurface;
|
m_surface = (MxU8*) desc.lpSurface;
|
||||||
|
|
||||||
for (MxU8 id = 1; id <= 5; id++) {
|
for (MxU8 actor = 1; actor <= 5; actor++) {
|
||||||
MxU16 color;
|
MxU16 score;
|
||||||
|
|
||||||
color = carRaceState ? carRaceState->GetState(id)->GetColor() : 0;
|
score = carRaceState ? carRaceState->GetState(actor)->GetScore() : 0;
|
||||||
FillArea(0, id - 1, color);
|
FillArea(0, actor - 1, score);
|
||||||
|
|
||||||
color = jetskiRaceState ? jetskiRaceState->GetState(id)->GetColor() : 0;
|
score = jetskiRaceState ? jetskiRaceState->GetState(actor)->GetScore() : 0;
|
||||||
FillArea(1, id - 1, color);
|
FillArea(1, actor - 1, score);
|
||||||
|
|
||||||
color = pizzaMissionState ? pizzaMissionState->GetColor(id) : 0;
|
score = pizzaMissionState ? pizzaMissionState->GetScore(actor) : 0;
|
||||||
FillArea(2, id - 1, color);
|
FillArea(2, actor - 1, score);
|
||||||
|
|
||||||
color = towTrackMissionState ? towTrackMissionState->GetColor(id) : 0;
|
score = towTrackMissionState ? towTrackMissionState->GetScore(actor) : 0;
|
||||||
FillArea(3, id - 1, color);
|
FillArea(3, actor - 1, score);
|
||||||
|
|
||||||
color = ambulanceMissionState ? ambulanceMissionState->GetColor(id) : 0;
|
score = ambulanceMissionState ? ambulanceMissionState->GetScore(actor) : 0;
|
||||||
FillArea(4, id - 1, color);
|
FillArea(4, actor - 1, score);
|
||||||
}
|
}
|
||||||
|
|
||||||
cube->m_surface->Unlock(desc.lpSurface);
|
cube->m_surface->Unlock(desc.lpSurface);
|
||||||
@ -289,39 +289,21 @@ void Score::Paint()
|
|||||||
}
|
}
|
||||||
|
|
||||||
// FUNCTION: LEGO1 0x10001d20
|
// FUNCTION: LEGO1 0x10001d20
|
||||||
void Score::FillArea(MxU32 p_x, MxU32 p_y, MxS16 p_color)
|
// FUNCTION: BETA10 0x100f4a52
|
||||||
|
void Score::FillArea(MxU32 i_activity, MxU32 i_actor, MxS16 score)
|
||||||
{
|
{
|
||||||
MxU32 data[24];
|
MxS32 local_3c[] = {0x2b00, 0x5700, 0x8000, 0xab00, 0xd600};
|
||||||
data[9] = 0x2b00;
|
MxS32 local_14[] = {0x2a, 0x27, 0x29, 0x29, 0x2a};
|
||||||
data[10] = 0x5700;
|
MxS32 local_50[] = {0x2f, 0x56, 0x81, 0xaa, 0xd4};
|
||||||
data[11] = 0x8000;
|
MxS32 local_28[] = {0x25, 0x29, 0x27, 0x28, 0x28};
|
||||||
data[19] = 0x2a;
|
MxS32 local_60[] = {0x11, 0xf, 0x08, 0x05};
|
||||||
data[12] = 0xab00;
|
|
||||||
data[13] = 0xd600;
|
MxU8* ptr = m_surface + local_3c[i_actor] + local_50[i_activity];
|
||||||
data[20] = 0x27;
|
MxS32 val = local_60[score];
|
||||||
data[21] = 0x29;
|
MxS32 size = local_28[i_activity];
|
||||||
data[22] = 0x29;
|
|
||||||
data[23] = 0x2a;
|
for (MxS32 i = 0; i < local_14[i_actor]; i++) {
|
||||||
data[4] = 0x2f;
|
memset(ptr, val, size);
|
||||||
data[5] = 0x56;
|
|
||||||
data[6] = 0x81;
|
|
||||||
data[15] = 0x29;
|
|
||||||
data[16] = 0x27;
|
|
||||||
data[7] = 0xaa;
|
|
||||||
data[8] = 0xd4;
|
|
||||||
data[14] = 0x25;
|
|
||||||
data[0] = 0x11;
|
|
||||||
data[17] = 0x28;
|
|
||||||
data[18] = 0x28;
|
|
||||||
data[1] = 0x0f;
|
|
||||||
MxU32 size = data[p_x + 14];
|
|
||||||
MxU8* ptr = data[p_x + 4] + data[p_y + 9] + m_surface;
|
|
||||||
MxS32 count = data[p_y + 19];
|
|
||||||
data[2] = 0x08;
|
|
||||||
data[3] = 0x05;
|
|
||||||
MxU32 value = data[p_color];
|
|
||||||
for (; count > 0; count--) {
|
|
||||||
memset(ptr++, value, size);
|
|
||||||
ptr += 0x100;
|
ptr += 0x100;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,3 +26,6 @@ m_AnimTreePtr: "Allow original naming from beta"
|
|||||||
m_BADuration: "Allow original naming from beta"
|
m_BADuration: "Allow original naming from beta"
|
||||||
m_assAnimP: "Allow original naming from beta"
|
m_assAnimP: "Allow original naming from beta"
|
||||||
m_disAnimP: "Allow original naming from beta"
|
m_disAnimP: "Allow original naming from beta"
|
||||||
|
i_activity: "Allow original naming from beta"
|
||||||
|
i_actor: "Allow original naming from beta"
|
||||||
|
score: "Allow original naming from beta"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user