예제 #1
0
        public void Process(ServerData serverState)
        {
            foreach (Fleet fleet in serverState.IterateAllFleets())
            {
                if (fleet.Waypoints.Count > 0)
                {
                    Waypoint waypointZero = fleet.Waypoints[0];
                    if (waypointZero.Task is ScrapTask && waypointZero.Task.IsValid(fleet, null, null))
                    {
                        Star targetStar = null;
                        serverState.AllStars.TryGetValue(waypointZero.Destination, out targetStar);
                        if (targetStar != null)
                        {
                            fleet.InOrbit = targetStar;
                        }

                        EmpireData sender = serverState.AllEmpires[fleet.Owner];

                        waypointZero.Task.Perform(fleet, targetStar, sender);
                    }
                }
            }

            serverState.CleanupFleets();
        }