Ejemplo n.º 1
0
 protected override void Read(NReader rdr)
 {
     TickId = rdr.ReadInt32();
     Time = rdr.ReadInt32();
     Position = Position.Read(rdr);
     Records = new TimedPosition[rdr.ReadInt16()];
     for (var i = 0; i < Records.Length; i++)
         Records[i] = TimedPosition.Read(rdr);
 }
Ejemplo n.º 2
0
 protected override void Read(NReader rdr)
 {
     TickId   = rdr.ReadInt32();
     Time     = rdr.ReadInt32();
     Position = Position.Read(rdr);
     Records  = new TimedPosition[rdr.ReadInt16()];
     for (int i = 0; i < Records.Length; i++)
     {
         Records[i] = TimedPosition.Read(rdr);
     }
 }
Ejemplo n.º 3
0
 protected override void Read(ClientProcessor psr, NReader rdr)
 {
     TickId   = rdr.ReadInt32();
     Time     = rdr.ReadInt32();
     Position = Position.Read(rdr);
     Records  = new TimedPosition[rdr.ReadInt16()];
     for (var i = 0; i < Records.Length; i++)
     {
         Records[i] = TimedPosition.Read(rdr);
     }
 }
Ejemplo n.º 4
0
        public Vector GetRecommendedPosition()
        {
            float  minDistance = float.MaxValue;
            Vector minPosition = null;
            //TimedPosition debugPosition = null;

            long turnNow = VirtualSpaceTime.CurrentTurn;

            lock (_events)
            {
                IEnumerable <TimedEvent> potentialEventsEnumerable = _events.Where(potentialEvent =>
                                                                                   (potentialEvent.Type == IncentiveType.Recommended ||
                                                                                    potentialEvent.Type == IncentiveType.Required) &&
                                                                                   potentialEvent.TurnStart <= turnNow && turnNow <= potentialEvent.TurnEnd);

                foreach (TimedEvent event_ in potentialEventsEnumerable)
                {
                    if (event_ is TimedPosition)
                    {
                        TimedPosition position = (TimedPosition)event_;
                        float         distance = position.Position.Distance(CurrentPosition);
                        if (distance <= minDistance)
                        {
                            minDistance = distance;
                            minPosition = position.Position;
                        }
                    }
                    else if (event_ is Transition)
                    {
                        Transition transition = (Transition)event_;
                        foreach (TransitionFrame frame in transition.GetActiveFrames(turnNow))
                        {
                            TimedPosition position = frame.Position;
                            float         distance = position.Position.Distance(CurrentPosition);
                            if (distance <= minDistance)
                            {
                                minDistance = distance;
                                minPosition = position.Position;
                            }
                        }
                    }
                }
            }

            //Logger.Debug("Moving bot towards " + minPosition);
            //if (debugPosition != null)
            //Logger.Debug("debugPosition: " + debugPosition.Type + ", start: " + debugPosition.TurnStart + ", end: " + debugPosition.TurnEnd + ", strategy id: " + debugPosition.StrategyId);
            return(minPosition);
        }