MCPcopy Create free account
hub / github.com/OpenRCT2/OpenRCT2 / ConsoleCommandSet

Function ConsoleCommandSet

src/openrct2/interface/InteractiveConsole.cpp:766–1042  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

764}
765
766static void ConsoleCommandSet(InteractiveConsole& console, const arguments_t& argv)
767{
768 if (argv.size() > 1)
769 {
770 int32_t int_val[4];
771 bool int_valid[4];
772 double double_val[4];
773 bool double_valid[4];
774 bool invalidArgs = false;
775
776 for (uint32_t i = 0; i < std::size(int_val); i++)
777 {
778 if (i + 1 < argv.size())
779 {
780 int_val[i] = ConsoleParseInt(argv[i + 1], &int_valid[i]);
781 double_val[i] = ConsoleParseDouble(argv[i + 1], &double_valid[i]);
782 }
783 else
784 {
785 int_val[i] = 0;
786 int_valid[i] = false;
787 double_val[i] = 0;
788 double_valid[i] = false;
789 }
790 }
791
792 std::string varName = argv[0];
793
794 auto& gameState = getGameState();
795 if (varName == "money" && InvalidArguments(&invalidArgs, double_valid[0]))
796 {
797 money64 money = ToMoney64FromGBP(double_val[0]);
798 if (gameState.park.cash != money)
799 {
800 ConsoleSetVariableAction<GameActions::CheatSetAction>(console, varName, CheatType::setMoney, money);
801 }
802 else
803 {
804 console.Execute("get money");
805 }
806 }
807 else if (varName == "scenario_initial_cash" && InvalidArguments(&invalidArgs, int_valid[0]))
808 {
809 ConsoleSetVariableAction<GameActions::ScenarioSetSettingAction>(
810 console, varName, GameActions::ScenarioSetSetting::initialCash,
811 std::clamp(ToMoney64FromGBP(int_val[0]), 0.00_GBP, 1000000.00_GBP));
812 }
813 else if (varName == "current_loan" && InvalidArguments(&invalidArgs, int_valid[0]))
814 {
815 auto amount = std::clamp(
816 ToMoney64FromGBP(int_val[0]) - ToMoney64FromGBP(int_val[0] % 1000), 0.00_GBP, gameState.park.maxBankLoan);
817 ConsoleSetVariableAction<GameActions::ScenarioSetSettingAction>(
818 console, varName, GameActions::ScenarioSetSetting::initialLoan, amount);
819 }
820 else if (varName == "max_loan" && InvalidArguments(&invalidArgs, int_valid[0]))
821 {
822 auto amount = std::clamp(
823 ToMoney64FromGBP(int_val[0]) - ToMoney64FromGBP(int_val[0] % 1000), 0.00_GBP, 5000000.00_GBP);

Callers

nothing calls this directly

Calls 15

ConsoleParseIntFunction · 0.85
ConsoleParseDoubleFunction · 0.85
InvalidArgumentsFunction · 0.85
ToMoney64FromGBPFunction · 0.85
SaveFunction · 0.85
WindowGetMainFunction · 0.85
TileCoordsXYZClass · 0.85
TileElementHeightFunction · 0.85
GfxInvalidateScreenFunction · 0.85
ContextTriggerResizeFunction · 0.85
ContextUpdateCursorScaleFunction · 0.85

Tested by

no test coverage detected