Fix walls
This commit is contained in:
parent
cf9504fbd9
commit
735987ff33
1 changed files with 34 additions and 18 deletions
52
demo2.cpp
52
demo2.cpp
|
@ -55,28 +55,35 @@ Player player;
|
||||||
#define INFO_BAR_START 70
|
#define INFO_BAR_START 70
|
||||||
#define TEXTURE_MAX_DISTANCE (UNITS_PER_SQUARE * 6)
|
#define TEXTURE_MAX_DISTANCE (UNITS_PER_SQUARE * 6)
|
||||||
|
|
||||||
|
// temporary defines for better visibility of walls and floors below
|
||||||
|
#define D 6
|
||||||
|
#define o 0
|
||||||
|
|
||||||
const unsigned char level[] =
|
const unsigned char level[] =
|
||||||
{
|
{
|
||||||
/* 10 12 14 16 18 20 22 24 26 28 30
|
/* 1o 12 14 16 18 2o 22 24 26 28 3o
|
||||||
0 1 2 3 4 5 6 7 8 9 11 13 15 17 19 21 23 25 27 29 31 */
|
o 1 2 3 4 5 6 7 8 9 11 13 15 17 19 21 23 25 27 29 31 */
|
||||||
4,0,0,4,0,0,4,0,0,4,0,0,2,4,0,4,4,0,0,0,0,0,0,2,0,0,0,0,0,0,0,2, // 0
|
4,o,o,4,o,o,4,o,o,4,o,o,2,4,o,4,4,o,o,o,o,D,o,2,o,o,o,o,o,o,o,2, // o
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,3,4,0,0,0,0,1,3,2,4,0,4,0,0,0,0,0,0,0,0, // 1
|
o,o,o,o,o,o,o,o,o,o,o,o,3,4,o,o,o,o,1,3,2,4,o,4,o,o,o,o,o,o,o,o, // 1
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,2,4,0,0,0,0,1,0,0,0,0,3,0,0,0,0,0,0,0,0, // 2
|
o,o,o,o,o,o,o,o,o,o,o,o,2,4,o,o,o,o,1,o,o,o,o,3,o,o,o,o,o,o,o,o, // 2
|
||||||
0,0,5,0,0,0,0,0,0,0,0,0,2,4,4,0,3,1,1,0,2,1,2,3,0,0,1,0,1,0,0,2, // 3
|
o,o,5,o,o,o,o,o,o,o,o,o,2,4,4,o,3,1,1,o,2,1,2,3,o,o,1,o,1,o,o,2, // 3
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,0,0,0,2,0,0,0,0,0,0,0,0,0,2, // 4
|
o,o,o,o,o,o,o,o,o,o,o,o,2,o,o,o,o,2,o,o,o,2,o,o,o,o,o,o,o,o,o,2, // 4
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,2,3,0,2,2,0,0,0,0,0,0,0,0,0,2, // 5
|
o,o,o,o,o,o,o,o,o,o,o,o,2,o,o,o,o,2,3,o,2,2,o,o,o,o,o,o,o,o,o,2, // 5
|
||||||
4,0,3,1,3,1,0,2,2,2,3,2,2,2,0,0,3,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0, // 6
|
4,o,3,1,3,1,o,2,2,2,3,2,2,2,o,o,3,2,o,o,o,o,o,o,o,o,o,o,o,o,o,o, // 6
|
||||||
0,0,2,0,0,0,0,0,0,5,0,0,0,0,0,0,0,5,0,0,0,0,1,2,0,5,5,0,0,0,0,0, // 7
|
o,o,2,o,o,o,o,o,o,5,o,o,o,o,o,o,o,5,o,o,o,o,1,2,o,5,5,o,o,o,o,o, // 7
|
||||||
0,0,1,0,0,0,0,0,0,5,0,0,0,0,0,0,0,6,0,0,0,0,4,0,0,0,5,0,0,2,0,0, // 8
|
o,o,1,o,o,o,o,o,o,5,o,o,o,o,o,o,o,D,o,o,o,o,4,o,o,o,5,o,o,2,o,o, // 8
|
||||||
0,0,2,0,0,0,0,0,0,2,3,2,4,0,0,0,2,2,4,1,4,0,4,4,4,3,2,0,0,4,2,2, // 9
|
o,o,2,o,o,o,o,o,o,2,3,2,4,o,o,o,2,2,4,1,4,o,4,4,4,3,2,o,o,4,2,2, // 9
|
||||||
0,0,4,4,4,0,0,0,0,0,0,0,0,0,0,3,3,4,0,0,0,0,0,1,0,0,0,0,0,0,0,4, // 10
|
o,o,4,4,4,o,o,o,o,o,o,o,o,o,o,3,3,4,o,o,o,o,o,1,o,o,o,o,o,o,o,4, // 1o
|
||||||
2,0,0,0,3,0,0,0,0,0,0,0,0,0,3,3,2,4,0,0,0,0,0,1,0,0,4,0,0,3,0,1, // 11
|
2,o,o,o,3,o,o,o,o,o,o,o,o,o,3,3,2,4,o,o,o,o,o,1,o,o,4,o,o,3,o,1, // 11
|
||||||
1,3,1,0,4,4,4,2,2,1,2,6,2,2,3,0,0,1,4,0,0,0,3,3,3,5,2,0,0,0,0,2, // 12
|
1,3,1,o,4,4,4,2,2,1,2,D,2,2,3,o,o,1,4,o,o,o,3,3,3,5,2,o,o,o,o,2, // 12
|
||||||
0,0,0,0,0,0,0,0,0,4,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,1, // 13
|
o,o,o,o,o,o,o,o,o,4,o,o,o,o,2,o,o,o,o,o,o,o,o,o,o,o,o,o,o,3,o,1, // 13
|
||||||
0,0,0,3,0,5,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4, // 14
|
o,o,o,3,o,5,o,3,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,o,4, // 14
|
||||||
0,0,0,0,0,0,0,0,0,4,0,0,0,0,2,0,0,5,0,0,4,0,0,1,0,3,0,3,0,3,0,1 // 15
|
o,o,o,o,o,o,o,o,o,4,o,o,o,o,2,o,o,5,o,o,4,o,o,1,o,3,o,3,o,3,o,1 // 15
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#undef D
|
||||||
|
#undef o
|
||||||
|
|
||||||
const unsigned char texture1[] =
|
const unsigned char texture1[] =
|
||||||
{ 32, 36 // width, height
|
{ 32, 36 // width, height
|
||||||
,0x01,0x01,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09
|
,0x01,0x01,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09
|
||||||
|
@ -86,6 +93,7 @@ const unsigned char texture1[] =
|
||||||
,0x0a,0x0a,0x12,0x0a,0x09,0x12,0x09,0x09,0x09,0x09,0x09,0x12,0x09,0x09
|
,0x0a,0x0a,0x12,0x0a,0x09,0x12,0x09,0x09,0x09,0x09,0x09,0x12,0x09,0x09
|
||||||
,0x09,0x01,0x01,0x01,0x12,0x12,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09
|
,0x09,0x01,0x01,0x01,0x12,0x12,0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09
|
||||||
,0x09,0x09,0x0a,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x0a,0x09,0x09,0x09
|
,0x09,0x09,0x0a,0x12,0x12,0x12,0x12,0x12,0x12,0x12,0x0a,0x09,0x09,0x09
|
||||||
|
|
||||||
,0x09,0x09,0x09,0x09,0x12,0x09,0x09,0x09,0x09,0x01,0x01,0x01,0x12,0x0a
|
,0x09,0x09,0x09,0x09,0x12,0x09,0x09,0x09,0x09,0x01,0x01,0x01,0x12,0x0a
|
||||||
,0x12,0x09,0x12,0x09,0x12,0x12,0x0a,0x09,0x12,0x09,0x12,0x12,0x12,0x1a
|
,0x12,0x09,0x12,0x09,0x12,0x12,0x0a,0x09,0x12,0x09,0x12,0x12,0x12,0x1a
|
||||||
,0x1b,0x1b,0x12,0x12,0x12,0x09,0x09,0x12,0x09,0x09,0x12,0x12,0x09,0x09
|
,0x1b,0x1b,0x12,0x12,0x12,0x09,0x09,0x12,0x09,0x09,0x12,0x12,0x09,0x09
|
||||||
|
@ -768,9 +776,14 @@ unsigned char textureAverageColors[TEXTURES];
|
||||||
|
|
||||||
Unit floorHeightAt(int16_t x, int16_t y)
|
Unit floorHeightAt(int16_t x, int16_t y)
|
||||||
{
|
{
|
||||||
|
if (x < 0 || x >= LEVEL_X_RES || y < 0 || y >= LEVEL_Y_RES)
|
||||||
|
return UNITS_PER_SQUARE * 2;
|
||||||
|
|
||||||
Unit square = level[(LEVEL_Y_RES - y -1) * LEVEL_X_RES + x];
|
Unit square = level[(LEVEL_Y_RES - y -1) * LEVEL_X_RES + x];
|
||||||
|
|
||||||
#ifdef RENDER_PRECISE
|
#ifdef RENDER_PRECISE
|
||||||
|
/* algorithm used with this version doesn't support rolling doors, so give
|
||||||
|
door square zero height */
|
||||||
return square == 0 || square == 6 ? 0 : UNITS_PER_SQUARE * 2;
|
return square == 0 || square == 6 ? 0 : UNITS_PER_SQUARE * 2;
|
||||||
#else
|
#else
|
||||||
return square == 0 ? 0 : UNITS_PER_SQUARE * 2;
|
return square == 0 ? 0 : UNITS_PER_SQUARE * 2;
|
||||||
|
@ -779,6 +792,9 @@ Unit floorHeightAt(int16_t x, int16_t y)
|
||||||
|
|
||||||
Unit collisionAt(int16_t x, int16_t y)
|
Unit collisionAt(int16_t x, int16_t y)
|
||||||
{
|
{
|
||||||
|
if (x < 0 || x >= LEVEL_X_RES || y < 0 || y >= LEVEL_Y_RES)
|
||||||
|
return UNITS_PER_SQUARE;
|
||||||
|
|
||||||
Unit square = level[(LEVEL_Y_RES - y -1) * LEVEL_X_RES + x];
|
Unit square = level[(LEVEL_Y_RES - y -1) * LEVEL_X_RES + x];
|
||||||
return square == 0 || square == 6 ? 0 : UNITS_PER_SQUARE;
|
return square == 0 || square == 6 ? 0 : UNITS_PER_SQUARE;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue