コード例 #1
0
        public void DispatchShuttle()
        {
            if (RespawnShuttle != null)
            {
                if (GameMain.Lua.game.overrideRespawnSub)
                {
                    CurrentState = State.Waiting;
                }
                else
                {
                    CurrentState = State.Transporting;
                }
                GameMain.Server.CreateEntityEvent(this);

                ResetShuttle();

                if (shuttleSteering != null)
                {
                    shuttleSteering.TargetVelocity = Vector2.Zero;
                }

                GameServer.Log("Dispatching the respawn shuttle.", ServerLog.MessageType.Spawning);

                Vector2 spawnPos = FindSpawnPos();

                if (!GameMain.Lua.game.overrideRespawnSub)
                {
                    RespawnCharacters(spawnPos);
                }

                CoroutineManager.StopCoroutines("forcepos");
                if (spawnPos.Y > Level.Loaded.Size.Y)
                {
                    CoroutineManager.StartCoroutine(ForceShuttleToPos(Level.Loaded.StartPosition - Vector2.UnitY * Level.ShaftHeight, 100.0f), "forcepos");
                }
                else
                {
                    RespawnShuttle.SetPosition(spawnPos);
                    RespawnShuttle.Velocity = Vector2.Zero;
                    RespawnShuttle.NeutralizeBallast();
                    RespawnShuttle.EnableMaintainPosition();
                }
            }
            else
            {
                CurrentState = State.Waiting;
                GameServer.Log("Respawning everyone in main sub.", ServerLog.MessageType.Spawning);
                GameMain.Server.CreateEntityEvent(this);

                RespawnCharacters(null);
            }
        }
コード例 #2
0
        partial void DispatchShuttle()
        {
            if (RespawnShuttle != null)
            {
                CurrentState = State.Transporting;
                GameMain.Server.CreateEntityEvent(this);

                ResetShuttle();

                if (shuttleSteering != null)
                {
                    shuttleSteering.TargetVelocity = Vector2.Zero;
                }

                GameServer.Log("Dispatching the respawn shuttle.", ServerLog.MessageType.Spawning);

                RespawnCharacters();

                CoroutineManager.StopCoroutines("forcepos");
                Vector2 spawnPos = FindSpawnPos();
                if (spawnPos.Y > Level.Loaded.Size.Y)
                {
                    CoroutineManager.StartCoroutine(ForceShuttleToPos(Level.Loaded.StartPosition - Vector2.UnitY * Level.ShaftHeight, 100.0f), "forcepos");
                }
                else
                {
                    RespawnShuttle.SetPosition(spawnPos);
                    RespawnShuttle.Velocity = Vector2.Zero;
                    if (shuttleSteering != null)
                    {
                        shuttleSteering.AutoPilot     = true;
                        shuttleSteering.MaintainPos   = true;
                        shuttleSteering.PosToMaintain = RespawnShuttle.WorldPosition;
                        shuttleSteering.UnsentChanges = true;
                    }
                }
            }
            else
            {
                CurrentState = State.Waiting;
                GameServer.Log("Respawning everyone in main sub.", ServerLog.MessageType.Spawning);
                GameMain.Server.CreateEntityEvent(this);

                RespawnCharacters();
            }
        }