Ejemplo n.º 1
0
        public void TimePositionsCanBeCompared()
        {
            var p1 = new TimePosition(50);
            var p2 = new TimePosition(50);
            var p3 = new TimePosition(51);
            var p4 = new TimePosition(51);
            var p5 = new TimePosition(49);

            Assert.True(p1 < p3);
            Assert.True(p1 <= p3);
            Assert.True(p1 <= p2);
            Assert.True(p3 > p2);
            Assert.True(p3 >= p4);
            Assert.True(p3 >= p1);
            Assert.True(p1.CompareTo(p3) < 0);
            Assert.True(p1.CompareTo(p2) == 0);
            Assert.True(p1.CompareTo(p5) > 0);
            Assert.True(TimePosition.StartPosition.CompareTo((TimePosition)null) < 0);

            Assert.Throws <ArgumentNullException>(() => p1 > (TimePosition)null);
            Assert.Throws <ArgumentNullException>(() => (TimePosition)null > p1);
            Assert.Throws <ArgumentNullException>(() => p2 < (TimePosition)null);
            Assert.Throws <ArgumentNullException>(() => (TimePosition)null < p1);
            Assert.Throws <ArgumentNullException>(() => p1 >= (TimePosition)null);
            Assert.Throws <ArgumentNullException>(() => (TimePosition)null >= p1);
            Assert.Throws <ArgumentNullException>(() => p2 <= (TimePosition)null);
            Assert.Throws <ArgumentNullException>(() => (TimePosition)null <= p1);
        }
Ejemplo n.º 2
0
        public void TimePositionsCanMeasureDistanceForward()
        {
            var p1 = new TimePosition(50);
            var p2 = new TimePosition(52);

            Assert.True(p1.DistanceUntil(p2) == TimeSpan.FromMilliseconds(2));
            Assert.True(p2.DistanceUntil(p1) == TimeSpan.Zero);
        }
Ejemplo n.º 3
0
        public void CanCreateTimePositions()
        {
            var p0   = new TimePosition(0);
            var pMax = new TimePosition(long.MaxValue);

            Assert.IsType <TimePosition>(p0);
            Assert.IsType <TimePosition>(pMax);
            Assert.IsType <TimePosition>(TimePosition.StartPosition);
            Assert.Equal(p0, TimePosition.StartPosition);
            Assert.Throws <ArgumentOutOfRangeException>(() => new TimePosition(-1));
        }
Ejemplo n.º 4
0
    private void DefaultMemoryConfiguration()
    {
        C_TimePositionYear   = 1;
        C_TimePositionMonth  = 1;
        C_TimePositionDay    = 1;
        C_TimePositionHour   = 1;
        C_TimePositionMinute = 1;

        C_ThoughtTime    = new TimePosition(C_TimePositionYear, C_TimePositionMonth, C_TimePositionDay, C_TimePositionHour, C_TimePositionMinute);
        C_ThoughtType    = 1;
        C_NeedTime       = new TimePosition(C_TimePositionYear, C_TimePositionMonth, C_TimePositionDay, C_TimePositionHour, C_TimePositionMinute);
        C_NeedType       = 1;
        C_MotivationTime = new TimePosition(C_TimePositionYear, C_TimePositionMonth, C_TimePositionDay, C_TimePositionHour, C_TimePositionMinute);
        C_MotivationType = 1;
        C_EventTime      = new TimePosition(C_TimePositionYear, C_TimePositionMonth, C_TimePositionDay, C_TimePositionHour, C_TimePositionMinute);
        C_EventType      = 1;

        C_Need       = new Need(C_NeedTime, C_NeedType);
        C_Motivation = new Motivation(C_MotivationTime, C_MotivationType);
        C_Thought    = new Thought(C_ThoughtTime, C_ThoughtType);
        C_Event      = new Event(C_EventTime, C_EventType);

        C_DayThoughts   = new List <Thought>();
        C_DayNeeds      = new List <Need> ();
        C_DayMotivation = new List <Motivation> ();
        C_DayEvent      = new List <Event> ();

        C_WeekThoughts   = new List <Thought>();
        C_WeekNeeds      = new List <Need> ();
        C_WeekMotivation = new List <Motivation> ();
        C_WeekEvent      = new List <Event> ();

        C_MonthThoughts   = new List <Thought>();
        C_MonthNeeds      = new List <Need> ();
        C_MonthMotivation = new List <Motivation> ();
        C_MonthEvent      = new List <Event> ();

        C_YearThoughts   = new List <Thought>();
        C_YearNeeds      = new List <Need> ();
        C_YearMotivation = new List <Motivation> ();
        C_YearEvent      = new List <Event> ();

        C_LifeThoughts   = new List <Thought>();
        C_LifeNeeds      = new List <Need> ();
        C_LifeMotivation = new List <Motivation> ();
        C_LifeEvent      = new List <Event> ();


        C_DayThoughts.Add(C_Thought);
        C_DayMotivation.Add(C_Motivation);
        C_DayNeeds.Add(C_Need);
        C_DayEvent.Add(C_Event);
    }
