Пример #1
0
 // Use this for initialization
 void Start()
 {
     app      = AppManager.appManager;
     gManager = GameManager.gManager;
     if (!app.gameToLaunch.isTutorial)
     {
         this.enabled = false;
     }
     else
     {
         currentInfoIndex         = 0;
         textInfo                 = infoUI.transform.Find("Text").GetComponent <Text>();
         tutorialInstructionsData = app.GetComponent <LanguageManager>().tutorialsTexts.GetField(app.gameToLaunch.tutorialName).GetField("ContextualInfo").GetField(app.gameLanguage.ToString());
         nbInfos = tutorialInstructionsData.Count;
         if (nbInfos > 0)
         {
             textInfo.text = tutorialInstructionsData[currentInfoIndex].str;
         }
         else
         {
             this.enabled = false;
         }
         checkForkNextStep = tuto01checks;
         doNextStep        = tuto01actions;
     }
 }
Пример #2
0
        private void runRunTo()
        {
            if (m_Cart == null)
            {
                return;
            }

            while (m_Clocks < freqOverSixty)
            {
                if (m_PC != m_BreakAddress)
                {
                    execute = new ExecuteStep(runStopped);
                }
                step();
            }
            if (m_Clocks >= freqOverSixty)
            {
                m_Clocks -= freqOverSixty;
            }
        }
Пример #3
0
 public void runTo(ushort address)
 {
     m_BreakAddress = address;
     execute        = new ExecuteStep(runRunTo);
 }
Пример #4
0
 public void run()
 {
     execute = new ExecuteStep(runFrame);
 }
Пример #5
0
 public void stop()
 {
     execute = new ExecuteStep(runStopped);
 }
Пример #6
0
        private async Task <StepResult> DoExecuteAsync(ExecuteStep step)
        {
            var command = new Execute
            {
                Executable           = step.Executable,
                Arguments            = step.Arguments,
                WorkingDirectory     = step.WorkingDirectory,
                RunAsAdministrator   = step.RunAsAdmin,
                WaitForCompletion    = step.WaitForCompletion,
                ExecutionTimeoutSecs = step.TimeoutSecs
            };
            IResponse response;

            if (step.Environment == StepEnvironment.Local)
            {
                response = await new ObservableProcess(command).StartAndObserveAsync(tree =>
                                                                                     step.ConfirmTerminationOnTimeout ? _controller.ShouldTerminateProcessOnTimeoutAsync(tree) : Task.FromResult(true), _controller.CancellationToken);
            }
            else
            {
                response = await _channel.SendWithReplyAsync <IResponse>(command, _controller.CancellationToken);

                if (response is ExecutionTimedOutResponse timeoutResponse)
                {
                    var shouldTerminate = !step.ConfirmTerminationOnTimeout || await _controller.ShouldTerminateProcessOnTimeoutAsync(timeoutResponse.ProcessTree);

                    response = await _channel.SendWithReplyAsync <IResponse>(
                        new ExecutionTimedOutActionCommand { TerminateProcesses = shouldTerminate }, _controller.CancellationToken);
                }
            }

            var machine = step.Environment == StepEnvironment.Local ? "local" : "remote";

            if (response is ExecutionTerminatedResponse terminatedResponse)
            {
                var log = new StringBuilder("The following processes were terminated:\r\n");
                ProcessUtils.PrintProcessTree(log, terminatedResponse.TerminatedProcessTree);

                return(new StepResult(false, $"Execution timeout is exceeded. {step.Executable} process on the {machine} machine is terminated.", log.ToString()));
            }
            else
            {
                var result = (ExecutionCompleted)response;
                if (result.Status == ExecutionStatus.Completed)
                {
                    var log    = new StringBuilder();
                    var stdout = result.Stdout.TrimEnd('\r', '\n');
                    var stderr = result.Stderr.TrimEnd('\r', '\n');
                    if (stdout.Length == 0 && stderr.Length == 0)
                    {
                        log.AppendFormat("No stdout/stderr captured (exit code {0})\r\n", result.ExitCode);
                    }
                    if (stdout.Length != 0)
                    {
                        log.AppendFormat("Captured stdout (exit code {0}):\r\n{1}\r\n", result.ExitCode, stdout);
                    }
                    if (stderr.Length != 0)
                    {
                        log.AppendFormat("Captured stderr (exit code {0}):\r\n{1}\r\n", result.ExitCode, stderr);
                    }

                    if (result.ExitCode == 0)
                    {
                        return(new StepResult(true, "", log.ToString(), errorListOutput: new string[] { stdout, stderr }));
                    }
                    else
                    {
                        return(new StepResult(false, $"{step.Executable} process exited with a non-zero code ({result.ExitCode}). Check your application or debug script output in Output -> RAD Debug.", log.ToString(), errorListOutput: new string[] { stdout, stderr }));
                    }
                }
                else
                {
                    // result.Stderr contains the error reason
                    return(new StepResult(false, $"{step.Executable} process could not be started on the {machine} machine. {result.Stderr}", result.Stderr + "\r\n"));
                }
            }
        }
