diff --git a/REDALERT/DEBUG.CPP b/REDALERT/DEBUG.CPP
index 4d8da59..411f228 100644
--- a/REDALERT/DEBUG.CPP
+++ b/REDALERT/DEBUG.CPP
@@ -332,7 +332,7 @@ void Debug_Key(unsigned input)
}
break;
- case ((int)KN_F4 | (int)KN_CTRL_BIT):
+ case ((int)KN_F4):
Debug_Unshroud = (Debug_Unshroud == false);
Map.Flag_To_Redraw(true);
break;
@@ -363,21 +363,22 @@ void Debug_Key(unsigned input)
*=============================================================================================*/
static char const * Bench_Time(BenchType btype)
{
- static char buffer[32];
-
- int rootcount = Benches[BENCH_GAME_FRAME].Count();
- if (rootcount == 0) rootcount = 1;
- int roottime = Benches[BENCH_GAME_FRAME].Value();
- int count = Benches[btype].Count();
- int time = Benches[btype].Value();
- if (count > 0 && count * time > roottime * rootcount) time = roottime / count;
- int percent = 0;
- if (roottime != 0 && rootcount != 0) {
- percent = ((count * time) * 99) / (roottime * rootcount);
- }
- if (percent > 99) percent = 99;
- sprintf(buffer, "%-2d%% %7d", percent, time);
- return(buffer);
+ //static char buffer[32];
+ //
+ //int rootcount = Benches[BENCH_GAME_FRAME].Count();
+ //if (rootcount == 0) rootcount = 1;
+ //int roottime = Benches[BENCH_GAME_FRAME].Value();
+ //int count = Benches[btype].Count();
+ //int time = Benches[btype].Value();
+ //if (count > 0 && count * time > roottime * rootcount) time = roottime / count;
+ //int percent = 0;
+ //if (roottime != 0 && rootcount != 0) {
+ // percent = ((count * time) * 99) / (roottime * rootcount);
+ //}
+ //if (percent > 99) percent = 99;
+ //sprintf(buffer, "%-2d%% %7d", percent, time);
+ //return(buffer);
+ return "";
}
@@ -401,50 +402,50 @@ static char const * Bench_Time(BenchType btype)
*=============================================================================================*/
static void Benchmarks(MonoClass * mono)
{
- static bool _first = true;
- if (_first) {
- _first = false;
- mono->Clear();
- mono->Set_Cursor(0, 0);
- mono->Print(Text_String(TXT_DEBUG_PERFORMANCE));
- if (Benches == NULL) {
- mono->Set_Cursor(20, 15);
- mono->Printf(TXT_NO_PENTIUM);
- }
- }
-
- if (Benches != NULL) {
- mono->Set_Cursor(1, 2);mono->Printf("%s", Bench_Time(BENCH_FINDPATH));
- mono->Set_Cursor(1, 4);mono->Printf("%s", Bench_Time(BENCH_GREATEST_THREAT));
- mono->Set_Cursor(1, 6);mono->Printf("%s", Bench_Time(BENCH_AI));
- mono->Set_Cursor(1, 8);mono->Printf("%s", Bench_Time(BENCH_PCP));
- mono->Set_Cursor(1, 10);mono->Printf("%s", Bench_Time(BENCH_EVAL_OBJECT));
- mono->Set_Cursor(1, 12);mono->Printf("%s", Bench_Time(BENCH_EVAL_CELL));
- mono->Set_Cursor(1, 14);mono->Printf("%s", Bench_Time(BENCH_EVAL_WALL));
- mono->Set_Cursor(1, 16);mono->Printf("%s", Bench_Time(BENCH_MISSION));
-
- mono->Set_Cursor(14, 2);mono->Printf("%s", Bench_Time(BENCH_CELL));
- mono->Set_Cursor(14, 4);mono->Printf("%s", Bench_Time(BENCH_OBJECTS));
- mono->Set_Cursor(14, 6);mono->Printf("%s", Bench_Time(BENCH_ANIMS));
-
- mono->Set_Cursor(27, 2);mono->Printf("%s", Bench_Time(BENCH_PALETTE));
-
- mono->Set_Cursor(40, 2);mono->Printf("%s", Bench_Time(BENCH_GSCREEN_RENDER));
- mono->Set_Cursor(40, 4);mono->Printf("%s", Bench_Time(BENCH_SIDEBAR));
- mono->Set_Cursor(40, 6);mono->Printf("%s", Bench_Time(BENCH_RADAR));
- mono->Set_Cursor(40, 8);mono->Printf("%s", Bench_Time(BENCH_TACTICAL));
- mono->Set_Cursor(40, 10);mono->Printf("%s", Bench_Time(BENCH_POWER));
- mono->Set_Cursor(40, 12);mono->Printf("%s", Bench_Time(BENCH_SHROUD));
- mono->Set_Cursor(40, 14);mono->Printf("%s", Bench_Time(BENCH_TABS));
- mono->Set_Cursor(40, 16);mono->Printf("%s", Bench_Time(BENCH_BLIT_DISPLAY));
-
- mono->Set_Cursor(66, 2);mono->Printf("%7d", Benches[BENCH_RULES].Value());
- mono->Set_Cursor(66, 4);mono->Printf("%7d", Benches[BENCH_SCENARIO].Value());
-
- for (BenchType index = BENCH_FIRST; index < BENCH_COUNT; index++) {
- if (index != BENCH_RULES && index != BENCH_SCENARIO) Benches[index].Reset();
- }
- }
+ //static bool _first = true;
+ //if (_first) {
+ // _first = false;
+ // mono->Clear();
+ // mono->Set_Cursor(0, 0);
+ // mono->Print(Text_String(TXT_DEBUG_PERFORMANCE));
+ // if (Benches == NULL) {
+ // mono->Set_Cursor(20, 15);
+ // mono->Printf(TXT_NO_PENTIUM);
+ // }
+ //}
+ //
+ //if (Benches != NULL) {
+ // mono->Set_Cursor(1, 2);mono->Printf("%s", Bench_Time(BENCH_FINDPATH));
+ // mono->Set_Cursor(1, 4);mono->Printf("%s", Bench_Time(BENCH_GREATEST_THREAT));
+ // mono->Set_Cursor(1, 6);mono->Printf("%s", Bench_Time(BENCH_AI));
+ // mono->Set_Cursor(1, 8);mono->Printf("%s", Bench_Time(BENCH_PCP));
+ // mono->Set_Cursor(1, 10);mono->Printf("%s", Bench_Time(BENCH_EVAL_OBJECT));
+ // mono->Set_Cursor(1, 12);mono->Printf("%s", Bench_Time(BENCH_EVAL_CELL));
+ // mono->Set_Cursor(1, 14);mono->Printf("%s", Bench_Time(BENCH_EVAL_WALL));
+ // mono->Set_Cursor(1, 16);mono->Printf("%s", Bench_Time(BENCH_MISSION));
+ //
+ // mono->Set_Cursor(14, 2);mono->Printf("%s", Bench_Time(BENCH_CELL));
+ // mono->Set_Cursor(14, 4);mono->Printf("%s", Bench_Time(BENCH_OBJECTS));
+ // mono->Set_Cursor(14, 6);mono->Printf("%s", Bench_Time(BENCH_ANIMS));
+ //
+ // mono->Set_Cursor(27, 2);mono->Printf("%s", Bench_Time(BENCH_PALETTE));
+ //
+ // mono->Set_Cursor(40, 2);mono->Printf("%s", Bench_Time(BENCH_GSCREEN_RENDER));
+ // mono->Set_Cursor(40, 4);mono->Printf("%s", Bench_Time(BENCH_SIDEBAR));
+ // mono->Set_Cursor(40, 6);mono->Printf("%s", Bench_Time(BENCH_RADAR));
+ // mono->Set_Cursor(40, 8);mono->Printf("%s", Bench_Time(BENCH_TACTICAL));
+ // mono->Set_Cursor(40, 10);mono->Printf("%s", Bench_Time(BENCH_POWER));
+ // mono->Set_Cursor(40, 12);mono->Printf("%s", Bench_Time(BENCH_SHROUD));
+ // mono->Set_Cursor(40, 14);mono->Printf("%s", Bench_Time(BENCH_TABS));
+ // mono->Set_Cursor(40, 16);mono->Printf("%s", Bench_Time(BENCH_BLIT_DISPLAY));
+ //
+ // mono->Set_Cursor(66, 2);mono->Printf("%7d", Benches[BENCH_RULES].Value());
+ // mono->Set_Cursor(66, 4);mono->Printf("%7d", Benches[BENCH_SCENARIO].Value());
+ //
+ // for (BenchType index = BENCH_FIRST; index < BENCH_COUNT; index++) {
+ // if (index != BENCH_RULES && index != BENCH_SCENARIO) Benches[index].Reset();
+ // }
+ //}
}
diff --git a/REDALERT/DEFINES.H b/REDALERT/DEFINES.H
index c541e07..d70a67e 100644
--- a/REDALERT/DEFINES.H
+++ b/REDALERT/DEFINES.H
@@ -2812,13 +2812,13 @@ typedef enum BenchType : unsigned char {
} BenchType;
-#ifdef CHEAT_KEYS
-#define BStart(a) if (Benches != NULL) Benches[a].Begin()
-#define BEnd(a) if (Benches != NULL) Benches[a].End()
-#else
+//#ifdef CHEAT_KEYS
+//#define BStart(a) if (Benches != NULL) Benches[a].Begin()
+//#define BEnd(a) if (Benches != NULL) Benches[a].End()
+//#else
#define BStart(a)
#define BEnd(a)
-#endif
+//#endif
/**********************************************************************
diff --git a/REDALERT/DLLInterface.cpp b/REDALERT/DLLInterface.cpp
index c1d4b5e..1d71c02 100644
--- a/REDALERT/DLLInterface.cpp
+++ b/REDALERT/DLLInterface.cpp
@@ -868,12 +868,6 @@ void GlyphX_Assign_Houses(void)
srand(timeGetTime());
- /*
- ** Use pre-selected start locations as long as at least one has been defined, otherwise let the original code
- ** in SCENARIO.CPP figure it out
- */
- UseGlyphXStartLocations = false;
-
/*
** Assign random start positions if needed.
*/
@@ -886,7 +880,6 @@ void GlyphX_Assign_Houses(void)
for (j = 0; !preassigned && (j < Session.Players.Count()); j++) {
if (MPlayerStartLocations[j] == num_start_locations) {
preassigned = true;
- UseGlyphXStartLocations = true;
}
}
if (!preassigned) {
diff --git a/REDALERT/GADGET.CPP b/REDALERT/GADGET.CPP
index 1a449f2..019e1fa 100644
--- a/REDALERT/GADGET.CPP
+++ b/REDALERT/GADGET.CPP
@@ -497,32 +497,32 @@ KeyNumType GadgetClass::Input(void)
#ifdef WIN32
#ifdef CHEAT_KEYS
- if (key == KN_K && !Debug_Map && (Debug_Flag || Debug_Playtest)) {
- /*
- ** time to create a screen shot using the PCX code (if it works)
- */
- if (!Debug_MotionCapture) {
- GraphicBufferClass temp_page( SeenBuff.Get_Width(),
- SeenBuff.Get_Height(),
- NULL,
- SeenBuff.Get_Width() * SeenBuff.Get_Height());
- CDFileClass file;
- char filename[30];
-
-// Hide_Mouse();
- SeenBuff.Blit(temp_page);
-// Show_Mouse();
- for (int lp = 0; lp < 99; lp ++) {
- sprintf(filename, "scrsht%02d.pcx", lp);
- file.Set_Name(filename);
- if (!file.Is_Available()) break;
- }
-
- file.Cache(200000);
- Write_PCX_File(file, temp_page, & GamePalette);
- Sound_Effect(VOC_BEEP);
- }
- }
+ //if (key == KN_K && !Debug_Map && (Debug_Flag || Debug_Playtest)) {
+ // /*
+ // ** time to create a screen shot using the PCX code (if it works)
+ // */
+ // if (!Debug_MotionCapture) {
+ // GraphicBufferClass temp_page( SeenBuff.Get_Width(),
+ // SeenBuff.Get_Height(),
+ // NULL,
+ // SeenBuff.Get_Width() * SeenBuff.Get_Height());
+ // CDFileClass file;
+ // char filename[30];
+ //
+// // Hide_Mouse();
+ // SeenBuff.Blit(temp_page);
+// // Show_Mouse();
+ // for (int lp = 0; lp < 99; lp ++) {
+ // sprintf(filename, "scrsht%02d.pcx", lp);
+ // file.Set_Name(filename);
+ // if (!file.Is_Available()) break;
+ // }
+ //
+ // file.Cache(200000);
+ // Write_PCX_File(file, temp_page, & GamePalette);
+ // Sound_Effect(VOC_BEEP);
+ // }
+ //}
#endif
#endif
diff --git a/REDALERT/HOUSE.CPP b/REDALERT/HOUSE.CPP
index a228ab6..5bbce62 100644
--- a/REDALERT/HOUSE.CPP
+++ b/REDALERT/HOUSE.CPP
@@ -227,10 +227,12 @@ fixed HouseClass::Tiberium_Fraction(void) const
* 01/23/1995 JLB : Created. *
*=============================================================================================*/
HouseClass * HouseClass::As_Pointer(HousesType house)
-{
+{
if (house != HOUSE_NONE) {
for (int index = 0; index < Houses.Count(); index++) {
- if (Houses.Ptr(index)->Class->House == house) {
+ HouseClass* houseClass = Houses.Ptr(index);
+ HouseTypeClass* houseTypeClass = houseClass->Class;
+ if (houseTypeClass->House == house) {
return(Houses.Ptr(index));
}
}
diff --git a/REDALERT/INIT.CPP b/REDALERT/INIT.CPP
index 4a11d4e..e1980bf 100644
--- a/REDALERT/INIT.CPP
+++ b/REDALERT/INIT.CPP
@@ -199,9 +199,9 @@ bool Init_Game(int , char * [])
** compile flags indicate.
*/
#ifdef CHEAT_KEYS
- if (Processor() >= 2) {
- Benches = new Benchmark [BENCH_COUNT];
- }
+ //if (Processor() >= 2) {
+ // Benches = new Benchmark [BENCH_COUNT];
+ //}
#endif
/*
diff --git a/REDALERT/KEY.H b/REDALERT/KEY.H
index 013461e..16ee9d4 100644
--- a/REDALERT/KEY.H
+++ b/REDALERT/KEY.H
@@ -52,6 +52,7 @@ typedef int bool;
#endif
#endif
+#pragma warning(disable : 4005)
typedef enum {
WWKEY_SHIFT_BIT = 0x100,
@@ -579,8 +580,8 @@ typedef enum KeyNumType {
KN_F11 = VK_F11,
KN_F12 = VK_F12,
KN_F2 = 59,
- KN_F3 = VK_F3,
- KN_F4 = VK_F4,
+ KN_F3 = 60,
+ KN_F4 = 61,
KN_F5 = VK_F5,
KN_F6 = VK_F6,
KN_F7 = VK_F7,
diff --git a/REDALERT/RedAlert.vcxproj b/REDALERT/RedAlert.vcxproj
index 30cac57..5bf13cc 100644
--- a/REDALERT/RedAlert.vcxproj
+++ b/REDALERT/RedAlert.vcxproj
@@ -95,7 +95,7 @@
../external/dxsdk/Include;../external/ffmpeg-win32/include;../external/sdl2/include;./win32lib;../external/openal/include
true
false
- SCENARIO_EDITOR;WINDOWS_IGNORE_PACKING_MISMATCH;TRUE_FALSE_DEFINED;ENGLISH;WIN32;NDEBUG;_WINDOWS;_USRDLL;REDALERT_EXPORTS;%(PreprocessorDefinitions)
+ CHEAT_KEYS;SCENARIO_EDITOR;WINDOWS_IGNORE_PACKING_MISMATCH;TRUE_FALSE_DEFINED;ENGLISH;WIN32;NDEBUG;_WINDOWS;_USRDLL;REDALERT_EXPORTS;%(PreprocessorDefinitions)
1Byte
false
MultiThreaded
@@ -125,7 +125,7 @@
false
true
ProgramDatabase
- SCENARIO_EDITOR;WINDOWS_IGNORE_PACKING_MISMATCH;TRUE_FALSE_DEFINED;ENGLISH;WIN32;_DEBUG;_WINDOWS;_USRDLL;REDALERT_EXPORTS;%(PreprocessorDefinitions)
+ CHEAT_KEYS;SCENARIO_EDITOR;WINDOWS_IGNORE_PACKING_MISMATCH;TRUE_FALSE_DEFINED;ENGLISH;WIN32;_DEBUG;_WINDOWS;_USRDLL;REDALERT_EXPORTS;%(PreprocessorDefinitions)
false
MultiThreadedDebug
1Byte
diff --git a/REDALERT/SCENARIO.CPP b/REDALERT/SCENARIO.CPP
index 62018ab..3dd3274 100644
--- a/REDALERT/SCENARIO.CPP
+++ b/REDALERT/SCENARIO.CPP
@@ -71,7 +71,6 @@ extern int PreserveVQAScreen;
void Display_Briefing_Text_GlyphX();
extern void GlyphX_Assign_Houses(void); //ST - 8/8/2019 12:35PM
-extern bool UseGlyphXStartLocations; //ST - 3/31/2020 9:54AM
//#include "WolDebug.h"
@@ -2888,7 +2887,6 @@ static void Remove_AI_Players(void)
HousesType house;
HouseClass * housep;
-#if (0)
for (i = 0; i < MAX_PLAYERS; i++) {
house = (HousesType)(i + (int)HOUSE_MULTI1);
housep = HouseClass::As_Pointer (house);
@@ -2899,21 +2897,6 @@ static void Remove_AI_Players(void)
}
}
}
-#else
- /*
- ** AI players are set up like human players now. ST - 8/13/2019 1:32PM
- */
- for (i = 0; i < MAX_PLAYERS; i++) {
- if (i >= Session.Players.Count()) {
- house = (HousesType)(i + (int)HOUSE_MULTI1);
- housep = HouseClass::As_Pointer (house);
- if (housep->IsHuman == false) {
- housep->Clobber_All();
- }
- }
- }
-
-#endif
}
@@ -3092,17 +3075,11 @@ static void Create_Units(bool official)
** if there are 4 or fewer players. Unofficial maps will pick from all the
** available waypoints.
*/
-#ifndef USE_GLYPHX_START_LOCATIONS
int look_for = max(4, Session.Players.Count()+Session.Options.AIPlayers);
if (!official) {
look_for = 8;
}
-#else
- /*
- ** We allow the users to choose from all available start positions, even on official maps. ST - 1/15/2020 9:19AM
- */
- int look_for = Session.Players.Count();
-#endif
+
for (int waycount = 0; waycount < 26; waycount++) {
// for (int waycount = 0; waycount < max(4, Session.Players.Count()+Session.Options.AIPlayers); waycount++) {
@@ -3156,71 +3133,61 @@ static void Create_Units(bool official)
** one of the valid locations at random. The other houses pick the furthest
** wapoint from the existing houses.
*/
- if (!UseGlyphXStartLocations) {
-
- if (numtaken == 0) {
- int pick = Random_Pick(0, num_waypts-1);
- centroid = waypts[pick];
- taken[pick] = true;
- numtaken++;
- } else {
+ if (numtaken == 0) {
+ int pick = Random_Pick(0, num_waypts - 1);
+ centroid = waypts[pick];
+ taken[pick] = true;
+ numtaken++;
+ }
+ else {
+
+ /*
+ ** Set all waypoints to have a score of zero in preparation for giving
+ ** a distance score to all waypoints.
+ */
+ int score[26];
+ memset(score, '\0', sizeof(score));
+
+ /*
+ ** Scan through all waypoints and give a score as a value of the sum
+ ** of the distances from this waypoint to all taken waypoints.
+ */
+ for (int index = 0; index < num_waypts; index++) {
/*
- ** Set all waypoints to have a score of zero in preparation for giving
- ** a distance score to all waypoints.
+ ** If this waypoint has not already been taken, then accumulate the
+ ** sum of the distance between this waypoint and all other taken
+ ** waypoints.
*/
- int score[26];
- memset(score, '\0', sizeof(score));
+ if (!taken[index]) {
+ for (int trypoint = 0; trypoint < num_waypts; trypoint++) {
- /*
- ** Scan through all waypoints and give a score as a value of the sum
- ** of the distances from this waypoint to all taken waypoints.
- */
- for (int index = 0; index < num_waypts; index++) {
-
- /*
- ** If this waypoint has not already been taken, then accumulate the
- ** sum of the distance between this waypoint and all other taken
- ** waypoints.
- */
- if (!taken[index]) {
- for (int trypoint = 0; trypoint < num_waypts; trypoint++) {
-
- if (taken[trypoint]) {
- score[index] += Distance(Cell_Coord(waypts[index]), Cell_Coord(waypts[trypoint]));
- }
+ if (taken[trypoint]) {
+ score[index] += Distance(Cell_Coord(waypts[index]), Cell_Coord(waypts[trypoint]));
}
}
}
-
- /*
- ** Now find the waypoint with the largest score. This waypoint is the one
- ** that is furthest from all other taken waypoints.
- */
- int best = 0;
- int bestvalue = 0;
- for (int searchindex = 0; searchindex < num_waypts; searchindex++) {
- if (score[searchindex] > bestvalue || bestvalue == 0) {
- bestvalue = score[searchindex];
- best = searchindex;
- }
- }
-
- /*
- ** Assign this best position to the house.
- */
- centroid = waypts[best];
- taken[best] = true;
- numtaken++;
}
- } else {
-
+
/*
- ** New code that respects the start locations passed in from GlyphX.
- **
- ** ST - 1/8/2020 3:39PM
+ ** Now find the waypoint with the largest score. This waypoint is the one
+ ** that is furthest from all other taken waypoints.
*/
- centroid = waypts[hptr->StartLocationOverride];
+ int best = 0;
+ int bestvalue = 0;
+ for (int searchindex = 0; searchindex < num_waypts; searchindex++) {
+ if (score[searchindex] > bestvalue || bestvalue == 0) {
+ bestvalue = score[searchindex];
+ best = searchindex;
+ }
+ }
+
+ /*
+ ** Assign this best position to the house.
+ */
+ centroid = waypts[best];
+ taken[best] = true;
+ numtaken++;
}
/*