Ejemplo n.º 5
0
        public void TimePositionsCanAddAndSubtract()
        {
            var p1    = new TimePosition(50);
            var p2    = new TimePosition(52);
            var twoMs = TimeSpan.FromMilliseconds(2);

            Assert.True(p1 + twoMs == p2);
            var subTime = p2 - twoMs;

            Assert.True(subTime == p1);
            Assert.Throws <ArgumentNullException>(() => (TimePosition)null + twoMs);
            Assert.Throws <ArgumentNullException>(() => (TimePosition)null - twoMs);
        }
Ejemplo n.º 6
0
        public void WaitFor(TimePosition position, ManualResetEventSlim waitEvent)
        {
            var waitTime = Now().DistanceUntil(position);

            if (waitTime == TimeSpan.Zero)
            {
                return;
            }

            lock (_waiting) { _waiting.Add(waitEvent); }
            waitEvent.Wait(waitTime);
            lock (_waiting) { _waiting.Remove(waitEvent); }
        }
Ejemplo n.º 7
0
    private Vector2 DetermineCurrentPosition()
    {
        Vector2 position = this.transform.position;

        if (this.lastIndex >= this.TimePositions.Count - 1)
        {
            this.replayEnded = true;
            return(position);
        }

        var currentAge = Time.timeSinceLevelLoad - this.startTime;

        // Find the previous and next position based on current time
        for (var i = lastIndex; i < this.TimePositions.Count; i++)
        {
            if (this.TimePositions[i].Seconds < currentAge)
            {
                lastIndex = i;
                continue;
            }

            var lastTimePosition = this.TimePositions[lastIndex];
            var nextTimePosition = this.TimePositions[i];

            if (lastIndex == 0 && i == 0)
            {
                lastTimePosition = new TimePosition(this.startTime, this.transform.position);
            }

            var currentTicks = currentAge - lastTimePosition.Seconds;
            var nextTicks    = nextTimePosition.Seconds - lastTimePosition.Seconds;

            var fraction = currentTicks / nextTicks;

            var xDelta = (nextTimePosition.Position.x - lastTimePosition.Position.x) * fraction;
            var xPos   = lastTimePosition.Position.x + xDelta;

            var yDelta = (nextTimePosition.Position.y - lastTimePosition.Position.y) * fraction;
            var yPos   = lastTimePosition.Position.y + yDelta;

            position = new Vector2(xPos, yPos);

            break;
        }

        // Find the percentage between the previous and next position
        // scale the x and y values between the previous and next position as new position

        return(position);
    }
Ejemplo n.º 8
0
    private void AddTimePosition()
    {
        var timePosition = new TimePosition(Time.timeSinceLevelLoad - this.startTime, this.transform.position.AsVector2());

        var count = this.timePositionList.Count;

        if (count > 2 &&
            timePosition.Position == this.timePositionList[count - 1].Position &&
            timePosition.Position == this.timePositionList[count - 2].Position)
        {
            this.timePositionList.Remove(this.timePositionList[count - 1]);
            Debug.Log("No movement since last update, removing previous last position.");
        }

        this.timePositionList.Add(timePosition);
        Debug.Log(string.Format("Time position list contains {0} elements", this.timePositionList.Count));
    }
