From 20a5c42f3ae365e02e31991b1ca09d9adc580151 Mon Sep 17 00:00:00 2001 From: Justin Marshall Date: Thu, 2 Jul 2020 12:40:46 -0700 Subject: [PATCH] Terrain data can now be placed again. --- SCU01EA.INI | 40 +- code/redalert/defines.h | 60 +-- code/redalert/tdata.cpp | 926 +++++++++++++++++++------------------- code/redalert/terrain.cpp | 10 +- 4 files changed, 522 insertions(+), 514 deletions(-) diff --git a/SCU01EA.INI b/SCU01EA.INI index dfbc85c..a335c4d 100644 --- a/SCU01EA.INI +++ b/SCU01EA.INI @@ -103,7 +103,7 @@ Allies=Special [Basic] Name=In the thick of it -Intro= +Intro=AAGUN Brief= Win= Lose= @@ -130,6 +130,9 @@ Percent=0 [Greece] PlayerControl=yes +[USSR] +Credits=53 + [Map] Theater=SNOW X=49 @@ -142,8 +145,29 @@ Height=30 99=8256 [MapPack] -1=BwAAIIH//v8f/4AVAAAggf/+dR7/hAEAAQD+/AD//4oAdh6ABwAAIIH//v8f/4AHAAAggf -2=/+/x//gBQAACCBAP47HwCBAf5+AACCAgP+QwAAgAcAACCBAP7/HwCA +1=BwAAIIH//v8f/4BkAAAggf/+YRX/hQMAAwAEAAKBBUACyWYVgwYABwAC/t4A//8AAWIVgg +2=EA2WIX/wABgBb+4gD/ghUAEAKBFiAGEAKBFAACgRMAAoEYAAKBFwACgRb/3wB/GP8AAWIZ +3=1WEbUQD+fgT/gAcAACCB//7/H/+ABwAAIIH//v8f/4BWAAAggQD+sRoAgQHKsRoQA/5tAA +4=CCAgPJMRuDAQID/nAAAMq2GoMBBAX+bwAAyDMbEAX+cgAAgQEw+XEG/m4AAIICAxH1yDUb +5=/nsAAIIEBf9xAMAb/tABAIAHAAAggQD+/x8AgA== + +[UNITS] +0=USSR,4TNK,256,7620,32,Guard,None +1=USSR,4TNK,256,8386,0,Guard,None +2=USSR,4TNK,256,7495,0,Move,None + +[STRUCTURES] +0=USSR,FACT,256,7861,0,None,0,0 +1=USSR,PROC,256,7865,0,None,0,0 +2=USSR,PROC,256,8377,0,None,0,0 +3=USSR,POWR,256,6323,0,None,0,0 +4=USSR,POWR,256,6326,0,None,0,0 +5=USSR,POWR,256,6330,0,None,0,0 +6=USSR,POWR,256,6333,0,None,0,0 +7=USSR,APWR,256,7869,0,None,0,0 +8=USSR,APWR,256,8382,0,None,0,0 +9=USSR,BARR,256,8373,0,None,0,0 +10=USSR,FIX,256,8885,0,None,0,0 [Base] Player=USSR @@ -153,11 +177,11 @@ Count=0 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. +1=A pitiful excuse for resistance has blockaded itself in this village. +2=Stalin has decided to make an example of them. Kill them all and destroy +3=their homes. You will have Yak aircraft to use in teaching these rebels a +4=lesson. [Digest] -1=dWjOPCEhb7UG7SsNlAGLf6N5iyc= +1=lyey0f+Q6FftYusQAt1JVAjsSDQ= diff --git a/code/redalert/defines.h b/code/redalert/defines.h index 9dea187..54b7cc9 100644 --- a/code/redalert/defines.h +++ b/code/redalert/defines.h @@ -2159,26 +2159,26 @@ inline TemplateType operator++(TemplateType &n) { n = (TemplateType)(((int)n) + */ typedef enum TerrainType : char { TERRAIN_NONE=-1, - //TERRAIN_TREE1, - //TERRAIN_TREE2, - //TERRAIN_TREE3, - //TERRAIN_TREE5, - //TERRAIN_TREE6, - //TERRAIN_TREE7, - //TERRAIN_TREE8, - //TERRAIN_TREE10, - //TERRAIN_TREE11, - //TERRAIN_TREE12, - //TERRAIN_TREE13, - //TERRAIN_TREE14, - //TERRAIN_TREE15, - //TERRAIN_TREE16, - //TERRAIN_TREE17, - //TERRAIN_CLUMP1, - //TERRAIN_CLUMP2, - //TERRAIN_CLUMP3, - //TERRAIN_CLUMP4, - //TERRAIN_CLUMP5, + TERRAIN_TREE1, + TERRAIN_TREE2, + TERRAIN_TREE3, + TERRAIN_TREE5, + TERRAIN_TREE6, + TERRAIN_TREE7, + TERRAIN_TREE8, + TERRAIN_TREE10, + TERRAIN_TREE11, + TERRAIN_TREE12, + TERRAIN_TREE13, + TERRAIN_TREE14, + TERRAIN_TREE15, + TERRAIN_TREE16, + TERRAIN_TREE17, + TERRAIN_CLUMP1, + TERRAIN_CLUMP2, + TERRAIN_CLUMP3, + TERRAIN_CLUMP4, + TERRAIN_CLUMP5, TERRAIN_ICE01, TERRAIN_ICE02, @@ -2186,17 +2186,17 @@ typedef enum TerrainType : char { TERRAIN_ICE04, TERRAIN_ICE05, - //TERRAIN_BOXES01, - //TERRAIN_BOXES02, - //TERRAIN_BOXES03, - //TERRAIN_BOXES04, - //TERRAIN_BOXES05, - //TERRAIN_BOXES06, - //TERRAIN_BOXES07, - //TERRAIN_BOXES08, - //TERRAIN_BOXES09, + TERRAIN_BOXES01, + TERRAIN_BOXES02, + TERRAIN_BOXES03, + TERRAIN_BOXES04, + TERRAIN_BOXES05, + TERRAIN_BOXES06, + TERRAIN_BOXES07, + TERRAIN_BOXES08, + TERRAIN_BOXES09, // - //TERRAIN_MINE, + TERRAIN_MINE, TERRAIN_COUNT, TERRAIN_FIRST=0 diff --git a/code/redalert/tdata.cpp b/code/redalert/tdata.cpp index 3bfdfc9..1c95e21 100644 --- a/code/redalert/tdata.cpp +++ b/code/redalert/tdata.cpp @@ -52,434 +52,434 @@ #include "Image.h" -static short const _List000011101000[] = {MAP_CELL_W, MAP_CELL_W+1, MAP_CELL_W+2, MAP_CELL_W*2, REFRESH_EOL}; -static short const _List000110[] = {MAP_CELL_W, MAP_CELL_W+1, REFRESH_EOL}; -static short const _List001011100110[] = {2, MAP_CELL_W, MAP_CELL_W+1, MAP_CELL_W+2, MAP_CELL_W*2+1, MAP_CELL_W*2+2, REFRESH_EOL}; -static short const _List0010[] = {MAP_CELL_W, REFRESH_EOL}; -static short const _List0011[] = {MAP_CELL_W, MAP_CELL_W+1, REFRESH_EOL}; -static short const _List001[] = {2, REFRESH_EOL}; -static short const _List010110[] = {1, MAP_CELL_W, MAP_CELL_W+1, REFRESH_EOL}; -static short const _List01[] = {1, REFRESH_EOL}; -static short const _List11[] = {0, 1, REFRESH_EOL}; -static short const _List1001[] = {0, MAP_CELL_W+1, REFRESH_EOL}; -static short const _List1010[] = {0, MAP_CELL_W, REFRESH_EOL}; -static short const _List101001[] = {0, 2, MAP_CELL_W+2, REFRESH_EOL}; -static short const _List10[] = {0, REFRESH_EOL}; -static short const _List110000011001[] = {0, 1, MAP_CELL_W+3, MAP_CELL_W*2, MAP_CELL_W*2+3, REFRESH_EOL}; -static short const _List110001[] = {0, 1, MAP_CELL_W+2, REFRESH_EOL}; -static short const _List1100[] = {0, 1, REFRESH_EOL}; -static short const _List110110[] = {0, 1, MAP_CELL_W, MAP_CELL_W+1, REFRESH_EOL}; -static short const _List1101[] = {0, 1, MAP_CELL_W+1, REFRESH_EOL}; -static short const _List1111[] = {0, 1, MAP_CELL_W, MAP_CELL_W+1, REFRESH_EOL}; -static short const _List111000010110[] = {0, 1, 2, MAP_CELL_W+3, MAP_CELL_W*2+1, MAP_CELL_W*2+2, REFRESH_EOL}; +static short const _List000011101000[] = { MAP_CELL_W, MAP_CELL_W + 1, MAP_CELL_W + 2, MAP_CELL_W * 2, REFRESH_EOL }; +static short const _List000110[] = { MAP_CELL_W, MAP_CELL_W + 1, REFRESH_EOL }; +static short const _List001011100110[] = { 2, MAP_CELL_W, MAP_CELL_W + 1, MAP_CELL_W + 2, MAP_CELL_W * 2 + 1, MAP_CELL_W * 2 + 2, REFRESH_EOL }; +static short const _List0010[] = { MAP_CELL_W, REFRESH_EOL }; +static short const _List0011[] = { MAP_CELL_W, MAP_CELL_W + 1, REFRESH_EOL }; +static short const _List001[] = { 2, REFRESH_EOL }; +static short const _List010110[] = { 1, MAP_CELL_W, MAP_CELL_W + 1, REFRESH_EOL }; +static short const _List01[] = { 1, REFRESH_EOL }; +static short const _List11[] = { 0, 1, REFRESH_EOL }; +static short const _List1001[] = { 0, MAP_CELL_W + 1, REFRESH_EOL }; +static short const _List1010[] = { 0, MAP_CELL_W, REFRESH_EOL }; +static short const _List101001[] = { 0, 2, MAP_CELL_W + 2, REFRESH_EOL }; +static short const _List10[] = { 0, REFRESH_EOL }; +static short const _List110000011001[] = { 0, 1, MAP_CELL_W + 3, MAP_CELL_W * 2, MAP_CELL_W * 2 + 3, REFRESH_EOL }; +static short const _List110001[] = { 0, 1, MAP_CELL_W + 2, REFRESH_EOL }; +static short const _List1100[] = { 0, 1, REFRESH_EOL }; +static short const _List110110[] = { 0, 1, MAP_CELL_W, MAP_CELL_W + 1, REFRESH_EOL }; +static short const _List1101[] = { 0, 1, MAP_CELL_W + 1, REFRESH_EOL }; +static short const _List1111[] = { 0, 1, MAP_CELL_W, MAP_CELL_W + 1, REFRESH_EOL }; +static short const _List111000010110[] = { 0, 1, 2, MAP_CELL_W + 3, MAP_CELL_W * 2 + 1, MAP_CELL_W * 2 + 2, REFRESH_EOL }; -//static TerrainTypeClass const Mine( -// TERRAIN_MINE, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(12,24), // Center base coordinate offset. -// true, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "MINE", -// TXT_ORE_MINE, -// (short const *)_List10, -// NULL -//); -//static TerrainTypeClass const Boxes01( -// TERRAIN_BOXES01, -// THEATERF_INTERIOR, -// XYP_COORD(12,24), // Center base coordinate offset. -// true, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "BOXES01", -// TXT_CRATES, -// (short const *)_List10, -// NULL -//); -//static TerrainTypeClass const Boxes02( -// TERRAIN_BOXES02, -// THEATERF_INTERIOR, -// XYP_COORD(12,24), // Center base coordinate offset. -// true, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "BOXES02", -// TXT_CRATES, -// (short const *)_List10, -// NULL -//); -//static TerrainTypeClass const Boxes03( -// TERRAIN_BOXES03, -// THEATERF_INTERIOR, -// XYP_COORD(12,24), // Center base coordinate offset. -// true, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "BOXES03", -// TXT_CRATES, -// (short const *)_List10, -// NULL -//); -//static TerrainTypeClass const Boxes04( -// TERRAIN_BOXES04, -// THEATERF_INTERIOR, -// XYP_COORD(12,24), // Center base coordinate offset. -// true, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "BOXES04", -// TXT_CRATES, -// (short const *)_List10, -// NULL -//); -//static TerrainTypeClass const Boxes05( -// TERRAIN_BOXES05, -// THEATERF_INTERIOR, -// XYP_COORD(12,24), // Center base coordinate offset. -// true, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "BOXES05", -// TXT_CRATES, -// (short const *)_List10, -// NULL -//); -//static TerrainTypeClass const Boxes06( -// TERRAIN_BOXES06, -// THEATERF_INTERIOR, -// XYP_COORD(12,24), // Center base coordinate offset. -// true, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "BOXES06", -// TXT_CRATES, -// (short const *)_List10, -// NULL -//); -//static TerrainTypeClass const Boxes07( -// TERRAIN_BOXES07, -// THEATERF_INTERIOR, -// XYP_COORD(12,24), // Center base coordinate offset. -// true, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "BOXES07", -// TXT_CRATES, -// (short const *)_List10, -// NULL -//); -//static TerrainTypeClass const Boxes08( -// TERRAIN_BOXES08, -// THEATERF_INTERIOR, -// XYP_COORD(12,24), // Center base coordinate offset. -// true, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "BOXES08", -// TXT_CRATES, -// (short const *)_List10, -// NULL -//); -//static TerrainTypeClass const Boxes09( -// TERRAIN_BOXES09, -// THEATERF_INTERIOR, -// XYP_COORD(12,24), // Center base coordinate offset. -// true, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "BOXES09", -// TXT_CRATES, -// (short const *)_List10, -// NULL -//); +static TerrainTypeClass const Mine( + TERRAIN_MINE, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(12, 24), // Center base coordinate offset. + true, // Is it immune to normal combat damage? + false, // Is based on the water? + "MINE", + TXT_ORE_MINE, + (short const*)_List10, + NULL +); +static TerrainTypeClass const Boxes01( + TERRAIN_BOXES01, + THEATERF_INTERIOR, + XYP_COORD(12, 24), // Center base coordinate offset. + true, // Is it immune to normal combat damage? + false, // Is based on the water? + "BOXES01", + TXT_CRATES, + (short const*)_List10, + NULL +); +static TerrainTypeClass const Boxes02( + TERRAIN_BOXES02, + THEATERF_INTERIOR, + XYP_COORD(12, 24), // Center base coordinate offset. + true, // Is it immune to normal combat damage? + false, // Is based on the water? + "BOXES02", + TXT_CRATES, + (short const*)_List10, + NULL +); +static TerrainTypeClass const Boxes03( + TERRAIN_BOXES03, + THEATERF_INTERIOR, + XYP_COORD(12, 24), // Center base coordinate offset. + true, // Is it immune to normal combat damage? + false, // Is based on the water? + "BOXES03", + TXT_CRATES, + (short const*)_List10, + NULL +); +static TerrainTypeClass const Boxes04( + TERRAIN_BOXES04, + THEATERF_INTERIOR, + XYP_COORD(12, 24), // Center base coordinate offset. + true, // Is it immune to normal combat damage? + false, // Is based on the water? + "BOXES04", + TXT_CRATES, + (short const*)_List10, + NULL +); +static TerrainTypeClass const Boxes05( + TERRAIN_BOXES05, + THEATERF_INTERIOR, + XYP_COORD(12, 24), // Center base coordinate offset. + true, // Is it immune to normal combat damage? + false, // Is based on the water? + "BOXES05", + TXT_CRATES, + (short const*)_List10, + NULL +); +static TerrainTypeClass const Boxes06( + TERRAIN_BOXES06, + THEATERF_INTERIOR, + XYP_COORD(12, 24), // Center base coordinate offset. + true, // Is it immune to normal combat damage? + false, // Is based on the water? + "BOXES06", + TXT_CRATES, + (short const*)_List10, + NULL +); +static TerrainTypeClass const Boxes07( + TERRAIN_BOXES07, + THEATERF_INTERIOR, + XYP_COORD(12, 24), // Center base coordinate offset. + true, // Is it immune to normal combat damage? + false, // Is based on the water? + "BOXES07", + TXT_CRATES, + (short const*)_List10, + NULL +); +static TerrainTypeClass const Boxes08( + TERRAIN_BOXES08, + THEATERF_INTERIOR, + XYP_COORD(12, 24), // Center base coordinate offset. + true, // Is it immune to normal combat damage? + false, // Is based on the water? + "BOXES08", + TXT_CRATES, + (short const*)_List10, + NULL +); +static TerrainTypeClass const Boxes09( + TERRAIN_BOXES09, + THEATERF_INTERIOR, + XYP_COORD(12, 24), // Center base coordinate offset. + true, // Is it immune to normal combat damage? + false, // Is based on the water? + "BOXES09", + TXT_CRATES, + (short const*)_List10, + NULL +); static TerrainTypeClass const Ice01( TERRAIN_ICE01, THEATERF_SNOW, - XYP_COORD(24,24), // Center base coordinate offset. - true, // Is it immune to normal combat damage? - true, // Is based on the water? - "ICE0101", + XYP_COORD(24, 24), // Center base coordinate offset. + true, // Is it immune to normal combat damage? + true, // Is based on the water? + "ICE01", TXT_ICE, - (short const *)_List1111, + (short const*)_List1111, NULL ); static TerrainTypeClass const Ice02( TERRAIN_ICE02, THEATERF_SNOW, - XYP_COORD(12,24), // Center base coordinate offset. - true, // Is it immune to normal combat damage? - true, // Is based on the water? - "ICE0102", + XYP_COORD(12, 24), // Center base coordinate offset. + true, // Is it immune to normal combat damage? + true, // Is based on the water? + "ICE02", TXT_ICE, - (short const *)_List1010, + (short const*)_List1010, NULL ); static TerrainTypeClass const Ice03( TERRAIN_ICE03, THEATERF_SNOW, - XYP_COORD(24,12), // Center base coordinate offset. - true, // Is it immune to normal combat damage? - true, // Is based on the water? - "ICE0103", + XYP_COORD(24, 12), // Center base coordinate offset. + true, // Is it immune to normal combat damage? + true, // Is based on the water? + "ICE03", TXT_ICE, - (short const *)_List11, + (short const*)_List11, NULL ); static TerrainTypeClass const Ice04( TERRAIN_ICE04, THEATERF_SNOW, - XYP_COORD(12,12), // Center base coordinate offset. - true, // Is it immune to normal combat damage? - true, // Is based on the water? - "ICE0104", + XYP_COORD(12, 12), // Center base coordinate offset. + true, // Is it immune to normal combat damage? + true, // Is based on the water? + "ICE04", TXT_ICE, - (short const *)_List10, + (short const*)_List10, NULL ); static TerrainTypeClass const Ice05( TERRAIN_ICE05, THEATERF_SNOW, - XYP_COORD(12,12), // Center base coordinate offset. - true, // Is it immune to normal combat damage? - true, // Is based on the water? - "ICE0105", + XYP_COORD(12, 12), // Center base coordinate offset. + true, // Is it immune to normal combat damage? + true, // Is based on the water? + "ICE05", TXT_ICE, - (short const *)_List10, + (short const*)_List10, NULL ); -//static TerrainTypeClass const Tree1Class( -// TERRAIN_TREE1, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(11,41), // Center base coordinate offset. -// false, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "T01", -// TXT_TREE, -// (short const *)_List0010, -// (short const *)_List1001 -//); -// -//static TerrainTypeClass const Tree2Class( -// TERRAIN_TREE2, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(11,44), // Center base coordinate offset. -// false, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "T02", -// TXT_TREE, -// (short const *)_List0010, -// (short const *)_List1001 -//); -// -//static TerrainTypeClass const Tree3Class( -// TERRAIN_TREE3, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(12,45), // Center base coordinate offset. -// false, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "T03", -// TXT_TREE, -// (short const *)_List0010, -// (short const *)_List1001 -//); -// -//static TerrainTypeClass const Tree5Class( -// TERRAIN_TREE5, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(15,41), // Center base coordinate offset. -// false, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "T05", -// TXT_TREE, -// (short const *)_List0010, -// (short const *)_List1001 -//); -// -//static TerrainTypeClass const Tree6Class( -// TERRAIN_TREE6, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(16,37), // Center base coordinate offset. -// false, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "T06", -// TXT_TREE, -// (short const *)_List0010, -// (short const *)_List1001 -//); -// -//static TerrainTypeClass const Tree7Class( -// TERRAIN_TREE7, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(15,41), // Center base coordinate offset. -// false, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "T07", -// TXT_TREE, -// (short const *)_List0010, -// (short const *)_List1001 -//); -// -//static TerrainTypeClass const Tree8Class( -// TERRAIN_TREE8, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(14,22), // Center base coordinate offset. -// false, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "T08", -// TXT_TREE, -// (short const *)_List10, -// (short const *)_List01 -//); -// -//static TerrainTypeClass const Tree10Class( -// TERRAIN_TREE10, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(25,43), // Center base coordinate offset. -// false, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "T10", -// TXT_TREE, -// (short const *)_List0011, -// (short const *)_List1100 -//); -// -//static TerrainTypeClass const Tree11Class( -// TERRAIN_TREE11, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(23,44), // Center base coordinate offset. -// false, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "T11", -// TXT_TREE, -// (short const *)_List0011, -// (short const *)_List1100 -//); -// -//static TerrainTypeClass const Tree12Class( -// TERRAIN_TREE12, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(14,36), // Center base coordinate offset. -// false, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "T12", -// TXT_TREE, -// (short const *)_List0010, -// (short const *)_List1001 -//); -// -//static TerrainTypeClass const Tree13Class( -// TERRAIN_TREE13, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(19,40), // Center base coordinate offset. -// false, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "T13", -// TXT_TREE, -// (short const *)_List0010, -// (short const *)_List1101 -//); -// -//static TerrainTypeClass const Tree14Class( -// TERRAIN_TREE14, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(19,40), // Center base coordinate offset. -// false, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "T14", -// TXT_TREE, -// (short const *)_List0011, -// (short const *)_List1100 -//); -// -//static TerrainTypeClass const Tree15Class( -// TERRAIN_TREE15, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(19,40), // Center base coordinate offset. -// false, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "T15", -// TXT_TREE, -// (short const *)_List0011, -// (short const *)_List1100 -//); -// -//static TerrainTypeClass const Tree16Class( -// TERRAIN_TREE16, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(13,36), // Center base coordinate offset. -// false, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "T16", -// TXT_TREE, -// (short const *)_List0010, -// (short const *)_List1001 -//); -// -//static TerrainTypeClass const Tree17Class( -// TERRAIN_TREE17, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(18,44), // Center base coordinate offset. -// false, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "T17", -// TXT_TREE, -// (short const *)_List0010, -// (short const *)_List1001 -//); -// -//static TerrainTypeClass const Clump1Class( -// TERRAIN_CLUMP1, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(28,41), // Center base coordinate offset. -// true, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "TC01", -// TXT_TREE, -// (short const *)_List000110, -// (short const *)_List110001 -//); -// -//static TerrainTypeClass const Clump2Class( -// TERRAIN_CLUMP2, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(38,41), // Center base coordinate offset. -// true, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "TC02", -// TXT_TREE, -// (short const *)_List010110, -// (short const *)_List101001 -//); -// -//static TerrainTypeClass const Clump3Class( -// TERRAIN_CLUMP3, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(33,35), // Center base coordinate offset. -// true, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "TC03", -// TXT_TREE, -// (short const *)_List110110, -// (short const *)_List001 -//); -// -//static TerrainTypeClass const Clump4Class( -// TERRAIN_CLUMP4, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(44,49), // Center base coordinate offset. -// true, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "TC04", -// TXT_TREE, -// (short const *)_List000011101000, -// (short const *)_List111000010110 -//); -// -//static TerrainTypeClass const Clump5Class( -// TERRAIN_CLUMP5, -// THEATERF_TEMPERATE|THEATERF_SNOW, -// XYP_COORD(49,58), // Center base coordinate offset. -// true, // Is it immune to normal combat damage? -// false, // Is based on the water? -// "TC05", -// TXT_TREE, -// (short const *)_List001011100110, -// (short const *)_List110000011001 -//); +static TerrainTypeClass const Tree1Class( + TERRAIN_TREE1, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(11, 41), // Center base coordinate offset. + false, // Is it immune to normal combat damage? + false, // Is based on the water? + "T01", + TXT_TREE, + (short const*)_List0010, + (short const*)_List1001 +); + +static TerrainTypeClass const Tree2Class( + TERRAIN_TREE2, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(11, 44), // Center base coordinate offset. + false, // Is it immune to normal combat damage? + false, // Is based on the water? + "T02", + TXT_TREE, + (short const*)_List0010, + (short const*)_List1001 +); + +static TerrainTypeClass const Tree3Class( + TERRAIN_TREE3, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(12, 45), // Center base coordinate offset. + false, // Is it immune to normal combat damage? + false, // Is based on the water? + "T03", + TXT_TREE, + (short const*)_List0010, + (short const*)_List1001 +); + +static TerrainTypeClass const Tree5Class( + TERRAIN_TREE5, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(15, 41), // Center base coordinate offset. + false, // Is it immune to normal combat damage? + false, // Is based on the water? + "T05", + TXT_TREE, + (short const*)_List0010, + (short const*)_List1001 +); + +static TerrainTypeClass const Tree6Class( + TERRAIN_TREE6, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(16, 37), // Center base coordinate offset. + false, // Is it immune to normal combat damage? + false, // Is based on the water? + "T06", + TXT_TREE, + (short const*)_List0010, + (short const*)_List1001 +); + +static TerrainTypeClass const Tree7Class( + TERRAIN_TREE7, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(15, 41), // Center base coordinate offset. + false, // Is it immune to normal combat damage? + false, // Is based on the water? + "T07", + TXT_TREE, + (short const*)_List0010, + (short const*)_List1001 +); + +static TerrainTypeClass const Tree8Class( + TERRAIN_TREE8, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(14, 22), // Center base coordinate offset. + false, // Is it immune to normal combat damage? + false, // Is based on the water? + "T08", + TXT_TREE, + (short const*)_List10, + (short const*)_List01 +); + +static TerrainTypeClass const Tree10Class( + TERRAIN_TREE10, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(25, 43), // Center base coordinate offset. + false, // Is it immune to normal combat damage? + false, // Is based on the water? + "T10", + TXT_TREE, + (short const*)_List0011, + (short const*)_List1100 +); + +static TerrainTypeClass const Tree11Class( + TERRAIN_TREE11, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(23, 44), // Center base coordinate offset. + false, // Is it immune to normal combat damage? + false, // Is based on the water? + "T11", + TXT_TREE, + (short const*)_List0011, + (short const*)_List1100 +); + +static TerrainTypeClass const Tree12Class( + TERRAIN_TREE12, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(14, 36), // Center base coordinate offset. + false, // Is it immune to normal combat damage? + false, // Is based on the water? + "T12", + TXT_TREE, + (short const*)_List0010, + (short const*)_List1001 +); + +static TerrainTypeClass const Tree13Class( + TERRAIN_TREE13, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(19, 40), // Center base coordinate offset. + false, // Is it immune to normal combat damage? + false, // Is based on the water? + "T13", + TXT_TREE, + (short const*)_List0010, + (short const*)_List1101 +); + +static TerrainTypeClass const Tree14Class( + TERRAIN_TREE14, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(19, 40), // Center base coordinate offset. + false, // Is it immune to normal combat damage? + false, // Is based on the water? + "T14", + TXT_TREE, + (short const*)_List0011, + (short const*)_List1100 +); + +static TerrainTypeClass const Tree15Class( + TERRAIN_TREE15, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(19, 40), // Center base coordinate offset. + false, // Is it immune to normal combat damage? + false, // Is based on the water? + "T15", + TXT_TREE, + (short const*)_List0011, + (short const*)_List1100 +); + +static TerrainTypeClass const Tree16Class( + TERRAIN_TREE16, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(13, 36), // Center base coordinate offset. + false, // Is it immune to normal combat damage? + false, // Is based on the water? + "T16", + TXT_TREE, + (short const*)_List0010, + (short const*)_List1001 +); + +static TerrainTypeClass const Tree17Class( + TERRAIN_TREE17, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(18, 44), // Center base coordinate offset. + false, // Is it immune to normal combat damage? + false, // Is based on the water? + "T17", + TXT_TREE, + (short const*)_List0010, + (short const*)_List1001 +); + +static TerrainTypeClass const Clump1Class( + TERRAIN_CLUMP1, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(28, 41), // Center base coordinate offset. + true, // Is it immune to normal combat damage? + false, // Is based on the water? + "TC01", + TXT_TREE, + (short const*)_List000110, + (short const*)_List110001 +); + +static TerrainTypeClass const Clump2Class( + TERRAIN_CLUMP2, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(38, 41), // Center base coordinate offset. + true, // Is it immune to normal combat damage? + false, // Is based on the water? + "TC02", + TXT_TREE, + (short const*)_List010110, + (short const*)_List101001 +); + +static TerrainTypeClass const Clump3Class( + TERRAIN_CLUMP3, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(33, 35), // Center base coordinate offset. + true, // Is it immune to normal combat damage? + false, // Is based on the water? + "TC03", + TXT_TREE, + (short const*)_List110110, + (short const*)_List001 +); + +static TerrainTypeClass const Clump4Class( + TERRAIN_CLUMP4, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(44, 49), // Center base coordinate offset. + true, // Is it immune to normal combat damage? + false, // Is based on the water? + "TC04", + TXT_TREE, + (short const*)_List000011101000, + (short const*)_List111000010110 +); + +static TerrainTypeClass const Clump5Class( + TERRAIN_CLUMP5, + THEATERF_TEMPERATE | THEATERF_SNOW, + XYP_COORD(49, 58), // Center base coordinate offset. + true, // Is it immune to normal combat damage? + false, // Is based on the water? + "TC05", + TXT_TREE, + (short const*)_List001011100110, + (short const*)_List110000011001 +); /*********************************************************************************************** @@ -503,21 +503,21 @@ TerrainTypeClass::TerrainTypeClass( COORDINATE centerbase, bool is_immune, bool is_water, - char const * ininame, + char const* ininame, int fullname, - short const * occupy, - short const * overlap) : - ObjectTypeClass(RTTI_TERRAINTYPE, - int(terrain), - true, - true, - false, - false, - true, - is_immune, - true, - fullname, - ininame), + short const* occupy, + short const* overlap) : + ObjectTypeClass(RTTI_TERRAINTYPE, + int(terrain), + true, + true, + false, + false, + true, + is_immune, + true, + fullname, + ininame), Type(terrain), CenterBase(centerbase), Theater(theater), @@ -546,7 +546,7 @@ TerrainTypeClass::TerrainTypeClass( * HISTORY: * * 07/19/1996 JLB : Created. * *=============================================================================================*/ -void * TerrainTypeClass::operator new(size_t) +void* TerrainTypeClass::operator new(size_t) { return(TerrainTypes.Alloc()); } @@ -567,9 +567,9 @@ void * TerrainTypeClass::operator new(size_t) * HISTORY: * * 07/19/1996 JLB : Created. * *=============================================================================================*/ -void TerrainTypeClass::operator delete(void * pointer) +void TerrainTypeClass::operator delete(void* pointer) { - TerrainTypes.Free((TerrainTypeClass *)pointer); + TerrainTypes.Free((TerrainTypeClass*)pointer); } @@ -595,41 +595,41 @@ void TerrainTypeClass::Init_Heap(void) ** are specified in the TerrainType enumeration. This is necessary because the heap ** allocation block index serves double duty as the type number index. */ - //new TerrainTypeClass(Tree1Class); // TERRAIN_TREE1 - //new TerrainTypeClass(Tree2Class); // TERRAIN_TREE2 - //new TerrainTypeClass(Tree3Class); // TERRAIN_TREE3 - //new TerrainTypeClass(Tree5Class); // TERRAIN_TREE5 - //new TerrainTypeClass(Tree6Class); // TERRAIN_TREE6 - //new TerrainTypeClass(Tree7Class); // TERRAIN_TREE7 - //new TerrainTypeClass(Tree8Class); // TERRAIN_TREE8 - //new TerrainTypeClass(Tree10Class); // TERRAIN_TREE10 - //new TerrainTypeClass(Tree11Class); // TERRAIN_TREE11 - //new TerrainTypeClass(Tree12Class); // TERRAIN_TREE12 - //new TerrainTypeClass(Tree13Class); // TERRAIN_TREE13 - //new TerrainTypeClass(Tree14Class); // TERRAIN_TREE14 - //new TerrainTypeClass(Tree15Class); // TERRAIN_TREE15 - //new TerrainTypeClass(Tree16Class); // TERRAIN_TREE16 - //new TerrainTypeClass(Tree17Class); // TERRAIN_TREE17 - //new TerrainTypeClass(Clump1Class); // TERRAIN_CLUMP1 - //new TerrainTypeClass(Clump2Class); // TERRAIN_CLUMP2 - //new TerrainTypeClass(Clump3Class); // TERRAIN_CLUMP3 - //new TerrainTypeClass(Clump4Class); // TERRAIN_CLUMP4 - //new TerrainTypeClass(Clump5Class); // TERRAIN_CLUMP5 + new TerrainTypeClass(Tree1Class); // TERRAIN_TREE1 + new TerrainTypeClass(Tree2Class); // TERRAIN_TREE2 + new TerrainTypeClass(Tree3Class); // TERRAIN_TREE3 + new TerrainTypeClass(Tree5Class); // TERRAIN_TREE5 + new TerrainTypeClass(Tree6Class); // TERRAIN_TREE6 + new TerrainTypeClass(Tree7Class); // TERRAIN_TREE7 + new TerrainTypeClass(Tree8Class); // TERRAIN_TREE8 + new TerrainTypeClass(Tree10Class); // TERRAIN_TREE10 + new TerrainTypeClass(Tree11Class); // TERRAIN_TREE11 + new TerrainTypeClass(Tree12Class); // TERRAIN_TREE12 + new TerrainTypeClass(Tree13Class); // TERRAIN_TREE13 + new TerrainTypeClass(Tree14Class); // TERRAIN_TREE14 + new TerrainTypeClass(Tree15Class); // TERRAIN_TREE15 + new TerrainTypeClass(Tree16Class); // TERRAIN_TREE16 + new TerrainTypeClass(Tree17Class); // TERRAIN_TREE17 + new TerrainTypeClass(Clump1Class); // TERRAIN_CLUMP1 + new TerrainTypeClass(Clump2Class); // TERRAIN_CLUMP2 + new TerrainTypeClass(Clump3Class); // TERRAIN_CLUMP3 + new TerrainTypeClass(Clump4Class); // TERRAIN_CLUMP4 + new TerrainTypeClass(Clump5Class); // TERRAIN_CLUMP5 new TerrainTypeClass(Ice01); // TERRAIN_ICE01 new TerrainTypeClass(Ice02); // TERRAIN_ICE02 new TerrainTypeClass(Ice03); // TERRAIN_ICE03 new TerrainTypeClass(Ice04); // TERRAIN_ICE04 new TerrainTypeClass(Ice05); // TERRAIN_ICE05 - //new TerrainTypeClass(Boxes01); // TERRAIN_BOXES01 - //new TerrainTypeClass(Boxes02); // TERRAIN_BOXES02 - //new TerrainTypeClass(Boxes03); // TERRAIN_BOXES03 - //new TerrainTypeClass(Boxes04); // TERRAIN_BOXES04 - //new TerrainTypeClass(Boxes05); // TERRAIN_BOXES05 - //new TerrainTypeClass(Boxes06); // TERRAIN_BOXES06 - //new TerrainTypeClass(Boxes07); // TERRAIN_BOXES07 - //new TerrainTypeClass(Boxes08); // TERRAIN_BOXES08 - //new TerrainTypeClass(Boxes09); // TERRAIN_BOXES09 - //new TerrainTypeClass(Mine); // TERRAIN_MINE + new TerrainTypeClass(Boxes01); // TERRAIN_BOXES01 + new TerrainTypeClass(Boxes02); // TERRAIN_BOXES02 + new TerrainTypeClass(Boxes03); // TERRAIN_BOXES03 + new TerrainTypeClass(Boxes04); // TERRAIN_BOXES04 + new TerrainTypeClass(Boxes05); // TERRAIN_BOXES05 + new TerrainTypeClass(Boxes06); // TERRAIN_BOXES06 + new TerrainTypeClass(Boxes07); // TERRAIN_BOXES07 + new TerrainTypeClass(Boxes08); // TERRAIN_BOXES08 + new TerrainTypeClass(Boxes09); // TERRAIN_BOXES09 + new TerrainTypeClass(Mine); // TERRAIN_MINE } @@ -670,19 +670,17 @@ void TerrainTypeClass::One_Time(void) *=============================================================================================*/ void TerrainTypeClass::Init(TheaterType theater) { - void* terrainPalette = (void*)MFCD::Retrieve(Theaters[theater].IsoPalette); - if (theater != LastTheater) { for (TerrainType index = TERRAIN_FIRST; index < TERRAIN_COUNT; index++) { - TerrainTypeClass const & terrain = As_Reference(index); - char fullname[_MAX_FNAME+_MAX_EXT]; + TerrainTypeClass const& terrain = As_Reference(index); + char fullname[_MAX_FNAME + _MAX_EXT]; /* ** Clear any existing shape pointer. All terrain is theater specific, thus if ** it isn't loaded in this routine, it shouldn't exist at all. */ - ((void const *&)terrain.ImageData) = NULL; + ((void const*&)terrain.ImageData) = NULL; if (terrain.Theater & (1 << theater)) { @@ -690,25 +688,11 @@ void TerrainTypeClass::Init(TheaterType theater) ** Load in the appropriate object shape data. */ _makepath(fullname, NULL, NULL, terrain.IniName, Theaters[theater].Suffix); - ((void const *&)terrain.ImageData) = MFCD::Retrieve(fullname); - - // Try and load HD assets first. - Image_t* hdImage = Load_StampHD(theater, fullname, terrain.ImageData); - if (hdImage) - { - Get_Stamp_Size(terrain.ImageData, hdImage->renderwidth, hdImage->renderheight); - ((void const*&)terrain.HDImageData) = hdImage; - } - else - { - char tmp[512]; - sprintf(tmp, "icon_%s", fullname); - ((void const*&)terrain.HDImageData) = Load_Stamp(fullname, terrain.ImageData, terrainPalette); - } - + ((void const*&)terrain.ImageData) = MFCD::Retrieve(fullname); + IsTheaterShape = true; //Let Build_Frame know that this is a theater specific shape - if (terrain.RadarIcon != NULL) delete[] (char *)terrain.RadarIcon; -// ((void const *&)terrain.RadarIcon) = Get_Radar_Icon(terrain.Get_Image_Data(), 0, 1, 3); + if (terrain.RadarIcon != NULL) delete[](char*)terrain.RadarIcon; + ((void const*&)terrain.RadarIcon) = Get_Radar_Icon(terrain.Get_Image_Data(), 0, 1, 3); IsTheaterShape = false; } @@ -733,7 +717,7 @@ void TerrainTypeClass::Init(TheaterType theater) * HISTORY: * * 05/16/1994 JLB : Created. * *=============================================================================================*/ -TerrainType TerrainTypeClass::From_Name(char const * name) +TerrainType TerrainTypeClass::From_Name(char const* name) { TerrainType index; @@ -769,7 +753,7 @@ TerrainType TerrainTypeClass::From_Name(char const * name) void TerrainTypeClass::Display(int x, int y, WindowNumberType window, HousesType) const { IsTheaterShape = true; - CC_Draw_Shape(Get_Image_Data(), 0, x, y, window, SHAPE_NORMAL|SHAPE_CENTER|SHAPE_WIN_REL); + CC_Draw_Shape(Get_Image_Data(), 0, x, y, window, SHAPE_NORMAL | SHAPE_CENTER | SHAPE_WIN_REL); IsTheaterShape = false; } @@ -815,7 +799,7 @@ void TerrainTypeClass::Prep_For_Add(void) * HISTORY: * * 05/28/1994 JLB : Created. * *=============================================================================================*/ -bool TerrainTypeClass::Create_And_Place(CELL cell, HousesType ) const +bool TerrainTypeClass::Create_And_Place(CELL cell, HousesType) const { if (new TerrainClass(Type, cell)) { return(true); @@ -841,7 +825,7 @@ bool TerrainTypeClass::Create_And_Place(CELL cell, HousesType ) const * HISTORY: * * 07/19/1994 JLB : Created. * *=============================================================================================*/ -ObjectClass * TerrainTypeClass::Create_One_Of(HouseClass *) const +ObjectClass* TerrainTypeClass::Create_One_Of(HouseClass*) const { return(new TerrainClass(Type, -1)); } @@ -864,7 +848,7 @@ ObjectClass * TerrainTypeClass::Create_One_Of(HouseClass *) const * HISTORY: * * 09/20/1995 JLB : Created. * *=============================================================================================*/ -short const * TerrainTypeClass::Occupy_List(bool ) const +short const* TerrainTypeClass::Occupy_List(bool) const { if (Occupy != NULL) return(Occupy); @@ -893,7 +877,7 @@ short const * TerrainTypeClass::Occupy_List(bool ) const * HISTORY: * * 09/20/1995 JLB : Created. * *=============================================================================================*/ -short const * TerrainTypeClass::Overlap_List(void) const +short const* TerrainTypeClass::Overlap_List(void) const { if (Overlap != NULL) return(Overlap); @@ -921,7 +905,7 @@ short const * TerrainTypeClass::Overlap_List(void) const * HISTORY: * * 07/19/1996 JLB : Created. * *=============================================================================================*/ -TerrainTypeClass & TerrainTypeClass::As_Reference(TerrainType type) +TerrainTypeClass& TerrainTypeClass::As_Reference(TerrainType type) { return(*TerrainTypes.Ptr(type)); } diff --git a/code/redalert/terrain.cpp b/code/redalert/terrain.cpp index 7984e8a..44ae0b4 100644 --- a/code/redalert/terrain.cpp +++ b/code/redalert/terrain.cpp @@ -491,11 +491,11 @@ void TerrainClass::AI(void) assert(IsActive); ObjectClass::AI(); -// jmarshall - add back terrain mine - //if ((*this == TERRAIN_MINE) && (Frame % (Rule.GrowthRate * TICKS_PER_MINUTE)) == 0) { - // Map[::As_Cell(As_Target())].Spread_Tiberium(true); - //} -// jmarshall end + + if ((*this == TERRAIN_MINE) && (Frame % (Rule.GrowthRate * TICKS_PER_MINUTE)) == 0) { + Map[::As_Cell(As_Target())].Spread_Tiberium(true); + } + if (StageClass::Graphic_Logic()) { Mark();