mirror of
https://github.com/jmarshall23/CnC_Remastered_Collection.git
synced 2026-08-12 08:00:55 +02:00
Tiberian Sun Iso tiles now load into the placement dialog editor.
This commit is contained in:
+137
-132
@@ -1769,102 +1769,102 @@ static TemplateTypeClass const WALL0049(
|
||||
TXT_INTERIOR
|
||||
);
|
||||
|
||||
static TemplateTypeClass const Xtra0001(
|
||||
TEMPLATE_XTRA0001,
|
||||
THEATERF_INTERIOR,
|
||||
"XTRA0001",
|
||||
TXT_INTERIOR
|
||||
);
|
||||
static TemplateTypeClass const Xtra0002(
|
||||
TEMPLATE_XTRA0002,
|
||||
THEATERF_INTERIOR,
|
||||
"XTRA0002",
|
||||
TXT_INTERIOR
|
||||
);
|
||||
static TemplateTypeClass const Xtra0003(
|
||||
TEMPLATE_XTRA0003,
|
||||
THEATERF_INTERIOR,
|
||||
"XTRA0003",
|
||||
TXT_INTERIOR
|
||||
);
|
||||
static TemplateTypeClass const Xtra0004(
|
||||
TEMPLATE_XTRA0004,
|
||||
THEATERF_INTERIOR,
|
||||
"XTRA0004",
|
||||
TXT_INTERIOR
|
||||
);
|
||||
static TemplateTypeClass const Xtra0005(
|
||||
TEMPLATE_XTRA0005,
|
||||
THEATERF_INTERIOR,
|
||||
"XTRA0005",
|
||||
TXT_INTERIOR
|
||||
);
|
||||
static TemplateTypeClass const Xtra0006(
|
||||
TEMPLATE_XTRA0006,
|
||||
THEATERF_INTERIOR,
|
||||
"XTRA0006",
|
||||
TXT_INTERIOR
|
||||
);
|
||||
static TemplateTypeClass const Xtra0007(
|
||||
TEMPLATE_XTRA0007,
|
||||
THEATERF_INTERIOR,
|
||||
"XTRA0007",
|
||||
TXT_INTERIOR
|
||||
);
|
||||
static TemplateTypeClass const Xtra0008(
|
||||
TEMPLATE_XTRA0008,
|
||||
THEATERF_INTERIOR,
|
||||
"XTRA0008",
|
||||
TXT_INTERIOR
|
||||
);
|
||||
static TemplateTypeClass const Xtra0009(
|
||||
TEMPLATE_XTRA0009,
|
||||
THEATERF_INTERIOR,
|
||||
"XTRA0009",
|
||||
TXT_INTERIOR
|
||||
);
|
||||
static TemplateTypeClass const Xtra0010(
|
||||
TEMPLATE_XTRA0010,
|
||||
THEATERF_INTERIOR,
|
||||
"XTRA0010",
|
||||
TXT_INTERIOR
|
||||
);
|
||||
static TemplateTypeClass const Xtra0011(
|
||||
TEMPLATE_XTRA0011,
|
||||
THEATERF_INTERIOR,
|
||||
"XTRA0011",
|
||||
TXT_INTERIOR
|
||||
);
|
||||
static TemplateTypeClass const Xtra0012(
|
||||
TEMPLATE_XTRA0012,
|
||||
THEATERF_INTERIOR,
|
||||
"XTRA0012",
|
||||
TXT_INTERIOR
|
||||
);
|
||||
static TemplateTypeClass const Xtra0013(
|
||||
TEMPLATE_XTRA0013,
|
||||
THEATERF_INTERIOR,
|
||||
"XTRA0013",
|
||||
TXT_INTERIOR
|
||||
);
|
||||
static TemplateTypeClass const Xtra0014(
|
||||
TEMPLATE_XTRA0014,
|
||||
THEATERF_INTERIOR,
|
||||
"XTRA0014",
|
||||
TXT_INTERIOR
|
||||
);
|
||||
static TemplateTypeClass const Xtra0015(
|
||||
TEMPLATE_XTRA0015,
|
||||
THEATERF_INTERIOR,
|
||||
"XTRA0015",
|
||||
TXT_INTERIOR
|
||||
);
|
||||
static TemplateTypeClass const Xtra0016(
|
||||
TEMPLATE_XTRA0016,
|
||||
THEATERF_INTERIOR,
|
||||
"XTRA0016",
|
||||
TXT_INTERIOR
|
||||
);
|
||||
//static TemplateTypeClass const Xtra0001(
|
||||
// TEMPLATE_XTRA0001,
|
||||
// THEATERF_INTERIOR,
|
||||
// "XTRA0001",
|
||||
// TXT_INTERIOR
|
||||
//);
|
||||
//static TemplateTypeClass const Xtra0002(
|
||||
// TEMPLATE_XTRA0002,
|
||||
// THEATERF_INTERIOR,
|
||||
// "XTRA0002",
|
||||
// TXT_INTERIOR
|
||||
//);
|
||||
//static TemplateTypeClass const Xtra0003(
|
||||
// TEMPLATE_XTRA0003,
|
||||
// THEATERF_INTERIOR,
|
||||
// "XTRA0003",
|
||||
// TXT_INTERIOR
|
||||
//);
|
||||
//static TemplateTypeClass const Xtra0004(
|
||||
// TEMPLATE_XTRA0004,
|
||||
// THEATERF_INTERIOR,
|
||||
// "XTRA0004",
|
||||
// TXT_INTERIOR
|
||||
//);
|
||||
//static TemplateTypeClass const Xtra0005(
|
||||
// TEMPLATE_XTRA0005,
|
||||
// THEATERF_INTERIOR,
|
||||
// "XTRA0005",
|
||||
// TXT_INTERIOR
|
||||
//);
|
||||
//static TemplateTypeClass const Xtra0006(
|
||||
// TEMPLATE_XTRA0006,
|
||||
// THEATERF_INTERIOR,
|
||||
// "XTRA0006",
|
||||
// TXT_INTERIOR
|
||||
//);
|
||||
//static TemplateTypeClass const Xtra0007(
|
||||
// TEMPLATE_XTRA0007,
|
||||
// THEATERF_INTERIOR,
|
||||
// "XTRA0007",
|
||||
// TXT_INTERIOR
|
||||
//);
|
||||
//static TemplateTypeClass const Xtra0008(
|
||||
// TEMPLATE_XTRA0008,
|
||||
// THEATERF_INTERIOR,
|
||||
// "XTRA0008",
|
||||
// TXT_INTERIOR
|
||||
//);
|
||||
//static TemplateTypeClass const Xtra0009(
|
||||
// TEMPLATE_XTRA0009,
|
||||
// THEATERF_INTERIOR,
|
||||
// "XTRA0009",
|
||||
// TXT_INTERIOR
|
||||
//);
|
||||
//static TemplateTypeClass const Xtra0010(
|
||||
// TEMPLATE_XTRA0010,
|
||||
// THEATERF_INTERIOR,
|
||||
// "XTRA0010",
|
||||
// TXT_INTERIOR
|
||||
//);
|
||||
//static TemplateTypeClass const Xtra0011(
|
||||
// TEMPLATE_XTRA0011,
|
||||
// THEATERF_INTERIOR,
|
||||
// "XTRA0011",
|
||||
// TXT_INTERIOR
|
||||
//);
|
||||
//static TemplateTypeClass const Xtra0012(
|
||||
// TEMPLATE_XTRA0012,
|
||||
// THEATERF_INTERIOR,
|
||||
// "XTRA0012",
|
||||
// TXT_INTERIOR
|
||||
//);
|
||||
//static TemplateTypeClass const Xtra0013(
|
||||
// TEMPLATE_XTRA0013,
|
||||
// THEATERF_INTERIOR,
|
||||
// "XTRA0013",
|
||||
// TXT_INTERIOR
|
||||
//);
|
||||
//static TemplateTypeClass const Xtra0014(
|
||||
// TEMPLATE_XTRA0014,
|
||||
// THEATERF_INTERIOR,
|
||||
// "XTRA0014",
|
||||
// TXT_INTERIOR
|
||||
//);
|
||||
//static TemplateTypeClass const Xtra0015(
|
||||
// TEMPLATE_XTRA0015,
|
||||
// THEATERF_INTERIOR,
|
||||
// "XTRA0015",
|
||||
// TXT_INTERIOR
|
||||
//);
|
||||
//static TemplateTypeClass const Xtra0016(
|
||||
// TEMPLATE_XTRA0016,
|
||||
// THEATERF_INTERIOR,
|
||||
// "XTRA0016",
|
||||
// TXT_INTERIOR
|
||||
//);
|
||||
|
||||
#ifdef FIXIT_ANTS
|
||||
static TemplateTypeClass const AntHill(
|
||||
@@ -2135,22 +2135,22 @@ static void _Watcom_Ugh_Hack(void)
|
||||
(void)new TemplateTypeClass(Bridge1x); // TEMPLATE_BRIDGE1X
|
||||
(void)new TemplateTypeClass(Bridge2x); // TEMPLATE_BRIDGE2X
|
||||
|
||||
(void)new TemplateTypeClass(Xtra0001); // TEMPLATE_XTRA0001
|
||||
(void)new TemplateTypeClass(Xtra0002); // TEMPLATE_XTRA0002
|
||||
(void)new TemplateTypeClass(Xtra0003); // TEMPLATE_XTRA0003
|
||||
(void)new TemplateTypeClass(Xtra0004); // TEMPLATE_XTRA0004
|
||||
(void)new TemplateTypeClass(Xtra0005); // TEMPLATE_XTRA0005
|
||||
(void)new TemplateTypeClass(Xtra0006); // TEMPLATE_XTRA0006
|
||||
(void)new TemplateTypeClass(Xtra0007); // TEMPLATE_XTRA0007
|
||||
(void)new TemplateTypeClass(Xtra0008); // TEMPLATE_XTRA0008
|
||||
(void)new TemplateTypeClass(Xtra0009); // TEMPLATE_XTRA0009
|
||||
(void)new TemplateTypeClass(Xtra0010); // TEMPLATE_XTRA0010
|
||||
(void)new TemplateTypeClass(Xtra0011); // TEMPLATE_XTRA0011
|
||||
(void)new TemplateTypeClass(Xtra0012); // TEMPLATE_XTRA0012
|
||||
(void)new TemplateTypeClass(Xtra0013); // TEMPLATE_XTRA0013
|
||||
(void)new TemplateTypeClass(Xtra0014); // TEMPLATE_XTRA0014
|
||||
(void)new TemplateTypeClass(Xtra0015); // TEMPLATE_XTRA0015
|
||||
(void)new TemplateTypeClass(Xtra0016); // TEMPLATE_XTRA0016
|
||||
//(void)new TemplateTypeClass(Xtra0001); // TEMPLATE_XTRA0001
|
||||
//(void)new TemplateTypeClass(Xtra0002); // TEMPLATE_XTRA0002
|
||||
//(void)new TemplateTypeClass(Xtra0003); // TEMPLATE_XTRA0003
|
||||
//(void)new TemplateTypeClass(Xtra0004); // TEMPLATE_XTRA0004
|
||||
//(void)new TemplateTypeClass(Xtra0005); // TEMPLATE_XTRA0005
|
||||
//(void)new TemplateTypeClass(Xtra0006); // TEMPLATE_XTRA0006
|
||||
//(void)new TemplateTypeClass(Xtra0007); // TEMPLATE_XTRA0007
|
||||
//(void)new TemplateTypeClass(Xtra0008); // TEMPLATE_XTRA0008
|
||||
//(void)new TemplateTypeClass(Xtra0009); // TEMPLATE_XTRA0009
|
||||
//(void)new TemplateTypeClass(Xtra0010); // TEMPLATE_XTRA0010
|
||||
//(void)new TemplateTypeClass(Xtra0011); // TEMPLATE_XTRA0011
|
||||
//(void)new TemplateTypeClass(Xtra0012); // TEMPLATE_XTRA0012
|
||||
//(void)new TemplateTypeClass(Xtra0013); // TEMPLATE_XTRA0013
|
||||
//(void)new TemplateTypeClass(Xtra0014); // TEMPLATE_XTRA0014
|
||||
//(void)new TemplateTypeClass(Xtra0015); // TEMPLATE_XTRA0015
|
||||
//(void)new TemplateTypeClass(Xtra0016); // TEMPLATE_XTRA0016
|
||||
|
||||
#ifdef FIXIT_ANTS
|
||||
(void)new TemplateTypeClass(AntHill); // TEMPLATE_ROAD36
|
||||
@@ -2495,29 +2495,30 @@ void TemplateTypeClass::Display(int x, int y, WindowNumberType window, HousesTyp
|
||||
int index;
|
||||
bool scale; // Should the template be half sized?
|
||||
|
||||
w = Bound(Width, 1, 13);
|
||||
h = Bound(Height, 1, 8);
|
||||
scale = (w > 3 || h > 3);
|
||||
if (scale) {
|
||||
x -= (w * ICON_PIXEL_W) / 4;
|
||||
y -= (h * ICON_PIXEL_H) / 4;
|
||||
} else {
|
||||
x -= (w * ICON_PIXEL_W) / 2;
|
||||
y -= (h * ICON_PIXEL_H) / 2;
|
||||
}
|
||||
x += WindowList[window][WINDOWX];
|
||||
y += WindowList[window][WINDOWY];
|
||||
Image_t* img = Get_HDImage_Data();
|
||||
|
||||
IconsetClass const * iconset = (IconsetClass const *)Get_Image_Data();
|
||||
unsigned char const * map = iconset->Map_Data();
|
||||
w = Bound(img->width, 1, 13);
|
||||
h = Bound(img->height, 1, 8);
|
||||
//scale = (w > 3 || h > 3);
|
||||
//if (scale) {
|
||||
// x -= (w * ICON_PIXEL_W) / 4;
|
||||
// y -= (h * ICON_PIXEL_H) / 4;
|
||||
//} else {
|
||||
// x -= (w * ICON_PIXEL_W) / 2;
|
||||
// y -= (h * ICON_PIXEL_H) / 2;
|
||||
//}
|
||||
//x += WindowList[window][WINDOWX];
|
||||
//y += WindowList[window][WINDOWY];
|
||||
|
||||
for (index = 0; index < w*h; index++) {
|
||||
if (map[index] != 0xFF) {
|
||||
Image_t* image = Get_HDImage_Data();
|
||||
int stamp_index = Stamp_GetIconIndex(image, index);
|
||||
//IconsetClass const * iconset = (IconsetClass const *)Get_Image_Data();
|
||||
//unsigned char const * map = iconset->Map_Data();
|
||||
|
||||
GL_RenderForeGroundImage(image, x + ((index % w) * (ICON_PIXEL_W / 2)), y + ((index / w) * (ICON_PIXEL_H / 2)), ICON_PIXEL_W / 2, ICON_PIXEL_H / 2, 0, stamp_index);
|
||||
}
|
||||
for (index = 0; index < img->isoTileInfo->NumTiles(); index++) {
|
||||
IsoTileImageHeader* isoImage = img->isoTileInfo->GetTileInfo(index);
|
||||
if (isoImage == NULL)
|
||||
continue;
|
||||
|
||||
GL_RenderForeGroundImage(img, x + isoImage->TileX, y + isoImage->TileY, ICON_PIXEL_W, ICON_PIXEL_H, 0, index);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2544,6 +2545,10 @@ void TemplateTypeClass::Display(int x, int y, WindowNumberType window, HousesTyp
|
||||
void TemplateTypeClass::Prep_For_Add(void)
|
||||
{
|
||||
for (TemplateType index = TEMPLATE_CLEAR1; index < TEMPLATE_COUNT; index++) {
|
||||
// jmarshall
|
||||
if (index > TEMPLATE_SHORE41)
|
||||
return;
|
||||
// jmarshall end
|
||||
if (As_Reference(index).Get_Image_Data()) {
|
||||
Map.Add_To_List(&As_Reference(index));
|
||||
}
|
||||
|
||||
+18
-18
@@ -2121,24 +2121,24 @@ typedef enum TemplateType : unsigned short {
|
||||
TEMPLATE_BRIDGE_2AX,
|
||||
TEMPLATE_BRIDGE1X,
|
||||
TEMPLATE_BRIDGE2X,
|
||||
|
||||
TEMPLATE_XTRA0001,
|
||||
TEMPLATE_XTRA0002,
|
||||
TEMPLATE_XTRA0003,
|
||||
TEMPLATE_XTRA0004,
|
||||
TEMPLATE_XTRA0005,
|
||||
TEMPLATE_XTRA0006,
|
||||
TEMPLATE_XTRA0007,
|
||||
TEMPLATE_XTRA0008,
|
||||
TEMPLATE_XTRA0009,
|
||||
TEMPLATE_XTRA0010,
|
||||
TEMPLATE_XTRA0011,
|
||||
TEMPLATE_XTRA0012,
|
||||
TEMPLATE_XTRA0013,
|
||||
TEMPLATE_XTRA0014,
|
||||
TEMPLATE_XTRA0015,
|
||||
TEMPLATE_XTRA0016,
|
||||
|
||||
// jmarshall
|
||||
//TEMPLATE_XTRA0001,
|
||||
//TEMPLATE_XTRA0002,
|
||||
//TEMPLATE_XTRA0003,
|
||||
//TEMPLATE_XTRA0004,
|
||||
//TEMPLATE_XTRA0005,
|
||||
//TEMPLATE_XTRA0006,
|
||||
//TEMPLATE_XTRA0007,
|
||||
//TEMPLATE_XTRA0008,
|
||||
//TEMPLATE_XTRA0009,
|
||||
//TEMPLATE_XTRA0010,
|
||||
//TEMPLATE_XTRA0011,
|
||||
//TEMPLATE_XTRA0012,
|
||||
//TEMPLATE_XTRA0013,
|
||||
//TEMPLATE_XTRA0014,
|
||||
//TEMPLATE_XTRA0015,
|
||||
//TEMPLATE_XTRA0016,
|
||||
// jmarshall end
|
||||
#ifdef FIXIT_ANTS
|
||||
TEMPLATE_HILL01,
|
||||
#endif
|
||||
|
||||
+108
-1
@@ -5,6 +5,8 @@
|
||||
#define MAX_IMAGE_FRAMES 12
|
||||
#define MAX_HOUSE_COLORS 8
|
||||
|
||||
#include "rgb.h"
|
||||
|
||||
struct HouseImage_t {
|
||||
unsigned int image[MAX_IMAGE_SHAPES][MAX_IMAGE_FRAMES];
|
||||
};
|
||||
@@ -51,4 +53,109 @@ bool Image_Add32BitImage(const char* name, Image_t* image, int HouseId, int Shap
|
||||
Image_t* Image_CreateBlankImage(const char* name, int width, int height);
|
||||
void Image_UploadRaw(Image_t* image, uint8_t* data, bool paletteRebuild, uint8_t *palette);
|
||||
|
||||
void Sys_SetOverlayImage(Image_t* image);
|
||||
void Sys_SetOverlayImage(Image_t* image);
|
||||
|
||||
extern byte TempTSStampData[48 * 24 * 4];
|
||||
|
||||
struct IsoTileHeader_t {
|
||||
int TileWidth;
|
||||
int TileHeight;
|
||||
int TileImageWidth;
|
||||
int TileImageHeight;
|
||||
};
|
||||
|
||||
struct IsoTileImageHeader
|
||||
{
|
||||
int TileX;
|
||||
int TileY;
|
||||
uint8_t* GetExtraData(IsoTile* tile)
|
||||
{
|
||||
return reinterpret_cast<uint8_t*>(tile) + ExtraOffset;
|
||||
}
|
||||
|
||||
uint8_t* GetZData(IsoTile* tile)
|
||||
{
|
||||
return reinterpret_cast<uint8_t*>(tile) + ZDataoffset;
|
||||
}
|
||||
|
||||
uint8_t* GetExtraZData(IsoTile* tile)
|
||||
{
|
||||
return reinterpret_cast<uint8_t*>(tile) + ExtraZOffset;
|
||||
}
|
||||
|
||||
uint8_t* GetData() {
|
||||
return reinterpret_cast<uint8_t*>(this) + sizeof(IsoTileImageHeader);
|
||||
}
|
||||
|
||||
// https://xhp.xwis.net/documents/TMP_TS_Format.html
|
||||
uint8_t* GetRasterizedData() {
|
||||
memset(TempTSStampData, 0, sizeof(TempTSStampData));
|
||||
uint8_t* tileData = GetData();
|
||||
byte* w_line = TempTSStampData;
|
||||
int x = 24;
|
||||
int global_cx = 48;
|
||||
int cx = 0;
|
||||
for (int y = 0; y < 12; y++)
|
||||
{
|
||||
cx += 4;
|
||||
x -= 2;
|
||||
memcpy(w_line + x, tileData, cx);
|
||||
tileData += cx;
|
||||
w_line += global_cx;
|
||||
}
|
||||
for (; y < 23; y++)
|
||||
{
|
||||
cx -= 4;
|
||||
x += 2;
|
||||
memcpy(w_line + x, tileData, cx);
|
||||
tileData += cx;
|
||||
w_line += global_cx;
|
||||
}
|
||||
|
||||
return TempTSStampData;
|
||||
}
|
||||
|
||||
int32_t ExtraOffset;
|
||||
int32_t ZDataoffset;
|
||||
int32_t ExtraZOffset;
|
||||
signed int ExtraX;
|
||||
signed int ExtraY;
|
||||
int ExtraWidth;
|
||||
int ExtraHeight;
|
||||
struct Flags
|
||||
{
|
||||
unsigned int HasExtraData : 1; //1
|
||||
unsigned int HasZData : 1; //2
|
||||
unsigned int HasDamagedData : 1; //4
|
||||
// invalid cause memory wasn'y cleared so all bitfields are at 0xCD by default
|
||||
//unsigned int Bit8 : 1; //8
|
||||
//unsigned int Bit16 : 1; //16
|
||||
//unsigned int Bit32 : 1; //32
|
||||
//unsigned int Bit64 : 1; //64
|
||||
//unsigned int Bit128 : 1; //128
|
||||
|
||||
};
|
||||
unsigned char Height;
|
||||
unsigned char TileType;
|
||||
unsigned char RampType;
|
||||
RGBClass LowRGB;
|
||||
RGBClass HighRGB;
|
||||
unsigned char Padding[3];
|
||||
};
|
||||
|
||||
class IsoTile {
|
||||
public:
|
||||
int TileImageWidth() { return header.TileImageWidth; }
|
||||
int TileImageHeight() { return header.TileImageHeight; }
|
||||
|
||||
IsoTileImageHeader* GetTileInfo(int idx) {
|
||||
uint8_t* ptr = reinterpret_cast<uint8_t*>(this);
|
||||
ptr += sizeof(IsoTileHeader_t);
|
||||
uint32_t* offsets = (uint32_t*)ptr;
|
||||
IsoTileImageHeader* tileImageHeaders = (IsoTileImageHeader*)(((uint8_t*)this) + offsets[idx]);
|
||||
return tileImageHeaders;
|
||||
}
|
||||
int NumTiles(void) { return header.TileWidth * header.TileHeight; }
|
||||
private:
|
||||
IsoTileHeader_t header;
|
||||
};
|
||||
@@ -29,112 +29,8 @@
|
||||
using std::memcpy;
|
||||
|
||||
class GraphicViewPortClass;
|
||||
|
||||
struct IsoTileHeader_t {
|
||||
int TileWidth;
|
||||
int TileHeight;
|
||||
int TileImageWidth;
|
||||
int TileImageHeight;
|
||||
};
|
||||
|
||||
byte TempTSStampData[48 * 24 * 4];
|
||||
|
||||
struct IsoTileImageHeader
|
||||
{
|
||||
int TileX;
|
||||
int TileY;
|
||||
uint8_t* GetExtraData(IsoTile *tile)
|
||||
{
|
||||
return reinterpret_cast<uint8_t*>(tile) + ExtraOffset;
|
||||
}
|
||||
|
||||
uint8_t* GetZData(IsoTile* tile)
|
||||
{
|
||||
return reinterpret_cast<uint8_t*>(tile) + ZDataoffset;
|
||||
}
|
||||
|
||||
uint8_t* GetExtraZData(IsoTile* tile)
|
||||
{
|
||||
return reinterpret_cast<uint8_t*>(tile) + ExtraZOffset;
|
||||
}
|
||||
|
||||
uint8_t* GetData() {
|
||||
return reinterpret_cast<uint8_t*>(this) + sizeof(IsoTileImageHeader);
|
||||
}
|
||||
|
||||
// https://xhp.xwis.net/documents/TMP_TS_Format.html
|
||||
uint8_t* GetRasterizedData() {
|
||||
memset(TempTSStampData, 0, sizeof(TempTSStampData));
|
||||
uint8_t* tileData = GetData();
|
||||
byte* w_line = TempTSStampData;
|
||||
int x = 24;
|
||||
int global_cx = 48;
|
||||
int cx = 0;
|
||||
for (int y = 0; y < 12; y++)
|
||||
{
|
||||
cx += 4;
|
||||
x -= 2;
|
||||
memcpy(w_line + x, tileData, cx);
|
||||
tileData += cx;
|
||||
w_line += global_cx;
|
||||
}
|
||||
for (; y < 23; y++)
|
||||
{
|
||||
cx -= 4;
|
||||
x += 2;
|
||||
memcpy(w_line + x, tileData, cx);
|
||||
tileData += cx;
|
||||
w_line += global_cx;
|
||||
}
|
||||
|
||||
return TempTSStampData;
|
||||
}
|
||||
|
||||
int32_t ExtraOffset;
|
||||
int32_t ZDataoffset;
|
||||
int32_t ExtraZOffset;
|
||||
signed int ExtraX;
|
||||
signed int ExtraY;
|
||||
int ExtraWidth;
|
||||
int ExtraHeight;
|
||||
struct Flags
|
||||
{
|
||||
unsigned int HasExtraData : 1; //1
|
||||
unsigned int HasZData : 1; //2
|
||||
unsigned int HasDamagedData : 1; //4
|
||||
// invalid cause memory wasn'y cleared so all bitfields are at 0xCD by default
|
||||
//unsigned int Bit8 : 1; //8
|
||||
//unsigned int Bit16 : 1; //16
|
||||
//unsigned int Bit32 : 1; //32
|
||||
//unsigned int Bit64 : 1; //64
|
||||
//unsigned int Bit128 : 1; //128
|
||||
|
||||
};
|
||||
unsigned char Height;
|
||||
unsigned char TileType;
|
||||
unsigned char RampType;
|
||||
RGBClass LowRGB;
|
||||
RGBClass HighRGB;
|
||||
unsigned char Padding[3];
|
||||
};
|
||||
|
||||
class IsoTile {
|
||||
public:
|
||||
int TileImageWidth() { return header.TileImageWidth; }
|
||||
int TileImageHeight() { return header.TileImageHeight; }
|
||||
|
||||
IsoTileImageHeader *GetTileInfo(int idx) {
|
||||
uint8_t* ptr = reinterpret_cast<uint8_t*>(this);
|
||||
ptr += sizeof(IsoTileHeader_t);
|
||||
uint32_t* offsets = (uint32_t*)ptr;
|
||||
IsoTileImageHeader* tileImageHeaders = (IsoTileImageHeader * )(((uint8_t*)this) + offsets[idx]);
|
||||
return tileImageHeaders;
|
||||
}
|
||||
int NumTiles(void) { return header.TileWidth * header.TileHeight; }
|
||||
private:
|
||||
IsoTileHeader_t header;
|
||||
};
|
||||
|
||||
Image_t* Load_StampHD(int theater, const char* iconName, const void* icondata) {
|
||||
char filename[2048];
|
||||
Image_t* image = NULL;
|
||||
|
||||
Reference in New Issue
Block a user