mirror of
https://gitlab.com/drummyfish/anarch.git
synced 2025-03-11 07:31:07 -04:00
Start door
This commit is contained in:
parent
836d447552
commit
19f79861dd
16
levels.h
16
levels.h
@ -51,6 +51,7 @@ typedef uint8_t SFG_MapArray[SFG_MAP_SIZE * SFG_MAP_SIZE];
|
|||||||
bbbbbb: index into tile dictionary
|
bbbbbb: index into tile dictionary
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define SFG_TILE_PROPERTY_MASK 0xc0
|
||||||
#define SFG_TILE_PROPERTY_NORMAL 0x00
|
#define SFG_TILE_PROPERTY_NORMAL 0x00
|
||||||
#define SFG_TILE_PROPERTY_ELEVATOR 0x40
|
#define SFG_TILE_PROPERTY_ELEVATOR 0x40
|
||||||
#define SFG_TILE_PROPERTY_SQUEEZER 0x80
|
#define SFG_TILE_PROPERTY_SQUEEZER 0x80
|
||||||
@ -64,6 +65,8 @@ typedef struct
|
|||||||
can be at most 7 because of 3bit indexing (one
|
can be at most 7 because of 3bit indexing (one
|
||||||
value is reserved for special transparent
|
value is reserved for special transparent
|
||||||
texture). */
|
texture). */
|
||||||
|
uint8_t doorTextureIndex; /**< Index (global, NOT from textureIndices) of a
|
||||||
|
texture used for door. */
|
||||||
} SFG_Map;
|
} SFG_Map;
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
@ -93,11 +96,12 @@ static inline SFG_TileDefinition SFG_getMapTile
|
|||||||
|
|
||||||
static const SFG_Level SFG_level0 =
|
static const SFG_Level SFG_level0 =
|
||||||
{
|
{
|
||||||
{
|
{ // map
|
||||||
{
|
{ // map.mapArray
|
||||||
#define o 0
|
#define o 0
|
||||||
#define AA (0x04 | SFG_TILE_PROPERTY_ELEVATOR)
|
#define AA (0x04 | SFG_TILE_PROPERTY_ELEVATOR)
|
||||||
#define BB (0x04 | SFG_TILE_PROPERTY_SQUEEZER)
|
#define BB (0x04 | SFG_TILE_PROPERTY_SQUEEZER)
|
||||||
|
#define CC (0x02 | SFG_TILE_PROPERTY_DOOR)
|
||||||
1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
||||||
1 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,3 ,3 ,3 ,3 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
1 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,3 ,3 ,3 ,3 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
||||||
1 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,3 ,3 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
1 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,3 ,3 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
||||||
@ -106,7 +110,7 @@ static const SFG_Level SFG_level0 =
|
|||||||
1 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
1 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
||||||
1 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,3 ,3 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
1 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,3 ,3 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
||||||
1 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,AA,BB,5 ,o ,BB,o ,AA,3 ,3 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
1 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,AA,BB,5 ,o ,BB,o ,AA,3 ,3 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
||||||
1 ,o ,o ,o ,o ,o ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,5 ,5 ,2 ,2 ,2 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
1 ,o ,o ,o ,o ,o ,2 ,2 ,CC,2 ,2 ,2 ,2 ,CC,5 ,5 ,2 ,2 ,2 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
||||||
1 ,o ,o ,o ,o ,o ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,5 ,5 ,2 ,2 ,2 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
1 ,o ,o ,o ,o ,o ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,5 ,5 ,2 ,2 ,2 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
||||||
1 ,o ,o ,o ,o ,o ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
1 ,o ,o ,o ,o ,o ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
||||||
1 ,o ,o ,o ,o ,o ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
1 ,o ,o ,o ,o ,o ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,2 ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,o ,
|
||||||
@ -165,8 +169,9 @@ static const SFG_Level SFG_level0 =
|
|||||||
#undef o
|
#undef o
|
||||||
#undef AA
|
#undef AA
|
||||||
#undef BB
|
#undef BB
|
||||||
|
#undef CC
|
||||||
},
|
},
|
||||||
{
|
{ // map.tileDictionary
|
||||||
SFG_TD(0 ,31,0,0),SFG_TD(15,63,5,0),SFG_TD(28,63,1,0),SFG_TD(6 ,63,6,0), // 0
|
SFG_TD(0 ,31,0,0),SFG_TD(15,63,5,0),SFG_TD(28,63,1,0),SFG_TD(6 ,63,6,0), // 0
|
||||||
SFG_TD(10,28,2,4),SFG_TD(4 ,26,4,6),SFG_TD(5 ,63,4,0),SFG_TD(1 ,10,1,0), // 4
|
SFG_TD(10,28,2,4),SFG_TD(4 ,26,4,6),SFG_TD(5 ,63,4,0),SFG_TD(1 ,10,1,0), // 4
|
||||||
SFG_TD(0 ,31,0,0),SFG_TD(0 ,63,0,0),SFG_TD(0 ,63,0,0),SFG_TD(0 ,63,0,0), // 8
|
SFG_TD(0 ,31,0,0),SFG_TD(0 ,63,0,0),SFG_TD(0 ,63,0,0),SFG_TD(0 ,63,0,0), // 8
|
||||||
@ -184,7 +189,8 @@ static const SFG_Level SFG_level0 =
|
|||||||
SFG_TD(0 ,31,0,0),SFG_TD(0 ,63,0,0),SFG_TD(0 ,63,0,0),SFG_TD(0 ,63,0,0), // 56
|
SFG_TD(0 ,31,0,0),SFG_TD(0 ,63,0,0),SFG_TD(0 ,63,0,0),SFG_TD(0 ,63,0,0), // 56
|
||||||
SFG_TD(0 ,31,0,0),SFG_TD(0 ,63,0,0),SFG_TD(0 ,63,0,0),SFG_TD(0 ,63,0,0), // 60
|
SFG_TD(0 ,31,0,0),SFG_TD(0 ,63,0,0),SFG_TD(0 ,63,0,0),SFG_TD(0 ,63,0,0), // 60
|
||||||
},
|
},
|
||||||
{0, 1, 2, 3, 4, 5, 6}
|
{0, 1, 2, 3, 4, 5, 6}, // map.textureIndices
|
||||||
|
0 // map.doorTextureIndex
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
20
main.c
20
main.c
@ -100,18 +100,26 @@ void SFG_pixelFunc(RCL_PixelInfo *pixel)
|
|||||||
{
|
{
|
||||||
uint8_t textureIndex =
|
uint8_t textureIndex =
|
||||||
pixel->isFloor ?
|
pixel->isFloor ?
|
||||||
(pixel->hit.type & 0x7) :
|
(
|
||||||
|
((pixel->hit.type & SFG_TILE_PROPERTY_MASK) != SFG_TILE_PROPERTY_DOOR) ?
|
||||||
|
(pixel->hit.type & 0x7)
|
||||||
|
:
|
||||||
|
(
|
||||||
|
(pixel->texCoords.y >= RCL_UNITS_PER_SQUARE) ?
|
||||||
|
(pixel->hit.type & 0x7) : SFG_currentLevel.mapPointer->doorTextureIndex
|
||||||
|
)
|
||||||
|
):
|
||||||
((pixel->hit.type & 0x38) >> 3);
|
((pixel->hit.type & 0x38) >> 3);
|
||||||
|
|
||||||
RCL_Unit textureV = pixel->height - pixel->texCoords.y;
|
RCL_Unit textureV = pixel->height + pixel->texCoords.y;
|
||||||
|
|
||||||
if (pixel->hit.type & (SFG_TILE_PROPERTY_ELEVATOR))
|
if ((pixel->hit.type & SFG_TILE_PROPERTY_MASK) ==
|
||||||
|
SFG_TILE_PROPERTY_ELEVATOR)
|
||||||
textureV -= pixel->wallHeight;
|
textureV -= pixel->wallHeight;
|
||||||
else if (pixel->hit.type & (SFG_TILE_PROPERTY_SQUEEZER))
|
else if ((pixel->hit.type & SFG_TILE_PROPERTY_MASK) ==
|
||||||
|
SFG_TILE_PROPERTY_SQUEEZER)
|
||||||
textureV += pixel->wallHeight;
|
textureV += pixel->wallHeight;
|
||||||
|
|
||||||
textureV %= RCL_UNITS_PER_SQUARE; // hopefully gets optimized to bitwise and
|
|
||||||
|
|
||||||
color =
|
color =
|
||||||
textureIndex != SFG_TILE_TEXTURE_TRANSPARENT ?
|
textureIndex != SFG_TILE_TEXTURE_TRANSPARENT ?
|
||||||
(SFG_getTexel(
|
(SFG_getTexel(
|
||||||
|
@ -1182,6 +1182,8 @@ static inline int16_t _RCL_drawWall(
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
pixelInfo->texCoords.y = RCL_absVal(pixelInfo->texCoords.y);
|
||||||
|
|
||||||
wallPosition++;
|
wallPosition++;
|
||||||
RCL_PIXEL_FUNCTION(pixelInfo);
|
RCL_PIXEL_FUNCTION(pixelInfo);
|
||||||
}
|
}
|
||||||
|
@ -7,4 +7,8 @@
|
|||||||
|
|
||||||
#define SFG_DITHERED_SHADOW 1
|
#define SFG_DITHERED_SHADOW 1
|
||||||
|
|
||||||
|
#define SFG_RAYCASTING_MAX_STEPS 30
|
||||||
|
|
||||||
|
#define SFG_RAYCASTING_MAX_HITS 10
|
||||||
|
|
||||||
#endif // guard
|
#endif // guard
|
||||||
|
Loading…
x
Reference in New Issue
Block a user