Ejemplo n.º 1
0
        public AssemblyCandidate(candidate c)
        {
            activeRuleSetIndex = c.activeRuleSetIndex;
            graph = c.graph;
            foreach (var d in c.prevStates)
            {
                prevStates.Add(d);
            }
            foreach (var opt in c.recipe)
            {
                recipe.Add(opt);
            }
            foreach (var f in c.performanceParams)
            {
                performanceParams.Add(f);
            }
            foreach (var f in c.designParameters)
            {
                designParameters.Add(f);
            }
            foreach (var a in c.GenerationStatus)
            {
                GenerationStatus.Add(a);
            }

            Sequence = new AssemblySequence();
        }
Ejemplo n.º 2
0
 protected virtual void OnGenerationStatusChanged(DungeonGenerator generator, GenerationStatus status)
 {
     if (status == GenerationStatus.Complete)
     {
         FrameObjectWithCamera(generator.Root);
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 ///   Initializes a new instance of the <see cref = "candidate" /> class.
 /// </summary>
 /// <param name = "_graph">The _graph.</param>
 /// <param name = "numRuleSets">The num rule sets.</param>
 public candidate(designGraph _graph, int numRuleSets)
 {
     graph = _graph;
     for (var i = 0; i != numRuleSets; i++)
     {
         GenerationStatus.Add(GenerationStatuses.Unspecified);
     }
 }
Ejemplo n.º 4
0
 public SessionGenerationInfo(ITestProject testProject)
 {
     this.Session        = CommonConst.TestGroupSession;
     this.Status         = GenerationStatus.Idle;
     this.SequenceStatus = new SerializableMap <int, GenerationStatus>(2);
     SequenceStatus.Add(CommonConst.SetupIndex, GenerationStatus.Idle);
     SequenceStatus.Add(CommonConst.TeardownIndex, GenerationStatus.Idle);
 }
Ejemplo n.º 5
0
 private void OnGenerationStatusChanged(DungeonGenerator generator, GenerationStatus status)
 {
     if (status == GenerationStatus.Failed)
     {
         UnityUtil.Destroy(lastDungeon);
         lastDungeon = generator.Root = null;
     }
 }
Ejemplo n.º 6
0
 private ISessionGenerationInfo SetGenerationInfo(TestGenEventInfo eventInfo, GenerationStatus status)
 {
     _generationInfo.Status = status;
     foreach (int sequenceIndex in _generationInfo.SequenceStatus.Keys)
     {
         _generationInfo.SequenceStatus[sequenceIndex] = status;
     }
     return(_generationInfo);
 }
 protected virtual void OnGenerationStatusChanged(DungeonGenerator generator, GenerationStatus status)
 {
     if (status == GenerationStatus.Complete)
     {
         FrameObjectWithCamera(generator.Root);
         transform.position = new Vector3(0, 1, 7);                 // Hard-coded spawn position
         velocity           = Vector3.zero;
     }
 }
Ejemplo n.º 8
0
 public ConversionData(string @from,
                       string to,
                       bool exactly            = true,
                       GenerationStatus status = GenerationStatus.Ok)
 {
     this.Status  = status;
     this.From    = @from;
     this.To      = to;
     this.Exactly = exactly;
 }
Ejemplo n.º 9
0
 public SessionGenerationInfo(ISessionGenerationInfo generationInfo)
 {
     this.Session        = generationInfo.Session;
     this.Status         = generationInfo.Status;
     this.SequenceStatus = new SerializableMap <int, GenerationStatus>(generationInfo.SequenceStatus.Count);
     foreach (KeyValuePair <int, GenerationStatus> infoPair in generationInfo.SequenceStatus)
     {
         this.SequenceStatus.Add(infoPair.Key, infoPair.Value);
     }
 }
Ejemplo n.º 10
0
        internal void BeginTime(GenerationStatus status)
        {
            if (stopwatch.IsRunning)
            {
                EndTime();
            }

            generationStatus = status;
            stopwatch.Reset();
            stopwatch.Start();
        }
Ejemplo n.º 11
0
        private void UpdateListViewItemStatus(ListViewItem item, GenerationStatus status, Exception exception)
        {
            item.SubItems[statusColumn.Index].Text = status.ToString();

            if (status == GenerationStatus.Error)
            {
                Logger.Error(exception);
                item.SubItems[messageColumn.Index].Text = "{0} (Double click for more.)".FormatString(exception.Message);
                item.SubItems[messageColumn.Index].Tag  = exception;
            }
        }
Ejemplo n.º 12
0
 private void OnDungeonGenerationStatusChanged(DungeonGenerator generator, GenerationStatus status)
 {
     if (status == GenerationStatus.Complete)
     {
         SetDungeon(generator.CurrentDungeon);
     }
     else if (status == GenerationStatus.Failed)
     {
         ClearDungeon();
     }
 }
Ejemplo n.º 13
0
 public SessionGenerationInfo(ISequenceGroup sequenceGroup, int session)
 {
     this.Session        = session;
     this.Status         = GenerationStatus.Idle;
     this.SequenceStatus = new SerializableMap <int, GenerationStatus>(sequenceGroup.Sequences.Count + 2);
     SequenceStatus.Add(CommonConst.SetupIndex, GenerationStatus.Idle);
     SequenceStatus.Add(CommonConst.TeardownIndex, GenerationStatus.Idle);
     for (int i = 0; i < sequenceGroup.Sequences.Count; i++)
     {
         SequenceStatus.Add(i, GenerationStatus.Idle);
     }
 }
Ejemplo n.º 14
0
        public bool HandleTestGenMessage(TestGenMessage message)
        {
            GenerationStatus generationState = message.State;

            _generationInfo.Status = generationState;
            foreach (int sequenceIndex in _generationInfo.SequenceStatus.Keys)
            {
                _generationInfo.SequenceStatus[sequenceIndex] = generationState;
            }

            FlipHeatBeatIndex();
            return(true);
        }
Ejemplo n.º 15
0
        public bool HandleTestGenMessage(TestGenMessage message)
        {
            GenerationStatus generationState = message.State;

            _generationInfo.Status = generationState;
            ICollection <int> sequenceIndexes = new List <int>(_generationInfo.SequenceStatus.Keys);

            foreach (int sequenceIndex in sequenceIndexes)
            {
                _generationInfo.SequenceStatus[sequenceIndex] = generationState;
            }
            return(true);
        }
Ejemplo n.º 16
0
        private void ChangeStatus(GenerationStatus status)
        {
            var previousStatus = Status;

            Status = status;

            if (status == GenerationStatus.Failed)
            {
                Clear(true);
            }

            if (previousStatus != status && OnGenerationStatusChanged != null)
            {
                OnGenerationStatusChanged(this, status);
            }
        }
Ejemplo n.º 17
0
        private void OnGenerationStatusChanged(DungeonGenerator generator, GenerationStatus status)
        {
            if (status != GenerationStatus.Complete)
            {
                return;
            }

            infoText.Length = 0;
            infoText.AppendLine("Seed: " + generator.ChosenSeed);
            infoText.AppendLine();
            infoText.Append("## TIME TAKEN ##");
            infoText.AppendFormat("\n\tPre-Processing:\t\t{0:0.00} ms", generator.GenerationStats.PreProcessTime);
            infoText.AppendFormat("\n\tMain Path Generation:\t{0:0.00} ms", generator.GenerationStats.MainPathGenerationTime);
            infoText.AppendFormat("\n\tBranch Path Generation:\t{0:0.00} ms", generator.GenerationStats.BranchPathGenerationTime);
            infoText.AppendFormat("\n\tPost-Processing:\t\t{0:0.00} ms", generator.GenerationStats.PostProcessTime);
            infoText.Append("\n\t-------------------------------------------------------");
            infoText.AppendFormat("\n\tTotal:\t\t\t{0:0.00} ms", generator.GenerationStats.TotalTime);

            infoText.AppendLine();
            infoText.AppendLine();

            infoText.AppendLine("## ROOM COUNT ##");
            infoText.AppendFormat("\n\tMain Path: {0}", generator.GenerationStats.MainPathRoomCount);
            infoText.AppendFormat("\n\tBranch Paths: {0}", generator.GenerationStats.BranchPathRoomCount);
            infoText.Append("\n\t-------------------");
            infoText.AppendFormat("\n\tTotal: {0}", generator.GenerationStats.TotalRoomCount);

            infoText.AppendLine();
            infoText.AppendLine();

            infoText.AppendFormat("Retry Count: {0}", generator.GenerationStats.TotalRetries);

            infoText.AppendLine();
            infoText.AppendLine();

            infoText.AppendLine("Press 'F1' to toggle this information");
            infoText.AppendLine("Press 'R' to generate a new layout");

            if (GetAdditionalText != null)
            {
                GetAdditionalText(infoText);
            }
        }
Ejemplo n.º 18
0
        private void OnGenerationStatusChanged(DungeonGenerator generator, GenerationStatus status)
        {
            if (status != GenerationStatus.Complete)
            {
                return;
            }

            SceneManager.MoveGameObjectToScene(generator.CurrentDungeon.gameObject, this.gameObject.scene);

            StringBuilder stringBuilder = new StringBuilder();

            stringBuilder.AppendLine("Seed: " + generator.ChosenSeed);
            stringBuilder.AppendLine("Generation time: " + generator.GenerationStats.TotalTime + " ms");
            stringBuilder.AppendLine("Main room count: " + generator.GenerationStats.MainPathRoomCount);
            stringBuilder.AppendLine("Branch room count: " + generator.GenerationStats.BranchPathRoomCount);
            stringBuilder.AppendLine("Total room count: " + generator.GenerationStats.TotalRoomCount);
            stringBuilder.AppendLine("Retry count: " + generator.GenerationStats.TotalRetries);
            Debug.Log(stringBuilder.ToString());

            GenerateNavMesh();

            PlayerSpawner playerSpawner = GameObject.FindObjectOfType <PlayerSpawner>();

            if (playerSpawner)
            {
                playerStart = playerSpawner.transform;
                PlayerControllerTest playerControllerTest = GameObject.FindObjectOfType <PlayerControllerTest>();
                if (playerControllerTest)
                {
                    playerControllerTest.transform.SetPositionAndRotation(playerStart.position, playerStart.rotation);
                    AdjacentRoomCulling adjacentRoomCulling = playerControllerTest.head.gameObject.GetComponent <AdjacentRoomCulling>();
                    if (!adjacentRoomCulling)
                    {
                        adjacentRoomCulling = playerControllerTest.head.gameObject.AddComponent <AdjacentRoomCulling>();
                    }
                    adjacentRoomCulling.enabled = dungeonCullAdjacentRoom;
                }
            }
            else
            {
                Debug.LogError("No player spawner found for dungeon!");
            }
        }
Ejemplo n.º 19
0
        private async Task UpdateStatus(int currentPermutation, int totalPermutations)
        {
            //Random rnd = new Random();

            CurrentPermutation = currentPermutation;
            TotalPermutations  = totalPermutations;

            var status = new GenerationStatus
            {
                ApproachId         = ApproachId,
                CurrentPermutation = currentPermutation,
                TotalPermutations  = totalPermutations,
                SavedPermutations  = SavedPermutations
            };

            var result = localStorage.SetItemAsync(status.GetKey(), status);

            if (!result.IsCompletedSuccessfully)
            {
                // if for some reason the status cannot be updated, we take some action
                //currently ignore
            }

            var multiplier = 1 / PercentComplete;

            TimeSpan ts = startWatch.Elapsed;

            var finalTimeSpan = ts.Multiply(multiplier).Subtract(ts);

            TimeRemaining = $"{finalTimeSpan.Days} days {finalTimeSpan.Hours} hours {finalTimeSpan.Minutes} minutes {finalTimeSpan.Seconds} seconds";

            await InvokeAsync(StateHasChanged);

            await Task.Delay(1);

            //Console.WriteLine($"Status Updated: {currentPermutation}");

            //The callback is async, however Blazor is single threaded
            //(meaning all work is in a timeshare on a single thread)
            //So, we need to yield so that the UI can update.
        }
        private void OnGenerationStatusChanged(DungeonGenerator generator, GenerationStatus status)
        {
            if (status != GenerationStatus.Complete)
            {
                return;
            }

            analysis.IncrementSuccessCount();
            analysis.Add(generator.GenerationStats);

            remainingIterations--;

            if (remainingIterations <= 0)
            {
                generator.OnGenerationStatusChanged -= OnGenerationStatusChanged;
                CompleteAnalysis();
            }
            else
            {
                generateNextFrame = true;
            }
        }
Ejemplo n.º 21
0
 private void OnGeneratorStatusChanged(DungeonGenerator generator, GenerationStatus status)
 {
     transform.position = Vector3.zero;
 }
 protected ItemGenerationStatusEventArgs(Template template, TemplateOutputDefinitionFilenameResult result, GenerationStatus status, Exception error = null)
     : base(template, status, error)
 {
     this.Result = result;
 }
Ejemplo n.º 23
0
        public TestGenMessage(SerializationInfo info, StreamingContext context) : base(info, context)
        {
//            this.SequenecIndex = (int) info.GetValue("SequenceIndex", typeof(int));
            this.State = (GenerationStatus)info.GetValue("State", typeof(GenerationStatus));
        }
Ejemplo n.º 24
0
        public TestGenMessage(string name, int id, int sequenceIndex, GenerationStatus state) : base(name, id, MessageType.TestGen)
        {
//            this.SequenecIndex = sequenceIndex;
            this.State = state;
        }
 protected ItemGenerationStatusEventArgs(Template template, TemplateOutputDefinitionFilenameResult result, GenerationStatus status, Exception error = null)
     : base(template, status, error)
 {
     this.Result = result;
 }
 protected TemplateGenerationStatusEventArgs(Template template, GenerationStatus status, Exception error = null)
     : base(status, error)
 {
     this.Template = template;
 }
Ejemplo n.º 27
0
        private void UpdateListViewItemStatus(ListViewItem item, GenerationStatus status, Exception exception) {
            item.SubItems[statusColumn.Index].Text = status.ToString();

            if (status == GenerationStatus.Error) {
                Logger.Error(exception);
                item.SubItems[messageColumn.Index].Text = "{0} (Double click for more.)".FormatString(exception.Message);
                item.SubItems[messageColumn.Index].Tag = exception;
            }
        }
Ejemplo n.º 28
0
        protected virtual void OnDungeonGenerationStatusChanged(DungeonGenerator generator, GenerationStatus status)
        {
            // Detect any NavMeshAdapters that are attached and use them to generate a NavMesh once the dungeon is done
            if (status == GenerationStatus.Complete)
            {
                var navMeshGenerator = GetComponent <NavMeshAdapter>();

                if (navMeshGenerator != null)
                {
                    navMeshGenerator.Generate(generator.CurrentDungeon);
                }
            }
        }
 protected GenerationStatusEventArgs(GenerationStatus status, Exception error = null)
 {
     this.Status = status;
     this.Error = error;
 }
 protected TemplateGenerationStatusEventArgs(Template template, GenerationStatus status, Exception error = null)
     : base(status, error)
 {
     this.Template = template;
 }