Esempio n. 1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="commandString"></param>
        private void commandEntered(string commandString, out bool shouldHide)
        {
            shouldHide = true;
            if (string.IsNullOrWhiteSpace(commandString))
            {
                return;                                           // a blank textbox should close after hitting enter -- even if a command was never run.
            }
            var cheat       = new VMNetCheatCmd();
            var context     = new VMCheatContext();
            var repetitions = getRepetitions(commandString);

            switch (trimRepetitions(commandString))
            {
            //These three are special cheatcodes that don't really match the parameterized cheats e.g. moveobjects on
            case "klapaucius":
            case "rosebud":
                context.Amount        = (int)VMCheatContext.BudgetCheatPresetAmount.KLAPAUCIUS;
                context.CheatBehavior = VMCheatContext.VMCheatType.Budget;
                break;

            case "motherlode":
                context.Amount        = (int)VMCheatContext.BudgetCheatPresetAmount.MOTHERLODE;
                context.CheatBehavior = VMCheatContext.VMCheatType.Budget;
                break;

            default: context = parseCommandString(commandString); break;
            }
            cheat.Context = context;
            shouldHide    = false;
            if (cheat.Context == null)                              // the command was not recognized
            {
                FSO.HIT.HITVM.Get().PlaySoundEvent(UISounds.Error); // in TS1 this was a dialog but a sound may be less intrusive
                return;
            }
            context.Repetitions = (byte)repetitions;
            var sndEvent = UISounds.Error;

            if (context.CheatBehavior != VMCheatContext.VMCheatType.InvalidCheat)
            {
                ts1VM.SendCommand(cheat);
                switch (context.CheatBehavior) // sound feedback
                {
                case VMCheatContext.VMCheatType.Budget: sndEvent = UISounds.BuyPlace; break;

                default: sndEvent = UISounds.Click; break;
                }
                shouldHide = true;
            }
            FSO.HIT.HITVM.Get().PlaySoundEvent(sndEvent);
        }
Esempio n. 2
0
        /// <summary>
        /// Creates a VMCheatContext which includes repetitions, parameters, and CheatBehavior
        /// </summary>
        /// <param name="command"></param>
        /// <returns></returns>
        private VMCheatContext parseCommandString(string command)
        {
            if (command.Length == 0)
            {
                return(null);
            }
            var baseCmd = command;

            int NumberOfParameters = 1; // in the future if we want multiple parameters per cheat...

            string[] parameters = new string[NumberOfParameters];
            if (command.Contains(' '))
            {
                baseCmd = command.Substring(0, command.IndexOf(' '));
                string parameterString = command.Substring(command.IndexOf(' ') + 1);
                for (int i = 0; i < NumberOfParameters; i++)
                {
                    var individualParameter = parameterString;
                    if (string.IsNullOrWhiteSpace(individualParameter))
                    {
                        break;
                    }
                    if (individualParameter.Contains(' '))
                    {
                        individualParameter = individualParameter.Substring(0, individualParameter.IndexOf(' '));
                        parameters[i]       = individualParameter;
                        parameterString     = parameterString.Substring(parameterString.IndexOf(' ') + 1);
                        continue;
                    }
                    parameters[i] = individualParameter;
                    break;
                }
            }
            trimRepetitions(baseCmd);
            if (!cheatDefinitions.TryGetValue(baseCmd, out VMCheatContext.VMCheatType cheatType))
            {
                // cheat not defined in cheatDefinitions
                return(null);
            }
            VMCheatContext context = new VMCheatContext()
            {
                CheatBehavior = cheatType,
            };

            foreach (var parameter in parameters)
            {
                switch (parameter)
                {
                case "on": context.Modifier = true; break;     // set modifier true

                case "off": context.Modifier = false; break;   // set modifer false

                default:
                    if (int.TryParse(parameter, out int amount)) //check if the parameter is a number
                    {
                        context.Amount = amount;                 // if it is amount is set
                    }
                    break;
                }
            }
            return(context);
        }
Esempio n. 3
0
 public override void Deserialize(BinaryReader reader)
 {
     base.Deserialize(reader);
     Context = new VMCheatContext();
     Context.Deserialize(reader);
 }