kaos/KaosSrc/kaosc.hpp

207 lines
5.9 KiB
C++
Raw Permalink Normal View History

2024-10-12 20:32:30 -05:00
/************************************************************************
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
************************************************************************/
#define T_WALL1 0
#define T_WALL1M 1
#define T_WALL1S 2
#define T_WALL1MS 3
#define T_WALL1SS 4
#define T_WALL1MSS 5
#define T_TAP 6
#define T_TAPM 7
#define T_TAPS 8
#define T_TAPMS 9
#define T_TAPSS 10
#define T_TAPMSS 11
#define T_SCUDO 12
#define T_SCUDOM 13
#define T_SCUDOS 14
#define T_SCUDOMS 15
#define T_SCUDOSS 16
#define T_SCUDOMSS 17
#define T_ARC 18
#define T_ARCM 19
#define T_PIETR1 20
#define T_PIETR1M 21
#define T_PIETR1S 22
#define T_PIETR1MS 23
#define T_PIETR1SS 24
#define T_PIETR1MSS 25
#define T_ASCE 26
#define T_ASCEM 27
#define T_ASCES 28
#define T_ASCEMS 29
#define T_ASCESS 30
#define T_ASCEMSS 31
#define T_ROCK 32
#define T_ROCKS 33
#define T_ROCKSS 34
#define T_WOOD1 35
#define T_WOOD1S 36
#define T_WOOD1SS 37
#define T_WBOX 38
#define T_WBOXS 39
#define T_WBOXSS 40
#define T_DOOR1 41
#define T_DOOR1S 42
#define T_DOOR2 43
#define T_DOOR2S 44
#define T_DOORY 45
#define T_DOORYS 46
#define T_DOORR 47
#define T_DOORRS 48
#define T_WOOD2 49
#define T_WOOD2S 50
#define T_WOOD2SS 51
#define T_SBARRE 52
#define T_SBARRES 53
#define T_SWITCHU 54
#define T_WALL1Z 55
#define T_WALL1MZ 56
#define T_PIETR1Z 57
#define T_PIETR1MZ 58
#define T_ROCKZ 59
#define T_WOOD1Z 60
#define T_WBOXZ 61
#define T_WOOD2Z 62
#define T_WALL2 63
#define T_WALL2M 64
#define T_WALL2Z 65
#define T_WALL2MZ 66
#define T_PIETR2 67
#define T_PIETR2M 68
#define T_PIETR2Z 69
#define T_PIETR2MZ 70
#define T_EARTH 71
#define T_EARTHZ 72
#define T_SOFT 73
#define T_SOFTM 74
#define T_SOFTZ 75
#define T_SOFTMZ 76
#define T_DRAGON 77 // 9
//#define T_NONE1-2-3
#define T_GRATAW 86
#define T_GRATAWZ 87
#define T_GRATAB 88
#define T_GRATABZ 89
#define T_FLROCK 90
#define T_FLROCKZ 91
//#define T_GRIGLIA 83
#define T_OVERDOOR 92
#define T_DOORSLOT 93
#define T_SWITCHD 94
#define T_TRANSP T_GRATAW
#define TEXTNUM (T_SWITCHD+1)
#define T_TEXTURES (TEXTNUM)
#define T_OBJECTS (T_TEXTURES+36+18) // i 18 sono quelli dei vasi
#define T_ENEMIES (T_OBJECTS+12)
#define T_PLAYERS (T_ENEMIES+12)
#define F_PLAYER 0 // 8+8+8+8+2+5 = 39
#define F_SOLDIER (F_PLAYER+39) // 8+8+8+4+2+5 = 35
#define F_SLIMER (F_SOLDIER+35) // 5+5+4+2+6 = 22
#define F_BUB (F_SLIMER+22) // 5+5+2+2+6 = 20
#define F_FACE (F_BUB+20) // 5+5+2+5 = 17
#define F_SPIDER (F_FACE+17) // 5+5+2+2+5 = 19
#define F_MOUSE (F_SPIDER+19) // 5+5 = 10
#define F_MISSILE (F_MOUSE+10) // 5
#define F_FIREBALL (F_MISSILE+5)
#define F_SLIMFIRE (F_FIREBALL+1) // 2
#define F_SPIDFIRE (F_SLIMFIRE+2) // 4
#define F_TORCIA (F_SPIDFIRE+4) // 4
#define F_TORCIAM (F_TORCIA+4) // 4
#define F_COLUMN (F_TORCIAM+4)
#define F_COLUMNM (F_COLUMN+1)
#define F_BARILE (F_COLUMNM+1) // 5
#define F_BARILX (F_BARILE+5)
#define F_FIREBOOM (F_BARILX+1) // 4
#define F_KEYRED (F_FIREBOOM+4)
#define F_KEYELLOW (F_KEYRED+1)
#define F_OSSALIT (F_KEYELLOW+1)
#define F_OSSABIG (F_OSSALIT+1)
#define F_VASO (F_OSSABIG+1) // 6
#define F_PIANTA (F_VASO+6) // 5
#define F_ALBERO (F_PIANTA+5) // 2
#define F_LAMP (F_ALBERO+2) // 2+2 = 4
#define F_LAMPX (F_LAMP+4)
#define F_LAMPOFF (F_LAMPX+1)
#define F_TRESPOLO (F_LAMPOFF+1) // 2 ??? +3 = 5
#define F_TRESPOLOX (F_TRESPOLO+2) // 1
#define F_TRESPOLOFF (F_TRESPOLOX+1)
#define F_BRAZIER (F_TRESPOLOFF+1) // 4
#define F_FUCILE (F_BRAZIER+4)
#define F_MITRA (F_FUCILE+1)
#define F_BAZOOKA (F_MITRA+1)
#define F_FARMALIT (F_BAZOOKA+1)
#define F_FARMABIG (F_FARMALIT+1)
#define F_BONUS (F_FARMABIG+1) // 2
#define F_SOLDOLIT (F_BONUS+2)
#define F_SOLDOBIG (F_SOLDOLIT+1)
#define F_CARTUCCIA1 (F_SOLDOBIG+1)
#define F_CARTUCCIA2 (F_CARTUCCIA1+1)
#define F_CARTUCCIA3 (F_CARTUCCIA2+1)
#define F_CARTUCCIA4 (F_CARTUCCIA3+1)
#define F_BOOM (F_CARTUCCIA4+1) // 12
#define F_BLOOD (F_BOOM+12) // 5
#define F_SMOG (F_BLOOD+5) // 3
#define F_TESCHIO (F_SMOG+3) // 2
#define F_BOMB (F_TESCHIO+2) // 15
#define F_CIRCLIGHT (F_BOMB+15)
#define F_SPIKELIGHT (F_CIRCLIGHT+1)
#define F_TORCLIGHT (F_SPIKELIGHT+1)
#define F_LAMPLIGHT (F_TORCLIGHT+1)
#define F_ANTIKAOS (F_LAMPLIGHT+1) // 9
#define FIGNUM (F_ANTIKAOS+9) // !
// *** Map Struct ***
// Map shapes
#define MSH_SQUARE 0
#define MSH_VERT 1
#define MSH_HORIZ 2
#define MSH_DIAG1 3
#define MSH_DIAG2 4
#define MSH_DOOR 5
#define MAPSHAPE(X) (X<<8)
// Map types
#define MTP_WALL 0
#define MTP_DOOR1 1 // apertura da sinistra
#define MTP_DOOR2 2 // apertura centrale
#define MTP_GRID1 3 // grata passo 4-8
#define MTP_SLOT 4
#define MAPTYPE(X) (X<<11)
// Map flags
#define MFL_NONE 0x4000
#define MFL_STOP 0x8000
typedef struct { // 16 bits structure
byte data : 8;
byte shape : 3;
byte type : 3;
byte none : 1; // ???
byte stop : 1; // present something
} TMapInfo;
// Object Map Flags - for WORD compatibility
#define OMF_UNWALKABLE 0x1000
#define OMF_VISIBLE 0x0100
#define OMF_HITABLE 0x0010
#define OMF_SOUNDABLE 0x0001
#define OMF_STANDARD 0x1111
// Object Map Mask - for extended ray-caster
#define OMM_UNWALKABLE 0xF000
#define OMM_VISIBLE 0x0F00
#define OMM_HITABLE 0x00F0
#define OMM_SOUNDABLE 0x000F
typedef struct { // 16 bits structure <20> 1 word
byte soundable : 4;
byte hitable : 4;
byte visible : 4;
byte unwalkable : 4;
} TObjInfo;