示例#1
0
            public static bool ChangeBeginTime(this STimeBoost Boost_, TimePoint Now_, double Speed_, ref TimePoint BeginTime_)
            {
                if (Boost_.IsInBoost(Now_))
                {
                    return(false);
                }

                if (BeginTime_ <= Boost_.EndTime)
                {
                    BeginTime_ = Now_ - (Boost_.EndTime - BeginTime_) - GetRealDuration(Now_ - Boost_.EndTime, Speed_);
                }
                else
                {
                    BeginTime_ = Now_ - GetRealDuration(Now_ - BeginTime_, Speed_);
                }

                return(true);
            }
示例#2
0
            public static TimeSpan GetBoostedDuration(this STimeBoost Boost_, TimePoint BeginTime_, TimePoint EndTime_)
            {
                if (EndTime_ <= BeginTime_)
                {
                    return(TimeSpan.Zero);
                }

                if (Boost_.EndTime < BeginTime_)
                {
                    return(EndTime_ - BeginTime_);
                }
                else
                {
                    if (Boost_.EndTime < EndTime_)
                    {
                        return(TimeSpan.FromTicks((Int64)((Boost_.EndTime - BeginTime_).Ticks * Boost_.Speed) + (EndTime_ - Boost_.EndTime).Ticks));
                    }
                    else
                    {
                        return(TimeSpan.FromTicks((Int64)((EndTime_ - BeginTime_).Ticks * Boost_.Speed)));
                    }
                }
            }
示例#3
0
            public static TimePoint GetBoostedEndTime(this STimeBoost Boost_, TimePoint BeginTime_, TimeSpan BoostedDuration_)
            {
                if (BoostedDuration_.Ticks <= 0)
                {
                    return(BeginTime_);
                }

                if (Boost_.EndTime < BeginTime_)
                {
                    return(BeginTime_ + BoostedDuration_);
                }
                else
                {
                    var BoostDuration = TimeSpan.FromTicks((Int64)((Boost_.EndTime - BeginTime_).Ticks * Boost_.Speed));
                    if (BoostedDuration_ <= BoostDuration)
                    {
                        return(BeginTime_ + TimeSpan.FromTicks((Int64)(BoostedDuration_.Ticks / Boost_.Speed)));
                    }
                    else
                    {
                        return(Boost_.EndTime + (BoostedDuration_ - BoostDuration));
                    }
                }
            }
示例#4
0
 public void Set(STimeBoost Obj_)
 {
     EndTime = Obj_.EndTime;
     Speed   = Obj_.Speed;
 }
示例#5
0
 public STimeBoost(STimeBoost Obj_)
 {
     EndTime = Obj_.EndTime;
     Speed   = Obj_.Speed;
 }
示例#6
0
 public static string ToString(STimeBoost Boost_)
 {
     return(" EndTime:" + Boost_.EndTime.ToString() + " Speed:" + Boost_.Speed);
 }
示例#7
0
 public static bool IsInBoost(this STimeBoost Boost_, TimePoint Now_)
 {
     return(Now_ < Boost_.EndTime);
 }
示例#8
0
 public static TimeSpan GetBoostedDuration(this STimeBoost Boost_, TimePoint Now_)
 {
     return(TimeSpan.FromTicks((Int64)((Boost_.EndTime - Now_).Ticks * Boost_.Speed)));
 }
