mirror of
https://gitlab.com/drummyfish/anarch.git
synced 2025-02-16 07:00:11 -05:00
Fix element numbers
This commit is contained in:
parent
26a8f4adab
commit
41f61b049b
@ -27,7 +27,26 @@ elementTypes = [
|
|||||||
"LOCK0",
|
"LOCK0",
|
||||||
"LOCK1",
|
"LOCK1",
|
||||||
"LOCK2",
|
"LOCK2",
|
||||||
"BLOCKER"
|
"BLOCKER",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
"MONSTER_SPIDER",
|
||||||
|
"MONSTER_DESTROYER",
|
||||||
|
"MONSTER_WARRIOR",
|
||||||
|
"MONSTER_PLASMABOT",
|
||||||
|
"MONSTER_ENDER",
|
||||||
|
"MONSTER_TURRET",
|
||||||
|
"MONSTER_EXPLODER"
|
||||||
]
|
]
|
||||||
|
|
||||||
propertyTypes = [
|
propertyTypes = [
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.2 KiB |
28
levels.h
28
levels.h
@ -86,7 +86,7 @@ typedef struct
|
|||||||
unused because that will be used by the game engine, so the values must be
|
unused because that will be used by the game engine, so the values must be
|
||||||
lower than 128.
|
lower than 128.
|
||||||
*/
|
*/
|
||||||
#define SFG_LEVEL_ELEMENT_NONE 255
|
#define SFG_LEVEL_ELEMENT_NONE 0
|
||||||
#define SFG_LEVEL_ELEMENT_BARREL 0x01
|
#define SFG_LEVEL_ELEMENT_BARREL 0x01
|
||||||
#define SFG_LEVEL_ELEMENT_HEALTH 0x02
|
#define SFG_LEVEL_ELEMENT_HEALTH 0x02
|
||||||
#define SFG_LEVEL_ELEMENT_BULLETS 0x03
|
#define SFG_LEVEL_ELEMENT_BULLETS 0x03
|
||||||
@ -110,24 +110,24 @@ typedef struct
|
|||||||
#define SFG_LEVEL_ELEMENT_LOCK2 0x12
|
#define SFG_LEVEL_ELEMENT_LOCK2 0x12
|
||||||
#define SFG_LEVEL_ELEMENT_BLOCKER 0x13 ///< Invisible wall.
|
#define SFG_LEVEL_ELEMENT_BLOCKER 0x13 ///< Invisible wall.
|
||||||
|
|
||||||
/*
|
#define SFG_LEVEL_ELEMENT_MONSTER_SPIDER 0x20
|
||||||
Monsters have lower 4 bits zero and are only distinguished by the 4 upper
|
#define SFG_LEVEL_ELEMENT_MONSTER_DESTROYER 0x21
|
||||||
bits, as this is convenient for the code.
|
#define SFG_LEVEL_ELEMENT_MONSTER_WARRIOR 0x22
|
||||||
*/
|
#define SFG_LEVEL_ELEMENT_MONSTER_PLASMABOT 0x23
|
||||||
#define SFG_LEVEL_ELEMENT_MONSTER_SPIDER 0x00
|
#define SFG_LEVEL_ELEMENT_MONSTER_ENDER 0x24
|
||||||
#define SFG_LEVEL_ELEMENT_MONSTER_DESTROYER 0x10
|
#define SFG_LEVEL_ELEMENT_MONSTER_TURRET 0x25
|
||||||
#define SFG_LEVEL_ELEMENT_MONSTER_WARRIOR 0x20
|
#define SFG_LEVEL_ELEMENT_MONSTER_EXPLODER 0x26
|
||||||
#define SFG_LEVEL_ELEMENT_MONSTER_PLASMABOT 0x30
|
|
||||||
#define SFG_LEVEL_ELEMENT_MONSTER_ENDER 0x40
|
|
||||||
#define SFG_LEVEL_ELEMENT_MONSTER_TURRET 0x50
|
|
||||||
#define SFG_LEVEL_ELEMENT_MONSTER_EXPLODER 0x60
|
|
||||||
|
|
||||||
#define SFG_MONSTERS_TOTAL 7
|
#define SFG_MONSTERS_TOTAL 7
|
||||||
|
|
||||||
#define SFG_MONSTER_TYPE_TO_INDEX(monsterType) \
|
#define SFG_MONSTER_TYPE_TO_INDEX(monsterType) \
|
||||||
((monsterType) >> 4)
|
((monsterType) - SFG_LEVEL_ELEMENT_MONSTER_SPIDER)
|
||||||
|
|
||||||
#define SFG_LEVEL_ELEMENT_TYPE_IS_MOSTER(t) (((t) & 0x0f) == 0)
|
#define SFG_MONSTER_INDEX_TO_TYPE(monsterIndex) \
|
||||||
|
((monsterIndex) + SFG_LEVEL_ELEMENT_MONSTER_SPIDER)
|
||||||
|
|
||||||
|
#define SFG_LEVEL_ELEMENT_TYPE_IS_MOSTER(t) \
|
||||||
|
((t) >= SFG_LEVEL_ELEMENT_MONSTER_SPIDER)
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
|
13
main.c
13
main.c
@ -188,7 +188,8 @@ typedef struct
|
|||||||
} SFG_MonsterRecord;
|
} SFG_MonsterRecord;
|
||||||
|
|
||||||
#define SFG_MR_STATE(mr) ((mr).stateType & SFG_MONSTER_MASK_STATE)
|
#define SFG_MR_STATE(mr) ((mr).stateType & SFG_MONSTER_MASK_STATE)
|
||||||
#define SFG_MR_TYPE(mr) ((mr).stateType & SFG_MONSTER_MASK_TYPE)
|
#define SFG_MR_TYPE(mr) \
|
||||||
|
(SFG_MONSTER_INDEX_TO_TYPE(((mr).stateType & SFG_MONSTER_MASK_TYPE) >> 4))
|
||||||
|
|
||||||
#define SFG_MONSTER_COORD_TO_RCL_UNITS(c) (c * 256)
|
#define SFG_MONSTER_COORD_TO_RCL_UNITS(c) (c * 256)
|
||||||
#define SFG_MONSTER_COORD_TO_SQUARES(c) (c / 4)
|
#define SFG_MONSTER_COORD_TO_SQUARES(c) (c / 4)
|
||||||
@ -1294,7 +1295,9 @@ void SFG_setAndInitLevel(const SFG_Level *level)
|
|||||||
monster =
|
monster =
|
||||||
&(SFG_currentLevel.monsterRecords[SFG_currentLevel.monsterRecordCount]);
|
&(SFG_currentLevel.monsterRecords[SFG_currentLevel.monsterRecordCount]);
|
||||||
|
|
||||||
monster->stateType = e->type | SFG_MONSTER_STATE_INACTIVE;
|
monster->stateType = (SFG_MONSTER_TYPE_TO_INDEX(e->type) << 4)
|
||||||
|
| SFG_MONSTER_STATE_INACTIVE;
|
||||||
|
|
||||||
monster->health =
|
monster->health =
|
||||||
SFG_GET_MONSTER_MAX_HEALTH(SFG_MONSTER_TYPE_TO_INDEX(e->type));
|
SFG_GET_MONSTER_MAX_HEALTH(SFG_MONSTER_TYPE_TO_INDEX(e->type));
|
||||||
|
|
||||||
@ -2092,7 +2095,7 @@ void SFG_monsterPerformAI(SFG_MonsterRecord *monster)
|
|||||||
newPos[1] = monster->coords[1];
|
newPos[1] = monster->coords[1];
|
||||||
}
|
}
|
||||||
|
|
||||||
monster->stateType = state | type;
|
monster->stateType = state | (monsterNumber << 4);
|
||||||
monster->coords[0] = newPos[0];
|
monster->coords[0] = newPos[0];
|
||||||
monster->coords[1] = newPos[1];;
|
monster->coords[1] = newPos[1];;
|
||||||
}
|
}
|
||||||
@ -2449,7 +2452,9 @@ void SFG_updateLevel()
|
|||||||
}
|
}
|
||||||
else if (monster->health == 0)
|
else if (monster->health == 0)
|
||||||
{
|
{
|
||||||
monster->stateType = SFG_MR_TYPE(*monster) | SFG_MONSTER_STATE_DYING;
|
monster->stateType = (monster->stateType & SFG_MONSTER_MASK_TYPE) |
|
||||||
|
SFG_MONSTER_STATE_DYING;
|
||||||
|
|
||||||
SFG_playSoundSafe(2,255);
|
SFG_playSoundSafe(2,255);
|
||||||
}
|
}
|
||||||
else if (state != SFG_MONSTER_STATE_INACTIVE)
|
else if (state != SFG_MONSTER_STATE_INACTIVE)
|
||||||
|
Loading…
Reference in New Issue
Block a user