From 2a74c0750e840afb69c1d51dcbc7742144359bb4 Mon Sep 17 00:00:00 2001 From: Justin Marshall Date: Fri, 26 Jun 2020 20:07:36 -0700 Subject: [PATCH] Initial test code to render isometric tiles, including test art and test map. --- SCU01EA.INI | 190 +++++++++++++++ Work/Tilesets/Snow/Build.bat | 4 + Work/Tilesets/Snow/sno1.png | Bin 0 -> 37523 bytes Work/Tilesets/Snow/sno1_iso.png | Bin 0 -> 5464 bytes code/redalert/display.cpp | 19 +- code/redalert/display.h | 6 +- code/redalert/tileset.cpp | 6 +- .../terrain/snow/clear1.sno/clear1.0012.png | Bin 0 -> 6238 bytes data/xml/tilesets/RA_TERRAIN_SNOW.XML | 228 ++++++++++++++++++ 9 files changed, 444 insertions(+), 9 deletions(-) create mode 100644 SCU01EA.INI create mode 100644 Work/Tilesets/Snow/Build.bat create mode 100644 Work/Tilesets/Snow/sno1.png create mode 100644 Work/Tilesets/Snow/sno1_iso.png create mode 100644 data/art/textures/srgb/red_alert/terrain/snow/clear1.sno/clear1.0012.png create mode 100644 data/xml/tilesets/RA_TERRAIN_SNOW.XML diff --git a/SCU01EA.INI b/SCU01EA.INI new file mode 100644 index 0000000..fa6f4b0 --- /dev/null +++ b/SCU01EA.INI @@ -0,0 +1,190 @@ +[General] +ChronoTechLevel=12 +ParaTech=5 +ParabombTech=8 +SpyPlaneTech=5 +GPSTechLevel=10 + +[HBOX] +Power=-10 + +[PBOX] +Power=-10 + +[AGUN] +Power=-40 + +[FTUR] +Power=-40 + +[MRJ] +TechLevel=15 +Owner=soviet + +[MGG] +TechLevel=15 + +[MCV] +TechLevel=15 + +[LST] +TechLevel=1 + +[DOG] +TechLevel=3 + +[E4] +TechLevel=6 + +[THF] +TechLevel=15 + +[E7] +Prerequisite=atek +TechLevel=15 +Owner=allies + +[YAK] +TechLevel=1 + +[TRAN] +TechLevel=15 +Owner=allies,soviet + +[HELI] +TechLevel=10 + +[HIND] +TechLevel=10 + +[IRON] +TechLevel=15 + +[ATEK] +TechLevel=10 + +[PDOX] +TechLevel=15 + +[SPEN] +TechLevel=5 + +[HPAD] +TechLevel=10 + +[MSLO] +TechLevel=15 +Owner=soviet + +[AFLD] +TechLevel=4 + +[KENN] +TechLevel=2 + +[FACF] +TechLevel=15 + +[WEAF] +TechLevel=15 + +[SYRF] +TechLevel=15 + +[DOMF] +TechLevel=15 + +[Italy] +MaxUnit=150 +MaxInfantry=150 +MaxBuilding=150 +MaxVessel=20 +Allies=Special + +[Basic] +Name=In the thick of it +Intro= +Brief= +Win= +Lose= +Action= +Player=USSR +Theme=No theme +CarryOverMoney=0 +ToCarryOver=no +ToInherit=no +TimerInherit=no +CivEvac=no +NewINIFormat=3 +CarryOverCap=0 +EndOfGame=no +NoSpyPlane=no +SkipScore=no +OneTimeOnly=no +SkipMapSelect=no +Official=yes +FillSilos=no +TruckCrate=no +Percent=0 + +[Greece] +PlayerControl=yes + +[Map] +Theater=SNOW +X=49 +Y=49 +Width=30 +Height=30 + +[Waypoints] +98=8256 +99=8256 + +[MapPack] +1=BwAAIIH//v8f/4AHAAAggf/+/x//gAcAACCB//7/H/+ABwAAIIH//v8f/4AHAAAggQD+/x +2=8AgAcAACCBAP7/HwCA + +[TERRAIN] +8638=T01 +8778=T01 +7989=T01 +6453=T01 +8008=T01 +8399=T01 +7503=T01 +8631=T01 +9781=T01 +8883=T01 +9147=T03 +9043=T03 +8280=T03 +6998=T03 +7519=TC04 +8923=TC05 + +[UNITS] +0=Spain,4TNK,256,9288,0,Guard,None + +[STRUCTURES] +0=USSR,IRON,256,7115,0,None,0,0 +1=USSR,WEAP,256,6978,0,None,0,0 +2=USSR,FACT,256,7355,0,None,0,0 +3=USSR,PROC,256,7873,0,None,0,0 + +[Base] +Player=USSR +Count=0 + +[OverlayPack] +1=BwAAIIH//v8f/4AHAAAggf/+/x//gA== + +[Briefing] +1=Rescue Einstein from the Headquarters inside this Soviet complex. Once +2=found, evacuate him via the helicopter at the signal flare. Einstein and +3=Tanya must be kept alive at all costs. Beware the Soviet's Tesla Coils. +4=Direct Tanya to destroy the westmost power plants to take them off-line. + +[Digest] +1=pInr5IMV1Wll5YhV9IYdIxGdJ24= + diff --git a/Work/Tilesets/Snow/Build.bat b/Work/Tilesets/Snow/Build.bat new file mode 100644 index 0000000..65a308f --- /dev/null +++ b/Work/Tilesets/Snow/Build.bat @@ -0,0 +1,4 @@ +set PATH="C:\Program Files\ImageMagick-7.0.10-Q16-HDRI" + +magick.exe convert sno1.png -alpha set -virtual-pixel transparent +distort Affine "0,512 0,0 0,0 -87,-50 512,512 87,-50" -background none -compose plus -bordercolor black -compose over -border 5x2 sno1_iso.png +pause \ No newline at end of file diff --git a/Work/Tilesets/Snow/sno1.png b/Work/Tilesets/Snow/sno1.png new file mode 100644 index 0000000000000000000000000000000000000000..a0d60f6e96883276445187bb79dd1775407f4212 GIT binary patch literal 37523 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 Cj)-mm literal 0 HcmV?d00001 diff --git a/code/redalert/display.cpp b/code/redalert/display.cpp index 356b22c..8337835 100644 --- a/code/redalert/display.cpp +++ b/code/redalert/display.cpp @@ -569,10 +569,10 @@ short const * DisplayClass::Text_Overlap_List(char const * text, int x, int y) c void DisplayClass::Set_View_Dimensions(int x, int y, int width, int height) { if (width == -1) width = SeenBuff.Get_Width(); - TacLeptonWidth = Pixel_To_Lepton( width - x); + TacLeptonWidth = Pixel_To_Lepton( width - x) * 2; if (height == -1) height = SeenBuff.Get_Height(); - TacLeptonHeight = Pixel_To_Lepton(height - y); + TacLeptonHeight = Pixel_To_Lepton(height - y) * 2; /* ** Adjust the tactical cell if it is now in an invalid position @@ -1756,6 +1756,17 @@ bool DisplayClass::Coord_To_Pixel(COORDINATE coord, int &x, int &y) const if ((int)yoff <= TacLeptonHeight + EDGE_ZONE*2) { x = Lepton_To_Pixel(xoff)-CELL_PIXEL_W*2; y = Lepton_To_Pixel(yoff)-CELL_PIXEL_H*2; +// jmarshall - isometric + int tileWidth = CELL_PIXEL_W; + int tileHeight = CELL_PIXEL_H; + int sx = (x / CELL_PIXEL_W) * (tileWidth / 2) - (y / CELL_PIXEL_W) * (tileWidth / 2); + int sy = (x / CELL_PIXEL_W) * (tileHeight / 2) + (y / CELL_PIXEL_W) * (tileHeight / 2); + + x = sx + (CELL_PIXEL_W / 2); + y = sy + (CELL_PIXEL_W / 2); + + x = x + (ScreenWidth / 2); +// jmarshall end return(true); } } @@ -2344,7 +2355,7 @@ void DisplayClass::Redraw_Icons(void) /* ** Only cells flagged to be redraw are examined. */ - if (In_View(cell) && Is_Cell_Flagged(cell)) { + { int xpixel; int ypixel; @@ -2403,7 +2414,7 @@ void DisplayClass::Redraw_OIcons(void) cellptr->Draw_It(xpixel, ypixel, true); } } - } + } } } } diff --git a/code/redalert/display.h b/code/redalert/display.h index f47315a..7fbca54 100644 --- a/code/redalert/display.h +++ b/code/redalert/display.h @@ -40,9 +40,11 @@ struct Image_t; -#define ICON_PIXEL_W 24 +// jmarshall - isometric +#define ICON_PIXEL_W 48 #define ICON_PIXEL_H 24 -#define ICON_LEPTON_W 256 +// jmarshall end +#define ICON_LEPTON_W 512 #define ICON_LEPTON_H 256 #define CELL_PIXEL_W ICON_PIXEL_W #define CELL_PIXEL_H ICON_PIXEL_H diff --git a/code/redalert/tileset.cpp b/code/redalert/tileset.cpp index b24846d..a596563 100644 --- a/code/redalert/tileset.cpp +++ b/code/redalert/tileset.cpp @@ -219,7 +219,7 @@ Image_t* Load_StampHD(int theater, const char* iconName, const void* icondata) { { const char* tileEntryName = Tileset_FindHDTexture(theater, fixedIconName, i, d); sprintf(filename, "DATA/ART/TEXTURES/SRGB/RED_ALERT/TERRAIN/%s/%s", Theaters[theater].Name, tileEntryName); - COM_SetExtension(filename, sizeof(filename), ".dds"); + //COM_SetExtension(filename, sizeof(filename), ".dds"); if (image == NULL) { // If the image is already loaded, then we are done. @@ -330,8 +330,8 @@ void __cdecl Buffer_Draw_Stamp_Clip2(GraphicViewPortClass& viewport, const void uint8_t* MapPtr = (uint8_t * )iconImage->IconMapPtr; int icon_index = MapPtr != nullptr ? MapPtr[icon] : icon; { - int blit_height = iconImage->renderheight[0]; - int blit_width = iconImage->renderwidth[0]; + int blit_height = CELL_PIXEL_H; + int blit_width = CELL_PIXEL_W; int width = left + right; int xstart = left + x; diff --git a/data/art/textures/srgb/red_alert/terrain/snow/clear1.sno/clear1.0012.png b/data/art/textures/srgb/red_alert/terrain/snow/clear1.sno/clear1.0012.png new file mode 100644 index 0000000000000000000000000000000000000000..c7c5442b40d0d5fda41a5421bc4e8412df8bfd38 GIT binary patch literal 6238 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 + + + Red_Alert\Terrain\Snow + + + + CLEAR1 + 0 + + + + clear1.sno\clear1.0012.png + + + + + + CLEAR1 + 1 + + + + clear1.sno\clear1.0012.png + + + + + + CLEAR1 + 2 + + + + clear1.sno\clear1.0012.png + + + + + + CLEAR1 + 3 + + + + clear1.sno\clear1.0012.png + + + + + + CLEAR1 + 4 + + + + clear1.sno\clear1.0012.png + + + + + + CLEAR1 + 5 + + + + clear1.sno\clear1.0012.png + + + + + + CLEAR1 + 6 + + + + clear1.sno\clear1.0012.png + + + + + + CLEAR1 + 7 + + + + clear1.sno\clear1.0012.png + + + + + + CLEAR1 + 8 + + + + clear1.sno\clear1.0012.png + + + + + + CLEAR1 + 9 + + + + clear1.sno\clear1.0012.png + + + + + + CLEAR1 + 10 + + + + clear1.sno\clear1.0012.png + + + + + + CLEAR1 + 11 + + + + clear1.sno\clear1.0012.png + + + + + + CLEAR1 + 12 + + + + clear1.sno\clear1.0012.png + + + + + + CLEAR1 + 13 + + + + clear1.sno\clear1.0012.png + + + + + + CLEAR1 + 14 + + + + clear1.sno\clear1.0012.png + + + + + + CLEAR1 + 15 + + + + clear1.sno\clear1.0012.png + + + + + + CLEAR1 + 16 + + + + clear1.sno\clear1.0012.png + + + + + + CLEAR1 + 17 + + + + clear1.sno\clear1.0012.png + + + + + + CLEAR1 + 18 + + + + clear1.sno\clear1.0012.png + + + + + + CLEAR1 + 19 + + + + clear1.sno\clear1.0012.png + + + + + + \ No newline at end of file