mirror of
https://gitlab.com/drummyfish/anarch.git
synced 2024-11-25 02:12:19 -05:00
Add monster sprite func
This commit is contained in:
parent
3015bef087
commit
d04e2fbe6b
93
assets.h
93
assets.h
@ -441,12 +441,49 @@ SFG_PROGRAM_MEMORY uint8_t SFG_weaponImages[][SFG_TEXTURE_STORE_SIZE] =
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/* TODO: ENEMIES: create a functions that will take enemy ID and frame type
|
SFG_PROGRAM_MEMORY uint8_t SFG_effects[][SFG_TEXTURE_STORE_SIZE] =
|
||||||
(idle, attacking, ...) and will return pointer to sprite representing it --
|
{
|
||||||
allows reusing sprites and saving memory (e.g. a fyling monster can have same
|
{ // 0, explostion
|
||||||
frame for idle and walking, some enemies can share the same dead sprite etc.).
|
175,183,174,15,103,111,191,7,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,48,0,0,0,
|
||||||
Also: add flip option to sprite drawing function so that some frames can be
|
0,0,0,0,0,0,0,0,3,3,3,3,19,3,0,0,0,0,0,0,0,0,0,48,48,16,51,49,19,48,48,0,0,0,0,
|
||||||
reused flipped (good for walk anims). */
|
0,0,0,3,3,1,1,19,17,131,51,49,0,0,0,0,1,16,0,0,48,50,34,20,85,120,49,17,64,0,0,
|
||||||
|
0,0,65,1,0,0,34,17,69,87,117,17,33,16,0,0,0,0,4,16,16,4,18,17,21,87,85,18,33,16,
|
||||||
|
0,0,0,1,9,34,34,17,34,17,21,85,85,66,17,48,0,0,0,65,18,34,34,17,65,22,85,86,68,
|
||||||
|
65,19,51,0,0,48,17,34,34,33,18,65,68,70,68,68,102,67,51,0,1,19,49,34,34,33,18,
|
||||||
|
36,132,100,70,97,20,81,17,51,48,17,18,34,18,18,34,33,119,85,86,97,33,81,51,48,3,
|
||||||
|
51,18,33,17,34,33,37,119,85,100,97,18,35,51,0,48,49,34,18,34,33,102,87,119,117,
|
||||||
|
97,17,34,34,16,48,1,17,18,33,17,22,104,119,119,117,81,18,18,33,67,0,1,65,18,33,
|
||||||
|
20,71,119,119,119,119,132,65,18,34,64,48,0,69,81,17,86,69,88,119,119,133,81,17,
|
||||||
|
18,34,147,0,0,56,21,69,86,70,103,119,119,116,17,18,34,34,144,0,3,51,56,86,102,
|
||||||
|
102,120,118,101,120,81,34,34,35,0,0,48,51,17,85,102,102,103,70,102,136,85,34,34,
|
||||||
|
17,0,0,3,49,19,53,84,102,100,70,102,88,133,84,66,17,19,0,48,51,51,85,68,102,68,
|
||||||
|
102,102,101,97,33,68,19,17,48,3,3,49,81,36,84,17,70,101,82,33,18,33,67,51,0,0,
|
||||||
|
51,49,17,33,33,33,70,102,66,34,34,34,17,51,48,0,3,17,18,34,33,34,20,129,18,34,
|
||||||
|
34,34,34,51,0,0,49,17,34,33,17,17,33,65,34,34,17,18,34,19,48,0,1,18,33,17,17,17,
|
||||||
|
34,34,33,145,17,18,34,19,48,0,1,17,17,19,49,49,18,17,49,19,49,18,34,35,51,0,0,
|
||||||
|
17,51,51,17,49,18,19,3,19,51,17,17,36,3,0,3,51,51,48,48,3,17,16,48,17,3,51,17,
|
||||||
|
16,0,0,3,48,3,3,0,0,16,19,0,0,0,51,51,0,0,0,51,0,0,0,0,0,1,3,48,0,51,51,48,0,0
|
||||||
|
},
|
||||||
|
{ // 1, fireball
|
||||||
|
175,103,183,7,191,111,254,31,95,180,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,0,16,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,1,1,23,17,17,24,1,0,0,0,0,0,0,0,0,0,16,16,23,85,87,81,24,16,0,0,0,0,
|
||||||
|
0,0,0,1,8,17,119,115,55,119,17,129,16,0,0,0,0,0,0,0,129,23,119,51,51,55,113,24,
|
||||||
|
23,0,0,0,0,0,0,8,17,17,113,83,51,85,119,23,113,0,0,0,0,0,0,1,21,113,81,19,53,81,
|
||||||
|
17,119,129,0,0,0,0,0,0,17,19,53,17,19,50,17,17,113,16,16,0,0,0,0,1,33,83,49,17,
|
||||||
|
19,66,34,17,17,18,0,0,0,0,0,0,33,85,53,21,19,18,34,34,24,18,16,0,0,0,0,1,33,85,
|
||||||
|
85,84,68,20,34,35,66,98,0,0,0,0,0,0,33,83,53,20,68,51,51,51,70,34,16,0,0,0,0,1,
|
||||||
|
33,19,49,66,36,67,52,41,40,98,0,0,0,0,0,0,33,19,84,34,36,36,70,38,134,34,0,0,0,
|
||||||
|
0,0,0,8,21,81,18,36,66,98,102,166,32,0,0,0,0,0,0,2,21,81,18,68,68,38,134,105,33,
|
||||||
|
0,0,0,0,0,0,0,18,33,18,68,51,73,102,98,16,0,0,0,0,0,0,0,18,18,34,68,51,74,102,
|
||||||
|
102,16,0,0,0,0,0,0,0,1,17,18,34,36,38,38,129,0,0,0,0,0,0,0,0,0,8,134,38,34,34,
|
||||||
|
104,0,0,0,0,0,0,0,0,0,0,0,2,34,102,96,16,0,0,0,0,0,0,0,0,0,0,0,0,1,16,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
SFG_PROGRAM_MEMORY uint8_t SFG_monsterSprites[][SFG_TEXTURE_STORE_SIZE] =
|
SFG_PROGRAM_MEMORY uint8_t SFG_monsterSprites[][SFG_TEXTURE_STORE_SIZE] =
|
||||||
{
|
{
|
||||||
@ -517,50 +554,6 @@ SFG_PROGRAM_MEMORY uint8_t SFG_monsterSprites[][SFG_TEXTURE_STORE_SIZE] =
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
SFG_PROGRAM_MEMORY uint8_t SFG_effects[][SFG_TEXTURE_STORE_SIZE] =
|
|
||||||
{
|
|
||||||
{ // 0, explostion
|
|
||||||
175,183,174,15,103,111,191,7,31,95,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,48,0,0,0,
|
|
||||||
0,0,0,0,0,0,0,0,3,3,3,3,19,3,0,0,0,0,0,0,0,0,0,48,48,16,51,49,19,48,48,0,0,0,0,
|
|
||||||
0,0,0,3,3,1,1,19,17,131,51,49,0,0,0,0,1,16,0,0,48,50,34,20,85,120,49,17,64,0,0,
|
|
||||||
0,0,65,1,0,0,34,17,69,87,117,17,33,16,0,0,0,0,4,16,16,4,18,17,21,87,85,18,33,16,
|
|
||||||
0,0,0,1,9,34,34,17,34,17,21,85,85,66,17,48,0,0,0,65,18,34,34,17,65,22,85,86,68,
|
|
||||||
65,19,51,0,0,48,17,34,34,33,18,65,68,70,68,68,102,67,51,0,1,19,49,34,34,33,18,
|
|
||||||
36,132,100,70,97,20,81,17,51,48,17,18,34,18,18,34,33,119,85,86,97,33,81,51,48,3,
|
|
||||||
51,18,33,17,34,33,37,119,85,100,97,18,35,51,0,48,49,34,18,34,33,102,87,119,117,
|
|
||||||
97,17,34,34,16,48,1,17,18,33,17,22,104,119,119,117,81,18,18,33,67,0,1,65,18,33,
|
|
||||||
20,71,119,119,119,119,132,65,18,34,64,48,0,69,81,17,86,69,88,119,119,133,81,17,
|
|
||||||
18,34,147,0,0,56,21,69,86,70,103,119,119,116,17,18,34,34,144,0,3,51,56,86,102,
|
|
||||||
102,120,118,101,120,81,34,34,35,0,0,48,51,17,85,102,102,103,70,102,136,85,34,34,
|
|
||||||
17,0,0,3,49,19,53,84,102,100,70,102,88,133,84,66,17,19,0,48,51,51,85,68,102,68,
|
|
||||||
102,102,101,97,33,68,19,17,48,3,3,49,81,36,84,17,70,101,82,33,18,33,67,51,0,0,
|
|
||||||
51,49,17,33,33,33,70,102,66,34,34,34,17,51,48,0,3,17,18,34,33,34,20,129,18,34,
|
|
||||||
34,34,34,51,0,0,49,17,34,33,17,17,33,65,34,34,17,18,34,19,48,0,1,18,33,17,17,17,
|
|
||||||
34,34,33,145,17,18,34,19,48,0,1,17,17,19,49,49,18,17,49,19,49,18,34,35,51,0,0,
|
|
||||||
17,51,51,17,49,18,19,3,19,51,17,17,36,3,0,3,51,51,48,48,3,17,16,48,17,3,51,17,
|
|
||||||
16,0,0,3,48,3,3,0,0,16,19,0,0,0,51,51,0,0,0,51,0,0,0,0,0,1,3,48,0,51,51,48,0,0
|
|
||||||
},
|
|
||||||
{ // 1, fireball
|
|
||||||
175,103,183,7,191,111,254,31,95,180,173,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,17,0,16,0,0,0,0,
|
|
||||||
0,0,0,0,0,0,1,1,23,17,17,24,1,0,0,0,0,0,0,0,0,0,16,16,23,85,87,81,24,16,0,0,0,0,
|
|
||||||
0,0,0,1,8,17,119,115,55,119,17,129,16,0,0,0,0,0,0,0,129,23,119,51,51,55,113,24,
|
|
||||||
23,0,0,0,0,0,0,8,17,17,113,83,51,85,119,23,113,0,0,0,0,0,0,1,21,113,81,19,53,81,
|
|
||||||
17,119,129,0,0,0,0,0,0,17,19,53,17,19,50,17,17,113,16,16,0,0,0,0,1,33,83,49,17,
|
|
||||||
19,66,34,17,17,18,0,0,0,0,0,0,33,85,53,21,19,18,34,34,24,18,16,0,0,0,0,1,33,85,
|
|
||||||
85,84,68,20,34,35,66,98,0,0,0,0,0,0,33,83,53,20,68,51,51,51,70,34,16,0,0,0,0,1,
|
|
||||||
33,19,49,66,36,67,52,41,40,98,0,0,0,0,0,0,33,19,84,34,36,36,70,38,134,34,0,0,0,
|
|
||||||
0,0,0,8,21,81,18,36,66,98,102,166,32,0,0,0,0,0,0,2,21,81,18,68,68,38,134,105,33,
|
|
||||||
0,0,0,0,0,0,0,18,33,18,68,51,73,102,98,16,0,0,0,0,0,0,0,18,18,34,68,51,74,102,
|
|
||||||
102,16,0,0,0,0,0,0,0,1,17,18,34,36,38,38,129,0,0,0,0,0,0,0,0,0,8,134,38,34,34,
|
|
||||||
104,0,0,0,0,0,0,0,0,0,0,0,2,34,102,96,16,0,0,0,0,0,0,0,0,0,0,0,0,1,16,0,0,0,0,0,
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
|
||||||
0,0
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
uint8_t SFG_charToFontIndex(char c)
|
uint8_t SFG_charToFontIndex(char c)
|
||||||
{
|
{
|
||||||
if (c >= 'a' && c <= 'z')
|
if (c >= 'a' && c <= 'z')
|
||||||
|
33
main.c
33
main.c
@ -477,6 +477,26 @@ static inline uint8_t SFG_RCLUnitToZBuffer(RCL_Unit x)
|
|||||||
return okay * (x + 1) - 1;
|
return okay * (x + 1) - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const uint8_t *SFG_getMonsterSprite(
|
||||||
|
uint8_t monsterType, uint8_t state, uint8_t frame)
|
||||||
|
{
|
||||||
|
switch (monsterType)
|
||||||
|
{
|
||||||
|
case SFG_LEVEL_ELEMENT_MONSTER_SPIDER:
|
||||||
|
switch (state)
|
||||||
|
{
|
||||||
|
case SFG_MONSTER_STATE_ATTACKING: return SFG_monsterSprites[1]; break;
|
||||||
|
case SFG_MONSTER_STATE_IDLE: return SFG_monsterSprites[0]; break;
|
||||||
|
default: return SFG_monsterSprites[frame ? 0 : 2]; break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return SFG_monsterSprites[0];
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Says whether given key is currently pressed (down). This should be preferred
|
Says whether given key is currently pressed (down). This should be preferred
|
||||||
to SFG_keyPressed().
|
to SFG_keyPressed().
|
||||||
@ -2193,14 +2213,11 @@ void SFG_draw()
|
|||||||
|
|
||||||
if (p.depth > 0)
|
if (p.depth > 0)
|
||||||
{
|
{
|
||||||
const uint8_t *s;
|
const uint8_t *s =
|
||||||
|
SFG_getMonsterSprite(
|
||||||
if (state == SFG_MONSTER_STATE_IDLE)
|
m.stateType & SFG_MONSTER_MASK_TYPE,
|
||||||
s = SFG_monsterSprites[0];
|
state,
|
||||||
else if (state == SFG_MONSTER_STATE_ATTACKING)
|
SFG_spriteAnimationFrame & 0x01);
|
||||||
s = SFG_monsterSprites[1];
|
|
||||||
else
|
|
||||||
s = SFG_monsterSprites[SFG_spriteAnimationFrame & 0x01 ? 0 : 2];
|
|
||||||
|
|
||||||
SFG_drawScaledSprite(s,
|
SFG_drawScaledSprite(s,
|
||||||
p.position.x * SFG_RAYCASTING_SUBSAMPLE,p.position.y,
|
p.position.x * SFG_RAYCASTING_SUBSAMPLE,p.position.y,
|
||||||
|
Loading…
Reference in New Issue
Block a user