Add hill block
This commit is contained in:
parent
1c83fe4660
commit
21cedabf85
3 changed files with 59 additions and 6 deletions
40
map.h
40
map.h
|
@ -103,11 +103,15 @@
|
|||
#define LCR_BLOCK_RAMP_STEEP 0x0c ///< extremely steep ramp
|
||||
#define LCR_BLOCK_CORNER 0x0d ///< diagonal corner
|
||||
#define LCR_BLOCK_CORNER_12 0x0e ///< diagonal corner (1/2 wide)
|
||||
#define LCR_BLOCK_HILL 0x0f ///< curved "hill"
|
||||
#define LCR_BLOCK_FULL_ACCEL 0x20
|
||||
#define LCR_BLOCK_FULL_FAN 0x30
|
||||
#define LCR_BLOCK_CHECKPOINT_0 0x40 ///< checkpoint, not taken
|
||||
#define LCR_BLOCK_CHECKPOINT_1 0x41 ///< checkpoint, taken
|
||||
|
||||
|
||||
|
||||
|
||||
#define LCR_BLOCK_FINISH 0x42 ///< finish
|
||||
|
||||
// special blocks:
|
||||
|
@ -129,8 +133,6 @@
|
|||
- bumpy road
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#define LCR_MAP_BLOCK_CACHE_SIZE (8 * 2) /// do not change
|
||||
|
||||
/**
|
||||
|
@ -344,6 +346,7 @@ uint8_t _LCR_mapCharToBlockType(char c)
|
|||
case '|': return LCR_BLOCK_RAMP_STEEP; break;
|
||||
case 'A': return LCR_BLOCK_CORNER; break;
|
||||
case '\\': return LCR_BLOCK_CORNER_12; break;
|
||||
case '(': return LCR_BLOCK_HILL; break;
|
||||
case '>': return LCR_BLOCK_FULL_ACCEL; break;
|
||||
case 'o': return LCR_BLOCK_FULL_FAN; break;
|
||||
case '+': return LCR_BLOCK_CHECKPOINT_0; break;
|
||||
|
@ -505,14 +508,17 @@ uint8_t LCR_mapLoadFromStr(const char *mapStr)
|
|||
mat = LCR_mapBlockGetMaterial(prevBlock);
|
||||
transform = LCR_mapBlockGetTransform(prevBlock);
|
||||
LCR_mapBlockGetCoords(prevBlock,&x,&y,&z);
|
||||
|
||||
|
||||
for (uint8_t k = 0; k < coords[2]; ++k)
|
||||
for (uint8_t j = 0; j < coords[1]; ++j)
|
||||
for (uint8_t i = 0; i < coords[0]; ++i)
|
||||
if (block == LCR_BLOCK_CUBOID_FILL ||
|
||||
if ((block == LCR_BLOCK_CUBOID_FILL ||
|
||||
k == 0 || k == coords[2] - 1 ||
|
||||
j == 0 || j == coords[1] - 1 ||
|
||||
i == 0 || i == coords[0] - 1)
|
||||
i == 0 || i == coords[0] - 1) &&
|
||||
(x + i < LCR_MAP_SIZE_BLOCKS &&
|
||||
y + j < LCR_MAP_SIZE_BLOCKS &&
|
||||
z + k < LCR_MAP_SIZE_BLOCKS))
|
||||
{
|
||||
LCR_makeMapBlock(prevBlock[0],x + i,y + j,z + k,mat,transform,
|
||||
tmpBlock);
|
||||
|
@ -847,6 +853,30 @@ void LCR_mapGetBlockShape(uint8_t blockType, uint8_t transform,
|
|||
break;
|
||||
}
|
||||
|
||||
case LCR_BLOCK_HILL:
|
||||
ADD(0,0,0) ADD(6,0,0) ADD(0,2,1) // front
|
||||
ADD(6,0,0) ADD(6,2,1) ADD(0,2,1)
|
||||
ADD(0,2,1) ADD(6,2,1) ADD(0,3,2) // front 2
|
||||
ADD(6,2,1) ADD(6,3,2) ADD(0,3,2)
|
||||
ADD(0,3,2) ADD(6,3,2) ADD(0,4,4) // front 3
|
||||
ADD(6,3,2) ADD(6,4,4) ADD(0,4,4)
|
||||
ADD(0,4,4) ADD(6,4,4) ADD(0,4,6) // top
|
||||
ADD(6,4,4) ADD(6,4,6) ADD(0,4,6)
|
||||
ADD(0,0,0) ADD(0,0,6) ADD(6,0,0) // bottom
|
||||
ADD(6,0,0) ADD(0,0,6) ADD(6,0,6)
|
||||
ADD(0,0,6) ADD(0,4,6) ADD(6,4,6) // back
|
||||
ADD(0,0,6) ADD(6,4,6) ADD(6,0,6)
|
||||
ADD(0,0,0) ADD(0,2,1) ADD(0,0,6) // left
|
||||
ADD(0,2,1) ADD(0,3,2) ADD(0,0,6)
|
||||
ADD(0,3,2) ADD(0,4,4) ADD(0,0,6)
|
||||
ADD(0,4,4) ADD(0,4,6) ADD(0,0,6)
|
||||
ADD(6,0,0) ADD(6,0,6) ADD(6,2,1) // right
|
||||
ADD(6,2,1) ADD(6,0,6) ADD(6,3,2)
|
||||
ADD(6,3,2) ADD(6,0,6) ADD(6,4,4)
|
||||
ADD(6,4,4) ADD(6,0,6) ADD(6,4,6)
|
||||
|
||||
break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue