예제 #1
0
        protected override void CycleThink()
        {
            if (Ring != null)
            {
                foreach (var player in Player.GetWorldPlayers(World))
                {
                    if ((player?.Fleet?.Ships?.Count ?? 0) > 0)
                    {
                        var fleet = player.Fleet;
                        foreach (var ship in fleet.Ships.ToList())
                        {
                            if (Vector2.Distance(ship.Position, Ring.Position) > Ring.Size)
                            {
                                fleet.AbandonShip(ship);
                            }
                        }
                    }
                }
            }

            if (World.Hook.SumoMode && Ring == null)
            {
                Ring = new Sumo.RingBody(World, new Vector2(0, 0), World.Hook.SumoRingSize);

                World.GetActor <SpawnLocationsActor>().GeneratorAdd("sumo", this.FleetSpawnPosition);
                World.Hook.SpawnLocationMode = "sumo";
            }

            if (!World.Hook.SumoMode && Ring != null)
            {
                Ring.Destroy();
                World.FleetSpawnPositionGenerator = null;
            }
        }
예제 #2
0
        void IActor.CreateDestroy()
        {
            if (World.Hook.SumoMode && Ring == null)
            {
                Ring = new Sumo.RingBody(new Vector2(0, 0), World.Hook.SumoRingSize);
                Ring.Init(World);

                World.FleetSpawnPositionGenerator = this.FleetSpawnPosition;
            }

            if (!World.Hook.SumoMode && Ring != null)
            {
                Ring.Destroy();
                World.FleetSpawnPositionGenerator = null;
            }
        }