Пример #7
0
    public bool EndOfFrame()
    {
        nowStep = ExecuteStep.EndOfFrame;

        return(MoveNext());
    }
Пример #8
0
    public bool FixedUpdate()
    {
        nowStep = ExecuteStep.FixedUpdate;

        return(MoveNext());
    }
Пример #9
0
    public bool Update()
    {
        nowStep = ExecuteStep.Update;

        return MoveNext();
    }
Пример #10
0
    public bool EndOfFrame()
    {
        nowStep = ExecuteStep.EndOfFrame;

        return MoveNext();
    }
Пример #11
0
        static void Main()
        {
            Random random   = new Random();
            bool   endSteps = false;

            Step[] stepOrder = new Step[]
            {
                Step.NPCorMonster,
                Step.Level,
                Step.Traits,
                Step.Size,
                Step.Hit_Points,
                Step.Resistances_Weaknesses,
                Step.Skills,
                Step.Armor_Class,
                Step.Strike_Attack_Bonus,
                Step.Strike_Damage,
                Step.Ability_Scores,
                Step.Perception,
                Step.Saves,
                Step.Spells,
                Step.Spell_DC_And_Attack_Bonus,
                Step.Area_Damage,
                Step.Gear,
                Step.End,
                Step.SaveToFile
            };

            int partyLevel = Program.GetMinMaxInt("Please enter the party's current level: ", MinMax.hasBoth, 1, 20);

            for (int step = 0; endSteps == false; step++)
            {
                if (step >= 0 && step < stepOrder.Length)
                {
                    Console.WriteLine("Step: " + stepOrder[step]);
                }

                if (step > 0)
                {
                    step = ContinueOrBack(stepOrder, step);
                }

                if (_creatureSaves.ContainsKey(stepOrder[step]))
                {
                    _creatureSaves.Remove(stepOrder[step]);
                }
                _creatureSaves.Add(stepOrder[step], CopyCreature(_creature));

                switch (stepOrder[step])
                {
                case Step.NPCorMonster:
                {
                    Console.WriteLine("Enter NPC or Monster to select a creature type, or press Enter to randomly select");
                    string userInput = GetValidString("NPC", "Monster", "");
                    switch (userInput.ToUpper())
                    {
                    case "NPC":
                        _creature.Type = CreatureType.NPC;
                        break;

                    case "Monster":
                        _creature.Type = CreatureType.Monster;
                        break;

                    case "":
                        _creature.Type = CreatureType.Any;
                        break;
                    }
                    break;
                }

                case Step.Level:
                {
                    ExecuteStep.LevelStep(random, _creature, partyLevel);
                    break;
                }

                case Step.Traits:
                {
                    string userInput = "";
                    do
                    {
                        ExecuteStep.TraitsStep(_creature, random);
                        Console.WriteLine("Press enter to continue or ADD to add another trait");
                        userInput = GetValidString("", "ADD");
                    } while (userInput.ToUpper() == "ADD");
                    break;
                }

                case Step.Size:
                {
                    ExecuteStep.SizeStep(_creature, random);
                    break;
                }

                case Step.Hit_Points:
                {
                    ExecuteStep.HitPointStep(_creature, random);
                    break;
                }

                case Step.Resistances_Weaknesses:
                {
                    Console.WriteLine("Press Enter to continue or NO to skip this step");
                    string userInput = GetValidString("", "NO");
                    if (userInput.ToUpper() != "NO")
                    {
                        ExecuteStep.ResistanceWeaknessStep(_creature, random);
                    }
                    break;
                }

                case Step.Skills:
                {
                    do
                    {
                        List <Degree> savedDegrees = CopyDegreeList(_creature.DegreeList);
                        ExecuteStep.SkillStep(_creature, random);
                        Console.WriteLine("Press ENTER to continue or BACK to erase previous skill");
                        string userInput = GetValidString("", "BACK");
                        if (userInput.ToUpper() == "BACK")
                        {
                            int latestSkillIndex = _creature.SkillPool.SelectedSkills.Count() - 1;
                            _creature.SkillPool.PossibleSkills.Add(_creature.SkillPool.SelectedSkills[latestSkillIndex].skillName);
                            _creature.SkillPool.PossibleSkills.Sort();
                            _creature.SkillPool.SelectedSkills.RemoveAt(latestSkillIndex);
                            _creature.DegreeList = CopyDegreeList(savedDegrees);
                        }
                    } while (_creature.SkillPool.SelectedSkills.Count < 6);
                    break;
                }

                case Step.Armor_Class:
                {
                    ExecuteStep.ArmorClassStep(_creature, random);
                    break;
                }

                case Step.Strike_Attack_Bonus:
                {
                    ExecuteStep.StrikeAttackStep(_creature, random);
                    break;
                }

                case Step.Strike_Damage:
                {
                    ExecuteStep.StrikeDamageStep(_creature, random);
                    break;
                }

                case Step.Ability_Scores:
                {
                    AbilityScoreEnum[] abilities = new AbilityScoreEnum[] { AbilityScoreEnum.Strength, AbilityScoreEnum.Dexterity, AbilityScoreEnum.Intelligence, AbilityScoreEnum.Wisdom, AbilityScoreEnum.Charisma };
                    foreach (AbilityScoreEnum ability in abilities)
                    {
                        string userInput = "";
                        do
                        {
                            List <Degree> saveDegrees = CopyDegreeList(_creature.DegreeList);
                            ExecuteStep.AbilityScoreStep(_creature, random, ability);
                            Console.WriteLine("Press ENTER to continue or BACK to redo the {0} score", ability);
                            userInput = GetValidString("", "BACK");
                            if (userInput.ToUpper() == "BACK")
                            {
                                _creature.DegreeList = CopyDegreeList(saveDegrees);
                            }
                        } while (userInput.ToUpper() == "BACK");
                    }
                    break;
                }

                case Step.Perception:
                {
                    ExecuteStep.PerceptionStep(_creature, random);
                    break;
                }

                case Step.Saves:
                {
                    SaveName[] saves = new SaveName[] { SaveName.Fortitude, SaveName.Reflex, SaveName.Will };
                    foreach (SaveName save in saves)
                    {
                        ExecuteStep.SavesStep(_creature, random, save);
                    }
                    break;
                }

                case Step.Spells:
                {
                    string[] spellTypes = new string[] { "Arcane", "Occult", "Primal", "Divine", "Focus", "NONE" };
                    Console.WriteLine("Press Enter to randomly select this creature's magic type or one of the following types:");
                    foreach (string type in spellTypes)
                    {
                        Console.WriteLine(type);
                    }
                    string[] validInputs = new string[spellTypes.Length + 1];
                    for (int i = 0; i < validInputs.Length; i++)
                    {
                        if (i == 0)

                        {
                            validInputs[i] = "";
                        }
                        else
                        {
                            validInputs[i] = spellTypes[i - 1];
                        }
                    }
                    string typeInput = GetValidString(validInputs);
                    if (typeInput == "")
                    {
                        if (random.Next(2) == 1)
                        {
                            typeInput = spellTypes[random.Next(spellTypes.Length)];
                        }
                        else
                        {
                            _creature.HasSpells = false;
                        }
                    }
                    if (typeInput.ToUpper() == "NONE")
                    {
                        _creature.HasSpells = false;
                    }
                    if (_creature.HasSpells)
                    {
                        ExecuteStep.SpellsStep(_creature, random, CapitalizeString(typeInput));
                    }
                    break;
                }

                case Step.Spell_DC_And_Attack_Bonus:
                {
                    if (!_creature.Spells.Any())
                    {
                        Console.WriteLine("No spells detected. Skipping step");
                    }
                    else
                    {
                        ExecuteStep.SpellStatsStep(_creature, random);
                    }
                    break;
                }

                case Step.Area_Damage:
                {
                    ExecuteStep.AreaDamageStep(_creature);
                    break;
                }

                case Step.Gear:
                {
                    Console.WriteLine("Press Enter to randomly determine if creature has gear or Y\\N:");
                    string userInput = GetValidString("", "Y", "N");
                    if (userInput == "" && random.Next(2) == 1)
                    {
                        userInput = "Y";
                    }
                    if (userInput.ToUpper() == "Y")
                    {
                        ExecuteStep.GearStep(_creature, random);
                    }
                    break;
                }

                case Step.End:
                {
                    ExecuteStep.EndStep(_creature);
                    break;
                }

                case Step.SaveToFile:
                {
                    Console.WriteLine("Would you like to save this creature? Y/N");
                    string saveOrNot = GetValidString("Y", "N");
                    if (saveOrNot.ToUpper() == "Y")
                    {
                        ExecuteStep.SaveToFileStep(_creature);
                    }
                    endSteps = true;
                    break;
                }

                default:
                {
                    Console.WriteLine("Step incomplete");
                    //endSteps = true;
                    break;
                }
                }
            }
        }