#include "pch.h" #include "pinball.h" #include "winmain.h" // Todo: load translations from file std::map rc_strings { {0, "Replay Awarded"}, {1, "Ball Locked"}, {2, "Center Post\n%ld"}, {3, "Bonus Awarded\n%ld"}, {4, "Bonus Activated"}, {5, "Weapons Upgraded"}, {6, "Engine Upgraded"}, {7, "Bonus up 1 Million"}, {8, "Extra Ball Available\n%ld"}, {9, "Extra Ball"}, {10, "Reflex Shot Award\n%ld"}, {11, "Final Battle Won"}, {12, "Hyperspace Bonus\n%ld"}, {13, "Hyperspace Bonus Available"}, {14, "Jackpot Awarded\n%ld"}, {15, "Jackpot Activated"}, {16, "Multiball"}, {17, "Ramp Bonus Awarded"}, {18, "Light Added"}, {19, "Ramp Bonus On"}, {20, "Light Reset Off"}, {21, "Skill Shot\n%ld"}, {22, "Game Paused\nF3 to Resume"}, {23, "Continue Play"}, {24, "F2 Starts New Game"}, {25, "Careful..."}, {26, "Player 1"}, {27, "Player 2"}, {28, "Player 3"}, {29, "Player 4"}, {30, "Demo\nPlayer 1"}, {31, "Demo\nPlayer 2"}, {32, "Demo\nPlayer 3"}, {33, "Demo\nPlayer 4"}, {34, "Game Over"}, {35, "TILT!"}, {36, "This program requires an 80386 or later CPU."}, {37, "80386 Required"}, {38, "3D Pinball for Windows - Space Cadet"}, { 39, "One or more of the player controls is set to the same key,\nfor best performance use unique keys for each control." }, {40, "Clear High Scores?"}, {41, "Confirm"}, {42, "WAVEMIX.INF is missing - it must be in the pinball directory!"}, {43, "Warning:"}, {44, "Ship Re-Fueled"}, {45, "Gravity Well"}, {46, "Time Warp Forward"}, {47, "Time Warp Backward"}, {48, "Maelstrom!"}, {49, "Wormhole"}, {50, "Awaiting Deployment"}, {51, "Flags Upgraded"}, {52, "Bonus Hold"}, {53, "Level One Commation"}, {54, "Level Two Commation"}, {55, "Level Three Commation"}, {56, "Field Multiplier 2x"}, {57, "Field Multiplier 3x"}, {58, "Field Multiplier 5x"}, {59, "Field Multiplier 10x"}, {60, "Target Practice"}, {61, "Launch Training"}, {62, "Re-Entry Training"}, {63, "Science"}, {64, "Stray Comet"}, {65, "Black Hole"}, {66, "Space Radiation"}, {67, "Bug Hunt"}, {68, "Alien Menace"}, {69, "Rescue"}, {70, "Satellite Retrieval"}, {71, "Recon"}, {72, "Doomsday Machine"}, {73, "Cosmic Plague"}, {74, "Secret"}, {75, "Time Warp"}, {76, "Maelstrom"}, {77, "Mission Accepted\n%ld"}, {78, "Mission Completed\n%ld"}, {79, "%s Mission Selected"}, {80, "Black Hole\n%ld"}, {81, "Gravity Normalized\n%ld"}, {82, "Gravity Well\n%ld"}, {83, "Promotion to %s"}, {84, "Cadet"}, {85, "Ensign"}, {86, "Lieutenant"}, {87, "Captain"}, {88, "Lt Commander"}, {89, "Commander"}, {90, "Commodore"}, {91, "Admiral"}, {92, "Fleet Admiral"}, {93, "Wormhole Opened"}, {94, "Crash Bonus\n%ld"}, {95, "Replay Ball"}, {96, "Re-Deploy"}, {97, "Player 1 Shoot Again"}, {98, "Player 2 Shoot Again"}, {99, "Player 3 Shoot Again"}, {100, "Player 4 Shoot Again"}, { 101, "This 3D Pinball Table was created for Microsoft by Maxis.\nFor more information call (800)-336-2947\n(US and Canadian customers only).\nCopyright (c) 1995 Maxis." }, {102, "3D Pinball Table created for Microsoft by Maxis. Copyright (c) 1995 Maxis."}, {103, "About 3D Pinball"}, {104, "Hit Mission Targets To Select Mission"}, {105, "Re-Fuel Ship"}, {106, "Launch Ramp To Accept %s Mission"}, {107, "Attack Bumpers Hits\nLeft: %d"}, {108, "Target Training Passed"}, {109, "Mission Aborted"}, {110, "Launches Left: %d"}, {111, "Launch Training Passed"}, {112, "Re-Entries Left: %d"}, {113, "Re-Entry Training Passed"}, {114, "Drop Targets\nLeft: %d"}, {115, "Science Mission Completed"}, {116, "Warning -- Low Fuel"}, {117, "Fill Right Hazard Banks"}, {118, "Hyperspace Launch"}, {119, "Comet Destroyed"}, {120, "Enter Wormhole"}, {121, "Radiation Eliminated"}, {122, "Upgrade Launch Bumpers"}, {123, "Enter Black Hole"}, {124, "Black Hole Eliminated"}, {125, "Targets\nLeft: %d"}, {126, "Xenomorphs Destroyed"}, {127, "Upgrade Flags"}, {128, "Hyperspace Launch"}, {129, "Survivors Rescued"}, {130, "Aliens Repelled"}, {131, "Hit Fuel Targets"}, {132, "Remote Attack Bumper Hits\nLeft: %d"}, {133, "Satellite Repaired"}, {134, "Lane Passes\nLeft: %d"}, {135, "Shoot Ball Up Fuel Chute"}, {136, "Survey Complete"}, {137, "Out Lane Passes\nLeft: %d"}, {138, "Doomsday Machine Destroyed"}, {139, "Roll Flags: %d"}, {140, "Hit Space Warp Rollover"}, {141, "Plague Eliminated"}, {142, "Hit Yellow Wormhole"}, {143, "Hit Red Wormhole"}, {144, "Hit Green Wormhole"}, {145, "Plans Recovered"}, {146, "Rebound Hits\nLeft: %d"}, {147, "Hit Hyperspace Chute or Launch Ramp"}, {148, "Drop Target Hits\nLeft: %d"}, {149, "Spot Target Hits\nLeft: %d"}, {150, "Lanes Passes\nLeft: %d"}, {151, "Shoot Ball Up Fuel Chute"}, {152, "Hit Launch Ramp"}, {153, "Hit Flags"}, {154, "Hit Worm Hole"}, {155, "Hyperspace Chute to Maelstrom"}, {156, "pinball.mid"}, {158, "1 UseBitmapFont"}, {159, "90 Left Flipper Key"}, {160, "191 Right Flipper Key"}, {161, "32 Plunger Key"}, {162, "88 Bump Left Key"}, {163, "190 Bump Right Key"}, {164, "38 Bump Bottom Key"}, {165, "Software\\Microsoft\\Plus!\\Pinball"}, {166, "SpaceCadet"}, {167, "1c7c22a0-9576-11ce-bf80-444553540000"}, {168, "PINBALL.DAT"}, {169, "Space Cadet"}, {170, "Error:"}, {171, "Unable to find other tables."}, {172, "3D Pinball\nSpace Cadet"}, {173, "Promotion to %s"}, {174, "Demotion to %s"}, {175, "Upgrade Attack Bumpers"}, {176, "Fill Left Hazard Banks"}, {177, "HIGH SCORE"}, {178, "pinball.chm"}, {179, "Not enough memory to run 3D Pinball."}, {180, "Player 1's Score\n%ld"}, {181, "Player 2's Score\n%ld"}, {182, "Player 3's Score\n%ld"}, {183, "Player 4's Score\n%ld"}, {184, "High Score 1\n%ld"}, {185, "High Score 2\n%ld"}, {186, "High Score 3\n%ld"}, {187, "High Score 4\n%ld"}, {188, "High Score 5\n%ld"}, {189, "255 255 255 (R G B default font color)"}, {2030, "Use Maximum Resolution (640 x 480)"}, {2031, "Use Maximum Resolution (800 x 600)"}, {2032, "Use Maximum Resolution (1024 x 768)"} }; int LoadStringAlt(uint32_t uID, LPSTR lpBuffer, int cchBufferMax) { auto str = rc_strings.find(uID); if (str == rc_strings.end()) { return 0; } strncpy(lpBuffer, str->second, cchBufferMax); return 1; } int pinball::quickFlag = 0; TTextBox* pinball::InfoTextBox; TTextBox* pinball::MissTextBox; char pinball::getRcBuffer[6 * 256]; int pinball::rc_string_slot = 0; int pinball::LeftShift = -1; int pinball::RightShift = -1; std::string pinball::BasePath; char* pinball::get_rc_string(int uID, int a2) { char* result = &getRcBuffer[256 * rc_string_slot]; if (!LoadStringAlt(uID, &getRcBuffer[256 * rc_string_slot], 255)) *result = 0; if (++rc_string_slot >= 6) rc_string_slot = 0; return result; } int pinball::get_rc_int(int uID, int* dst) { char buffer[255]; int result = LoadStringAlt(uID, buffer, 255); if (!result) return result; *dst = atoi(buffer); return 1; } std::string pinball::make_path_name(const std::string& fileName) { return BasePath + fileName; }