mirror of
https://gitlab.com/drummyfish/anarch.git
synced 2024-12-21 23:08:49 -05:00
Optimize
This commit is contained in:
parent
6fa39d6e7d
commit
b1d3408b25
7
levels.h
7
levels.h
@ -90,8 +90,9 @@ typedef struct
|
|||||||
#define SFG_LEVEL_ELEMENT_BARREL 0x01
|
#define SFG_LEVEL_ELEMENT_BARREL 0x01
|
||||||
#define SFG_LEVEL_ELEMENT_HEALTH 0x02
|
#define SFG_LEVEL_ELEMENT_HEALTH 0x02
|
||||||
|
|
||||||
/* Monsters have lower 4 bits zero and are only distinguished by the 4 upper
|
/*
|
||||||
bits, as this is convenient for the code.
|
Monsters have lower 4 bits zero and are only distinguished by the 4 upper
|
||||||
|
bits, as this is convenient for the code.
|
||||||
*/
|
*/
|
||||||
#define SFG_LEVEL_ELEMENT_MONSTER_SPIDER 0x00
|
#define SFG_LEVEL_ELEMENT_MONSTER_SPIDER 0x00
|
||||||
#define SFG_LEVEL_ELEMENT_MONSTER_DESTROYER 0x10
|
#define SFG_LEVEL_ELEMENT_MONSTER_DESTROYER 0x10
|
||||||
@ -100,6 +101,8 @@ typedef struct
|
|||||||
#define SFG_LEVEL_ELEMENT_MONSTER_ENDER 0x40
|
#define SFG_LEVEL_ELEMENT_MONSTER_ENDER 0x40
|
||||||
#define SFG_LEVEL_ELEMENT_MONSTER_TURRET 0x50
|
#define SFG_LEVEL_ELEMENT_MONSTER_TURRET 0x50
|
||||||
|
|
||||||
|
#define SFG_LEVEL_ELEMENT_TYPE_IS_MOSTER(t) (((t) & 0x0f) == 0)
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
SFG_MapArray mapArray;
|
SFG_MapArray mapArray;
|
||||||
|
65
main.c
65
main.c
@ -510,60 +510,59 @@ static inline uint8_t SFG_RCLUnitToZBuffer(RCL_Unit x)
|
|||||||
const uint8_t *SFG_getMonsterSprite(
|
const uint8_t *SFG_getMonsterSprite(
|
||||||
uint8_t monsterType, uint8_t state, uint8_t frame)
|
uint8_t monsterType, uint8_t state, uint8_t frame)
|
||||||
{
|
{
|
||||||
|
uint8_t index = 0; // makes the code smaller compared to returning pointers
|
||||||
|
|
||||||
switch (monsterType)
|
switch (monsterType)
|
||||||
{
|
{
|
||||||
case SFG_LEVEL_ELEMENT_MONSTER_SPIDER:
|
case SFG_LEVEL_ELEMENT_MONSTER_SPIDER:
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case SFG_MONSTER_STATE_ATTACKING: return SFG_monsterSprites[1]; break;
|
case SFG_MONSTER_STATE_ATTACKING: index = 1; break;
|
||||||
case SFG_MONSTER_STATE_IDLE: return SFG_monsterSprites[0]; break;
|
case SFG_MONSTER_STATE_IDLE: index = 0; break;
|
||||||
default: return SFG_monsterSprites[frame ? 0 : 2]; break;
|
default: index = frame ? 0 : 2; break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SFG_LEVEL_ELEMENT_MONSTER_WARRIOR:
|
case SFG_LEVEL_ELEMENT_MONSTER_WARRIOR:
|
||||||
return state != SFG_MONSTER_STATE_ATTACKING ?
|
index = state != SFG_MONSTER_STATE_ATTACKING ? 6 : 7;
|
||||||
SFG_monsterSprites[6] : SFG_monsterSprites[7];
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SFG_LEVEL_ELEMENT_MONSTER_DESTROYER:
|
case SFG_LEVEL_ELEMENT_MONSTER_DESTROYER:
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case SFG_MONSTER_STATE_ATTACKING: return SFG_monsterSprites[4]; break;
|
case SFG_MONSTER_STATE_ATTACKING: index = 4; break;
|
||||||
case SFG_MONSTER_STATE_IDLE: return SFG_monsterSprites[3]; break;
|
case SFG_MONSTER_STATE_IDLE: index = 3; break;
|
||||||
default: return SFG_monsterSprites[frame ? 3 : 5]; break;
|
default: index = frame ? 3 : 5; break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SFG_LEVEL_ELEMENT_MONSTER_PLASMABOT:
|
case SFG_LEVEL_ELEMENT_MONSTER_PLASMABOT:
|
||||||
return state != SFG_MONSTER_STATE_ATTACKING ?
|
index = state != SFG_MONSTER_STATE_ATTACKING ? 8 : 9;
|
||||||
SFG_monsterSprites[8] : SFG_monsterSprites[9];
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SFG_LEVEL_ELEMENT_MONSTER_ENDER:
|
case SFG_LEVEL_ELEMENT_MONSTER_ENDER:
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case SFG_MONSTER_STATE_ATTACKING: return SFG_monsterSprites[12]; break;
|
case SFG_MONSTER_STATE_ATTACKING: index = 12; break;
|
||||||
case SFG_MONSTER_STATE_IDLE: return SFG_monsterSprites[10]; break;
|
case SFG_MONSTER_STATE_IDLE: index = 10; break;
|
||||||
default: return SFG_monsterSprites[frame ? 10 : 11]; break;
|
default: index = frame ? 10 : 11; break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case SFG_LEVEL_ELEMENT_MONSTER_TURRET:
|
case SFG_LEVEL_ELEMENT_MONSTER_TURRET:
|
||||||
switch (state)
|
switch (state)
|
||||||
{
|
{
|
||||||
case SFG_MONSTER_STATE_ATTACKING: return SFG_monsterSprites[15]; break;
|
case SFG_MONSTER_STATE_ATTACKING: index = 15; break;
|
||||||
case SFG_MONSTER_STATE_IDLE: return SFG_monsterSprites[13]; break;
|
case SFG_MONSTER_STATE_IDLE: index = 13; break;
|
||||||
default: return SFG_monsterSprites[frame ? 13 : 14]; break;
|
default: index = frame ? 13 : 14; break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return SFG_monsterSprites[0];
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return SFG_monsterSprites[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1095,21 +1094,10 @@ void SFG_setAndInitLevel(const SFG_Level *level)
|
|||||||
{
|
{
|
||||||
const SFG_LevelElement *e = &(SFG_currentLevel.levelPointer->elements[i]);
|
const SFG_LevelElement *e = &(SFG_currentLevel.levelPointer->elements[i]);
|
||||||
|
|
||||||
switch (e->type)
|
if (e->type != SFG_LEVEL_ELEMENT_NONE)
|
||||||
{
|
{
|
||||||
case SFG_LEVEL_ELEMENT_BARREL:
|
if (SFG_LEVEL_ELEMENT_TYPE_IS_MOSTER(e->type))
|
||||||
case SFG_LEVEL_ELEMENT_HEALTH:
|
{
|
||||||
SFG_LOG("adding item");
|
|
||||||
SFG_currentLevel.itemRecords[SFG_currentLevel.itemRecordCount] = i;
|
|
||||||
SFG_currentLevel.itemRecordCount++;
|
|
||||||
break;
|
|
||||||
|
|
||||||
case SFG_LEVEL_ELEMENT_MONSTER_SPIDER:
|
|
||||||
case SFG_LEVEL_ELEMENT_MONSTER_DESTROYER:
|
|
||||||
case SFG_LEVEL_ELEMENT_MONSTER_WARRIOR:
|
|
||||||
case SFG_LEVEL_ELEMENT_MONSTER_PLASMABOT:
|
|
||||||
case SFG_LEVEL_ELEMENT_MONSTER_ENDER:
|
|
||||||
case SFG_LEVEL_ELEMENT_MONSTER_TURRET:
|
|
||||||
SFG_LOG("adding monster");
|
SFG_LOG("adding monster");
|
||||||
|
|
||||||
monster =
|
monster =
|
||||||
@ -1121,10 +1109,13 @@ void SFG_setAndInitLevel(const SFG_Level *level)
|
|||||||
monster->coords[1] = e->coords[1] * 4;
|
monster->coords[1] = e->coords[1] * 4;
|
||||||
|
|
||||||
SFG_currentLevel.monsterRecordCount++;
|
SFG_currentLevel.monsterRecordCount++;
|
||||||
break;
|
}
|
||||||
|
else
|
||||||
default:
|
{
|
||||||
break;
|
SFG_LOG("adding item");
|
||||||
|
SFG_currentLevel.itemRecords[SFG_currentLevel.itemRecordCount] = i;
|
||||||
|
SFG_currentLevel.itemRecordCount++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user