Example #1
0
        ///<summary>
        ///Remember this
        ///</summary>
        ///<param name="mode"></param>
        ///<param name="status"></param>
        ///<param name="sourceNodeIndex"></param>
        ///<param name="destinationNodeIndex"></param>
        ///<param name="timeTaken"></param>
        ///<param name="timeExpected"></param>
        public void RecordTimeTaken(
            TravelModes mode,
            TravelStatuses status,
            int sourceNodeIndex,
            int destinationNodeIndex,
            float timeTaken,
            float timeExpected)
        {
            NavigationalMemoryKey key =
                new NavigationalMemoryKey(
                    mode,
                    sourceNodeIndex,
                    destinationNodeIndex);

            MakeNewRecordIfNotAlreadyPresent(key);
            NavigationalMemoryRecord record = MemoryMap[key];

            switch (status)
            {
                case TravelStatuses.Completed:
                    record.CompletedCount++;
                    record.RunningAverageTimeTaken +=
                        (timeTaken - record.RunningAverageTimeTaken)/
                        record.CompletedCount;
                    record.CompletedMarginRunningAverage +=
                        (timeExpected - timeTaken -
                         record.CompletedMarginRunningAverage)/
                        record.CompletedCount;
                    break;

                case TravelStatuses.Failed:
                    record.FailedCount++;
                    float estimatedRemainingTime;
                    Owner.CalculateTimeToReachNode(
                        destinationNodeIndex,
                        out estimatedRemainingTime);
                    record.FailedMarginRunningAverage +=
                        (estimatedRemainingTime -
                         record.FailedMarginRunningAverage)/
                        record.FailedCount;
                    break;
                case TravelStatuses.Abandoned:
                    Assert.Fatal(false,
                                 "NavigationalMemory,RecordTimeTaken: " +
                                 "abandoned status not implemented yet.");
                    break;
            }

            record.CompletedPerSecond = record.CompletedCount/Time.TimeNow;
            record.FailedPerSecond = record.FailedCount/Time.TimeNow;

            LogUtil.WriteLineIfLogNavigationalMemory(
                "NavigationalMemory.RecordTimeTaken:        " + record);

            DumpMemory(DumpFrequency);
        }
Example #2
0
 ///<summary>
 ///constructor
 ///</summary>
 ///<param name="mode"></param>
 ///<param name="sourceNodeIndex"></param>
 ///<param name="destinationNodeIndex"></param>
 public NavigationalMemoryKey(
     TravelModes mode,
     int sourceNodeIndex,
     int destinationNodeIndex)
 {
     _mode = mode;
     _sourceNodeIndex = sourceNodeIndex;
     _destinationNodeIndex = destinationNodeIndex;
 }
Example #3
0
        ///<summary>
        ///Sets a reference to a particular memory for ease of access (to avoid
        ///multiple lookups).
        ///</summary>
        ///<param name="mode"></param>
        ///<param name="sourceNodeIndex"></param>
        ///<param name="destinationNodeIndex"></param>
        public void MakeCurrent(
            TravelModes mode,
            int sourceNodeIndex,
            int destinationNodeIndex)
        {
            NavigationalMemoryKey key =
                new NavigationalMemoryKey(
                    mode,
                    sourceNodeIndex,
                    destinationNodeIndex);

            MakeNewRecordIfNotAlreadyPresent(key);
            Current = MemoryMap[key];
        }