Ejemplo n.º 9
0
    private void DefaultSocialConditionConfiguration()
    {
        C_RelationshipRage       = 0;
        C_RelationshipLoathing   = 0;
        C_RelationshipGrief      = 0;
        C_RelationshipAmazement  = 0;
        C_RelationshipTerror     = 0;
        C_RelationshipAdmiration = 0;
        C_RelationshipEcstasy    = 0;
        C_RelationshipVigilance  = 0;
        C_GeneralFeeling         = 0;

        C_RelationshipFeeling = new InterpersonalFeeling(C_RelationshipRage, C_RelationshipLoathing, C_RelationshipGrief, C_RelationshipAmazement, C_RelationshipTerror, C_RelationshipAdmiration, C_RelationshipEcstasy, C_RelationshipVigilance, C_GeneralFeeling);

        C_TimePositionYear   = 1;
        C_TimePositionMonth  = 1;
        C_TimePositionDay    = 1;
        C_TimePositionHour   = 1;
        C_TimePositionMinute = 1;
        C_EventTime          = new TimePosition(C_TimePositionYear, C_TimePositionMonth, C_TimePositionDay, C_TimePositionHour, C_TimePositionMinute);
        C_EventType          = 1;
        C_Event = new Event(C_EventTime, C_EventType);
        C_RelationshipEventList = new List <Event> ();
        C_RelationshipEventList.Add(C_Event);
        C_RelationshipMemory = new MemoryWithThem(C_RelationshipEventList);

        C_RelationshipCharacter   = 1;
        C_RelationshipRelatedType = 1;
        C_RelationshipPersonal    = 1;
        C_Relationship            = new Relationship(C_RelationshipCharacter, C_RelationshipRelatedType, C_RelationshipPersonal, C_RelationshipFeeling, C_RelationshipMemory);
        C_RelationshipList        = new List <Relationship> ();
        C_RelationshipList.Add(C_Relationship);

        C_ReputationGroupNumber     = 1;
        C_ReputationGroupRole       = 1;
        C_ReputationGroupVisibility = 1;
        C_Reputation     = new Reputation(C_ReputationGroupNumber, C_ReputationGroupRole, C_ReputationGroupVisibility);
        C_ReputationList = new List <Reputation> ();
        C_ReputationList.Add(C_Reputation);
    }
Ejemplo n.º 10
0
        public void TimePositionsEquateByValue()
        {
            var p1 = new TimePosition(50);
            var p2 = new TimePosition(50);
            var p3 = new TimePosition(49);

            Assert.Equal(p1, p2);
            Assert.Equal(p1, (object)p2);
            Assert.True(p1 == p2);
            Assert.True(p1 != p3);
            Assert.True(p1.Equals(p2));
            Assert.True(p2.Equals(p1));
            Assert.False(p1.Equals(null));
            Assert.False(p1 == (TimePosition)null);
            Assert.False((TimePosition)null == p1);
            Assert.True((TimePosition)null == (TimePosition)null);
            Assert.False(p1 == p3);
#pragma warning disable CS1718 // Comparison made to same variable
            Assert.True(p1 == p1);
#pragma warning restore CS1718 // Comparison made to same variable
            Assert.True(p1.Equals(p1));
            Assert.True(p1.GetHashCode() == p2.GetHashCode());
        }
Ejemplo n.º 11
0
 /// <inheritdoc/>
 protected override int CompareTimePosition(TimingPoint other) => TimePosition.CompareTo(other.GetRelativeTimePosition());
Ejemplo n.º 12
0
 /// <summary>Calculates the absolute time position of this relative timing poing based on a previous <seealso cref="TimingPoint"/>.</summary>
 /// <param name="previous">The previous <seealso cref="TimingPoint"/> based on which to calculate the absolute time position.</param>
 public void CalculateAbsoluteTimePosition(TimingPoint previous)
 {
     // F**k this is so long
     AbsoluteTimePosition = previous.GetAbsoluteTimePosition() + previous.BPM.GetDurationTimeSpan(TimePosition.DistanceFrom(previous.GetRelativeTimePosition(), previous.TimeSignature), previous.TimeSignature);
 }
Ejemplo n.º 13
0
 public Need(TimePosition time, int type)
 {
     Time = time;
     Type = type;
 }
Ejemplo n.º 14
0
 public Event(TimePosition time, int type)
 {
     Time = time;
     Type = type;
 }
Ejemplo n.º 15
0
 public Thought(TimePosition time, int type)
 {
     Time = time;
     Type = type;
 }
Ejemplo n.º 16
0
 public Motivation(TimePosition time, int type)
 {
     Time = time;
     Type = type;
 }