MCPcopy Create free account
hub / github.com/EasyRPG/Player / CommandManiacControlVarArray

Method CommandManiacControlVarArray

src/game_interpreter.cpp:4694–4785  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4692}
4693
4694bool Game_Interpreter::CommandManiacControlVarArray(lcf::rpg::EventCommand const& com) {
4695 if (!Player::IsPatchManiac()) {
4696 return true;
4697 }
4698
4699 int op = com.parameters[0];
4700 int mode = com.parameters[1];
4701
4702 int target_a = ValueOrVariableBitfield(mode, 0, com.parameters[2]);
4703 int length = ValueOrVariableBitfield(mode, 1, com.parameters[3]);
4704 int target_b = ValueOrVariableBitfield(mode, 2, com.parameters[4]);
4705 int last_target_a = target_a + length - 1;
4706
4707 if (target_a < 1 || length <= 0) {
4708 return true;
4709 }
4710
4711 switch (op) {
4712 case 0: {
4713 // Copy, assigns left to right, the others apply right to left
4714 int last_target_b = target_b + length - 1;
4715 Main_Data::game_variables->SetArray(target_b, last_target_b, target_a);
4716 break;
4717 }
4718 case 1:
4719 // Swap
4720 Main_Data::game_variables->SwapArray(target_a, last_target_a, target_b);
4721 break;
4722 case 2:
4723 // Sort asc
4724 Main_Data::game_variables->SortRange(target_a, last_target_a, true);
4725 break;
4726 case 3:
4727 // Sort desc
4728 Main_Data::game_variables->SortRange(target_a, last_target_a, false);
4729 break;
4730 case 4:
4731 // Shuffle
4732 Main_Data::game_variables->ShuffleRange(target_a, last_target_a);
4733 break;
4734 case 5:
4735 // Enumerate (target_b is a single value here, not an array)
4736 Main_Data::game_variables->EnumerateRange(target_a, last_target_a, target_b);
4737 break;
4738 case 6:
4739 // Add
4740 Main_Data::game_variables->AddArray(target_a, last_target_a, target_b);
4741 break;
4742 case 7:
4743 // Sub
4744 Main_Data::game_variables->SubArray(target_a, last_target_a, target_b);
4745 break;
4746 case 8:
4747 // Mul
4748 Main_Data::game_variables->MultArray(target_a, last_target_a, target_b);
4749 break;
4750 case 9:
4751 // Div

Callers

nothing calls this directly

Calls 15

SetArrayMethod · 0.80
SwapArrayMethod · 0.80
SortRangeMethod · 0.80
ShuffleRangeMethod · 0.80
EnumerateRangeMethod · 0.80
AddArrayMethod · 0.80
SubArrayMethod · 0.80
MultArrayMethod · 0.80
DivArrayMethod · 0.80
ModArrayMethod · 0.80
BitOrArrayMethod · 0.80
BitAndArrayMethod · 0.80

Tested by

no test coverage detected