示例#9
0
        static void Main(String[] args)
        {
#if false
            CControlFixed ControlFixed = new CControlFixed(new SPoint(0.0, 0.0), 10.0, 12.0);
            var           Vector       = ControlFixed.Down(new SPoint());
            if (Vector == null)
            {
                Console.WriteLine("Null");
            }
            else
            {
                Console.WriteLine(Vector.X + " " + Vector.Y);
            }

            Vector = ControlFixed.Move(new SPoint(10.0, 0.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);

            Vector = ControlFixed.Move(new SPoint(10.0, 10.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);

            Console.WriteLine("-----------------------------------");

            CControlImmovable ControlImmovable = new CControlImmovable(3.0);
            ControlImmovable.Down(new SPoint(7.0, 0.0));

            Vector = ControlImmovable.Move(new SPoint(10.0, 0.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);

            Vector = ControlImmovable.Move(new SPoint(10.0, 1.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);
            Vector = ControlImmovable.Move(new SPoint(10.0, 2.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);
            Vector = ControlImmovable.Move(new SPoint(10.0, 3.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);
            Vector = ControlImmovable.Move(new SPoint(10.0, 4.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);
            Vector = ControlImmovable.Move(new SPoint(10.0, 5.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);
            Vector = ControlImmovable.Move(new SPoint(10.0, 6.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);
            Vector = ControlImmovable.Move(new SPoint(10.0, 7.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);
            Vector = ControlImmovable.Move(new SPoint(10.0, 8.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);
            Vector = ControlImmovable.Move(new SPoint(10.0, 9.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);
            Vector = ControlImmovable.Move(new SPoint(10.0, 10.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);

            for (double d = 10.0; d < 100.0; d += 1.0)
            {
                Vector = ControlImmovable.Move(new SPoint(10.0, d));
                Console.WriteLine(Vector.X + " " + Vector.Y);
            }



            Console.WriteLine("-----------------------------------");

            CControlMovable ControlMovable = new CControlMovable(3.0);
            ControlMovable.Down(new SPoint());

            Vector = ControlMovable.Move(new SPoint(10.0, 0.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);

            Vector = ControlMovable.Move(new SPoint(10.0, 1.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);
            Vector = ControlMovable.Move(new SPoint(10.0, 2.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);
            Vector = ControlMovable.Move(new SPoint(10.0, 3.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);
            Vector = ControlMovable.Move(new SPoint(10.0, 4.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);
            Vector = ControlMovable.Move(new SPoint(10.0, 5.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);
            Vector = ControlMovable.Move(new SPoint(10.0, 6.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);
            Vector = ControlMovable.Move(new SPoint(10.0, 7.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);
            Vector = ControlMovable.Move(new SPoint(10.0, 8.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);
            Vector = ControlMovable.Move(new SPoint(10.0, 9.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);
            Vector = ControlMovable.Move(new SPoint(10.0, 10.0));
            Console.WriteLine(Vector.X + " " + Vector.Y);

            for (double d = 10.0; d < 100.0; d += 1.0)
            {
                Vector = ControlMovable.Move(new SPoint(10.0, d));
                Console.WriteLine(Vector.X + " " + Vector.Y);
            }
#elif false
            // Test TimeBoost

            //var BoostStartTime = new TimePoint(new DateTime(2019, 1, 4, 0, 0, 9));
            //var BoostEndTime = new TimePoint(new DateTime(2019, 1, 4, 0, 0, 11));
            //var TimeBoost = new STimeBoost(BoostStartTime, BoostEndTime, 2.0);
            //Console.WriteLine(CTimeBoost.GetRealTime(TimeBoost,
            //    new TimePoint(new DateTime(2019, 1, 4, 0, 0, 10)),
            //    TimeSpan.FromSeconds(20)));

            var BoostStartTime = new TimePoint(new DateTime(2019, 1, 4, 10, 42, 21));
            var BoostEndTime   = new TimePoint(new DateTime(2019, 1, 4, 11, 42, 21));
            var TimeBoost      = new STimeBoost(BoostStartTime, BoostEndTime, 10.0);
            Console.WriteLine(TimeBoost.GetEndTime(new TimePoint(new DateTime(2019, 1, 4, 10, 49, 04)), TimeSpan.FromMinutes(240)));


            //var Now = TimePoint.Now;
            //var MidTime = (Now + TimeSpan.FromSeconds(5));
            //var EndTime = (Now + TimeSpan.FromSeconds(10));
            //var Boost = new CTimeBoost(new STimeBoost(new STimer(false, Now, EndTime), 0.5));

            //for (var n = TimePoint.Now; n < MidTime; n = TimePoint.Now)
            //{
            //    Console.WriteLine(Boost.GetElapsedDuration(n).TotalMilliseconds);
            //    Thread.Sleep(100);
            //}

            //Boost.Set(TimePoint.Now, EndTime, 3.0);

            //for (var n = TimePoint.Now; n < EndTime; n = TimePoint.Now)
            //{
            //    Console.WriteLine(Boost.GetElapsedDuration(n).TotalMilliseconds);
            //    Thread.Sleep(100);
            //}
#elif false
            var Option = new COptionJson <SAccount>("Option.ini", true);
            Option.Data = new SAccount("Ř", "Ř");
            Console.WriteLine(Option.Data.ToJsonString());
#elif false
            var keyCnt = new CKeyCntInt <int>();
            keyCnt.Plus(1, 1);
            keyCnt.Plus(1, 1);
            keyCnt.Plus(2, 3);
            keyCnt.Plus(2, -4);
            keyCnt.Multied(2);
            keyCnt.Multied(0);

            foreach (var i in keyCnt)
            {
                Console.WriteLine(i.Key + " " + i.Value);
            }
#elif true
            var r = new Rank <int, int>();
            r.Add(1, 1);
            r.Add(3, 3);
            r.Add(5, 5);

            for (int i = -1; i < 7; ++i)
            {
                var t = r.Get(i);
                if (t == null)
                {
                    Console.WriteLine(i + " null");
                }
                else
                {
                    Console.WriteLine(i + " " + t.Value.Key + " " + t.Value.Value);
                }
            }
#endif
        }