コード例 #1
0
        public GUIPausePlayer(Simulator simulator, SimPlayer innerPlayer)
        {
            Simulator = simulator;

            InnerPlayer = innerPlayer;

            Cursor = new SpaceshipCursor(Simulator.Scene, Vector3.Zero, 2, VisualPriorities.Default.PlayerPanelCursor, InnerPlayer.Color, InnerPlayer.ImageName, false);
        }
コード例 #2
0
ファイル: AudioPlayer.cs プロジェクト: jodigiordano/commander
 public AudioPlayer(SimPlayer innerPlayer)
 {
     InnerPlayer = innerPlayer;
     ShipSpeed = 0;
     ShipSpeedChanged = true;
     MovingCue = XACTAudio.GetCue("ShipMoving", "Sound Bank");
     //FiringCue = XACTAudio.GetCue("ShipFiring", "Sound Bank");
 }
コード例 #3
0
        public SelectedCelestialBodyController(Simulator simulator, SimPlayer player, List<CelestialBody> celestialBodies)
        {
            Simulator = simulator;
            CelestialBodies = celestialBodies;
            Player = player;

            Initialize();
        }
コード例 #4
0
 public void DoPowerUpStarted(PowerUp powerUp, SimPlayer player)
 {
     switch (powerUp.Type)
     {
         case PowerUpType.Collector: DoAddSpaceshipAsked(((PowerUpCollector) powerUp).Collector);                break;
         case PowerUpType.Spaceship: DoAddSpaceshipAsked(((PowerUpSpaceship) powerUp).SpaceshipSpaceship);       break;
         case PowerUpType.Miner: DoAddSpaceshipAsked(((PowerUpMiner) powerUp).Miner);                            break;
         case PowerUpType.AutomaticCollector: DoAddSpaceshipAsked(((PowerUpAutomaticCollector) powerUp).AutomaticCollector);  break;
     }
 }
コード例 #5
0
        public void Initialize()
        {
            InitializePowerUpsAndTurrets();

            CheckAvailablePowerUps();
            CheckAvailableTurrets();
            
            Players.Clear();
            PlayersList.Clear();

            PlayerInAdvancedView = null;

            UpdateSelection = true;

            NotifyCommonStashChanged(CommonStash);
        }
コード例 #6
0
        public void DoActivatePowerUpAsked(PowerUpType type, SimPlayer player)
        {
            ActivesPowerUps[type] = false;

            PowerUp p = Simulator.PowerUpsFactory.Create(type);

            p.Owner = player;
            p.Start();

            PowerUps[player].Add(p);

            if (p.NeedInput)
                player.PowerUpInUse = p.Type;

            NotifyPowerUpStarted(p, player);
        }
コード例 #7
0
        public void DoPlayerConnected(SimPlayer player)
        {
            if (!Simulator.EditorMode)
                return; 
            
            var editorPlayer = new EditorPlayer(Simulator)
            {
                SimPlayer = player,
                GeneralMenu = GeneralMenu
            };


            editorPlayer.Initialize();

            Players.Add(player, editorPlayer);

            NotifyPlayerConnected(editorPlayer);
        }
コード例 #8
0
        public void DoPlayerMoved(SimPlayer p)
        {
            if (!Simulator.EditorMode)
                return;

            var player = Players[p];

            if (player.SimPlayer.ActualSelection.EditingState == EditorEditingState.MovingCB)
            {
                player.ActualSelection.CelestialBody.BasePosition += player.SimPlayer.DeltaPosition;
                player.SimPlayer.NinjaPosition = player.ActualSelection.CelestialBody.Position;
            }

            else if (player.SimPlayer.ActualSelection.EditingState == EditorEditingState.ShrinkingCB)
            {
                player.SimPlayer.NinjaPosition = player.ActualSelection.CelestialBody.Position;
                player.ActualSelection.CelestialBody.Position = player.SimPlayer.Position;
            }

            else if (player.SimPlayer.ActualSelection.EditingState == EditorEditingState.RotatingCB)
            {
                player.SimPlayer.NinjaPosition = player.ActualSelection.CelestialBody.Position;
            }

            else if (player.SimPlayer.ActualSelection.EditingState == EditorEditingState.StartPosCB)
            {

            }

            player.Circle.Position = p.Position;

            if (OpenedPanel != EditorPanel.None)
                Panels[OpenedPanel].DoHover(player.Circle);
        }
コード例 #9
0
        public void DoPlayerMovedDelta(SimPlayer p, ref Vector3 delta)
        {
            if (!Simulator.EditorMode)
                return;

            var player = Players[p];

            if (player.SimPlayer.ActualSelection.EditingState == EditorEditingState.RotatingCB)
            {
                float rotation = Core.Physics.Utilities.VectorToAngle(ref delta);
                player.ActualSelection.CelestialBody.SetRotation(rotation);
            }

            else if (player.SimPlayer.ActualSelection.EditingState == EditorEditingState.ShrinkingCB)
            {
                player.ActualSelection.CelestialBody.Path.X += delta.X;
                player.ActualSelection.CelestialBody.Path.Y -= delta.Y;
            }
        }
コード例 #10
0
 public void DoPowerUpStarted(PowerUp powerUp, SimPlayer player)
 {
     if (powerUp.Type == PowerUpType.Pulse)
         Bullets.Add(((PowerUpPulse) powerUp).Bullet);
     else if (powerUp.Type == PowerUpType.Shield)
         Bullets.Add(((PowerUpShield) powerUp).Bullet);
 }
コード例 #11
0
 public void DoPowerUpStopped(PowerUp powerUp, SimPlayer player)
 {
     if (powerUp.Type == PowerUpType.Pulse)
         ((PowerUpPulse) powerUp).Bullet.LifePoints = 0;
     else if (powerUp.Type == PowerUpType.Shield)
         ((PowerUpShield) powerUp).Bullet.LifePoints = 0;
 }
コード例 #12
0
        public void DoHideAdvancedViewAsked(SimPlayer p)
        {
            if (Simulator.DemoMode)
                return;

            var player = Players[p];

            if (AdvancedViewCheckedIn == player)
            {
                AdvancedView.Visible = false;
                AdvancedViewCheckedIn = null;
            }
        }
コード例 #13
0
        private void BeginHelpMessages(SimPlayer p)
        {
            var selection = p.ActualSelection;
            var player = Players[p];

            if (Simulator.WorldMode)
            {
                // World Menu
                if (selection.CelestialBody != null)
                {
                    if (selection.PausedGameChoice == PausedGameChoice.None && selection.CelestialBody is PinkHole)
                        HelpBar.ShowMessage(HelpBarMessage.WorldWarp, p.BasePlayer.InputType);
                    else if (selection.PausedGameChoice == PausedGameChoice.None)
                        HelpBar.ShowMessage(HelpBarMessage.WorldNewGame, p.BasePlayer.InputType);
                    else if (selection.PausedGameChoice == PausedGameChoice.New)
                        HelpBar.ShowMessage(HelpBarMessage.WorldToggleNewGame, p.BasePlayer.InputType);
                    else if (selection.PausedGameChoice == PausedGameChoice.Resume)
                        HelpBar.ShowMessage(HelpBarMessage.WorldToggleResume, p.BasePlayer.InputType);
                }

                else
                {
                    HelpBar.HideCurrentMessage();
                }
            }

            else if (Simulator.DemoMode)
            {
                // Main menu
                if (selection.CelestialBody != null && selection.CelestialBody.Name == "save the world")
                    HelpBar.ShowMessage(player.NewGameMenu.GetHelpBarMessage(), p.BasePlayer.InputType);
                else
                {
                    HelpBar.HideMessage(player.NewGameMenu.GetHelpBarMessage());

                    if (selection.CelestialBody != null)
                        HelpBar.ShowMessage(HelpBarMessage.Select, p.BasePlayer.InputType);
                    else
                        HelpBar.HideMessage(HelpBarMessage.Select);
                }
            }

            else if (!Simulator.EditorMode)
            {
                // Turret Menu
                if (selection.Turret != null && !selection.Turret.Disabled)
                    HelpBar.ShowMessage(HelpBarMessage.TurretMenu, player.TurretMenu.GetHelpBarMessage(selection.TurretChoice));
                else
                    HelpBar.HideMessage(HelpBarMessage.TurretMenu);

                // Celestial Body Menu
                if (selection.Turret == null && selection.TurretToPlace == null)
                {
                    if (selection.CelestialBody != null && selection.CelestialBody.FirstOnPath)
                        HelpBar.ShowMessage(HelpBarMessage.CallNextWave, StartingPathMenu.GetHelpBarMessage(p.BasePlayer.InputType));
                    else if (selection.CelestialBody != null)
                        HelpBar.ShowMessage(HelpBarMessage.CelestialBodyMenu, player.CelestialBodyMenu.GetHelpBarMessage(selection.TurretToBuy));
                    else
                    {
                        HelpBar.HideMessage(HelpBarMessage.CallNextWave);
                        HelpBar.HideMessage(HelpBarMessage.CelestialBodyMenu);
                    }
                }
            }
        }
コード例 #14
0
        public void DoPlayerDisconnected(SimPlayer p)
        {
            Players.Remove(p.PausePlayer);

            if (Players.Count == 0 && IsPanelVisible)
            {
                CloseOthersPanels(PanelType.None);
                Simulator.CanSelectCelestialBodies = true;
            }
        }
コード例 #15
0
        public void DoCancelAction(SimPlayer p)
        {
            if (!Simulator.EditorMode)
                return;

            var player = Players[p];

            //tmp
            if (player.SimPlayer.ActualSelection.CelestialBody != null && player.SimPlayer.ActualSelection.EditingState != EditorEditingState.None)
                ExecuteCommand(new EditorCelestialBodyCommand("HidePathPreview") { Owner = player });

            player.DoCancelAction();
        }
コード例 #16
0
        public void DoTurretToPlaceSelected(Turret turret, SimPlayer p)
        {
            var player = Players[p];

            player.Cursor.FadeOut();
            turret.CelestialBody.ShowTurretsZone = true;
            turret.ShowRange = true;
            turret.ShowForm = true;

            foreach (var turret2 in turret.CelestialBody.Turrets)
                turret2.ShowForm = true;

            HelpBar.ShowMessage(HelpBarMessage.InstallTurret, p.BasePlayer.InputType);
        }
コード例 #17
0
        public void DoPlayerDisconnected(SimPlayer player)
        {
            if (!Simulator.EditorMode)
                return;

            var editorPlayer = Players[player];

            Players.Remove(player);

            NotifyPlayerDisconnected(editorPlayer);
        }
コード例 #18
0
        public void DoPlayerMoved(SimPlayer p)
        {
            var player = Players[p];

            player.Cursor.Position = p.Position;
            player.Cursor.Direction = p.Direction;
            player.Crosshair.Position = p.Position;
        }
コード例 #19
0
        public void DoPowerUpStopped(PowerUp powerUp, SimPlayer p)
        {
            var player = Players[p];

            if (powerUp.NeedInput)
            {
                player.Cursor.FadeIn();
                player.PowerUpInputMode = false;

                if (powerUp.Crosshair != "")
                    player.Crosshair.FadeOut();

                if (powerUp.Type == PowerUpType.FinalSolution)
                {
                    PowerUpLastSolution pls = (PowerUpLastSolution) powerUp;

                    if (pls.GoAhead)
                        PathPreviewing.Commit(player);

                    player.PowerUpFinalSolution = false;
                }
            }
        }
コード例 #20
0
        public void DoPowerUpStarted(PowerUp powerUp, SimPlayer p)
        {
            var player = Players[p];

            if (powerUp.NeedInput)
            {
                player.Cursor.FadeOut();
                player.PowerUpInputMode = true;

                if (powerUp.Crosshair != "")
                {
                    player.Crosshair.SetFrontImage(powerUp.Crosshair, powerUp.CrosshairSize, p.Color);
                    player.Crosshair.Alpha = 0;
                    player.Crosshair.FadeIn();
                }

                if (powerUp.Type == PowerUpType.FinalSolution)
                    player.PowerUpFinalSolution = true;
            }
        }
コード例 #21
0
        public void DoNextOrPreviousAction(SimPlayer p, int delta)
        {
            if (!Simulator.EditorMode)
                return;

            var player = Players[p];

            if (player.ActualSelection.GeneralMenuChoice != EditorGeneralMenuChoice.None)
            {
                if (delta > 0)
                    player.NextGeneralMenuChoice();
                else
                    player.PreviousGeneralMenuChoice();
            }

            else if (player.SimPlayer.ActualSelection.CelestialBody != null)
            {
                if (delta > 0)
                    player.NextCelestialBodyChoice();
                else
                    player.PreviousCelestialBodyChoice();
            }
        }
コード例 #22
0
        public void SyncPlayer(SimPlayer p)
        {
            GUIPlayer current;

            if (!Players.TryGetValue(p, out current))
                return;
            
            if (current.Cursor.FrontImage.TextureName != p.ImageName || current.Cursor.Color != p.Color)
            {
                current.Cursor.Color = p.Color;
                current.Cursor.SetImage(p.ImageName);
            }
        }
コード例 #23
0
        public void DoSelectAction(SimPlayer p)
        {
            if (!Simulator.EditorMode)
                return;

            var player = Players[p];

            player.DoSelectAction();

            if (player.ActualSelection.GeneralMenuChoice != EditorGeneralMenuChoice.None)
            {
                var menu = GeneralMenu.SubMenus[player.ActualSelection.GeneralMenuChoice];
                var choice = menu.GetChoice(player.ActualSelection.GeneralMenuSubMenuIndex);

                EditorCommand command = GetCommand(choice);

                command.Owner = player;

                ExecuteCommand(command);

                return;
            }


            if (OpenedPanel != EditorPanel.None)
            {
                var panel = Panels[OpenedPanel];

                CurrentOpenedPanelPlayer = player;

                panel.DoClick(player.Circle);

                return;
            }

            if (Simulator.EditorState == EditorState.Playtest)
                return;

            if (player.SimPlayer.ActualSelection.CelestialBody != null)
            {
                var choice = EditorGUIPlayers[player].CelestialBodyMenu.Menu.GetCurrentChoice();
                var command = GetCommand(choice);

                command.Owner = player;

                if (player.SimPlayer.ActualSelection.EditingState != EditorEditingState.None)
                    ExecuteCommand(new EditorCelestialBodyCommand("ShowPathPreview") { Owner = player });

                ExecuteCommand(command);

                return;
            }
        }
コード例 #24
0
        public void DoPlayerSelectionChanged(SimPlayer p)
        {
            var selection = p.ActualSelection;
            var player = Players[p];

            BeginHelpMessages(p);

            // Firing
            player.Cursor.ShowFiringCursor = p.Firing;

            if (!Simulator.DemoMode)
            {
                // Check in the starting path menu
                if (StartingPathMenu.CheckedIn == null && selection.CelestialBody != null && selection.CelestialBody.FirstOnPath)
                {
                    StartingPathMenu.CelestialBody = selection.CelestialBody;
                    StartingPathMenu.Visible = true;
                    StartingPathMenu.CheckedIn = p;
                    StartingPathMenu.Color = p.Color;
                    StartingPathMenu.Position = p.Position;

                    player.CelestialBodyMenu.Visible = false;
                }

                // Check out the starting path menu
                if (StartingPathMenu.CheckedIn == p && (selection.CelestialBody == null || !selection.CelestialBody.FirstOnPath))
                {
                    StartingPathMenu.Visible = false;
                    StartingPathMenu.CheckedIn = null;
                }
            }

            // Open the celestial body menu
            if (StartingPathMenu.CheckedIn != p)
            {
                player.CelestialBodyMenu.CelestialBody = selection.CelestialBody;
                player.CelestialBodyMenu.TurretToBuy = selection.TurretToBuy;
                player.CelestialBodyMenu.Visible = selection.TurretToPlace == null && selection.CelestialBody != null;
            }


            if (selection.PowerUpToBuy != PowerUpType.None)
                MenuPowerUps.PowerUpToBuy = selection.PowerUpToBuy;

            player.TurretMenu.Turret = selection.Turret;
            player.TurretMenu.AvailableTurretOptions = selection.AvailableTurretOptions;
            player.TurretMenu.SelectedOption = selection.TurretChoice;
            player.TurretMenu.Visible = player.TurretMenu.Turret != null && !player.TurretMenu.Turret.Disabled;

            if (Simulator.WorldMode)
            {
                player.WorldMenu.CelestialBody = selection.CelestialBody;
                player.WorldMenu.PausedGameChoice = selection.PausedGameChoice;

                if (GamePausedMenuPlayerCheckedIn == null && player.WorldMenu.PausedGameMenuVisible)
                {
                    GamePausedMenuPlayerCheckedIn = player;
                    player.WorldMenu.PausedGameMenuCheckedIn = true;
                }

                else if (GamePausedMenuPlayerCheckedIn == player && selection.CelestialBody == null)
                {
                    GamePausedMenuPlayerCheckedIn = null;
                    player.WorldMenu.PausedGameMenuCheckedIn = false;
                }
            }

            if (Simulator.DemoMode)
            {
                player.NewGameMenu.CelestialBody = selection.CelestialBody;
                player.NewGameMenu.NewGameChoice = selection.NewGameChoice;
            }

            player.SelectedCelestialBodyAnimation.CelestialBody = selection.CelestialBody;

            player.FinalSolutionPreview.CelestialBody =
                (player.PowerUpFinalSolution) ? selection.CelestialBody : null;

            if (!Simulator.EditorMode || (Simulator.EditorMode && Simulator.EditorState == EditorState.Playtest))
            {
                if (PathPreviewing != null && // preview: sell turret
                    selection.Turret != null &&
                    selection.Turret.Type == TurretType.Gravitational &&
                    selection.Turret.CanSell &&
                    !selection.Turret.Disabled &&
                    selection.TurretChoice == TurretChoice.Sell)
                    PathPreviewing.RemoveCelestialObject(player, selection.Turret.CelestialBody);
                else if (PathPreviewing != null && //preview: final solution
                    selection.CelestialBody != null &&
                    player.PowerUpFinalSolution &&
                    selection.CelestialBody.HasGravitationalTurret)
                    PathPreviewing.RemoveCelestialObject(player, selection.CelestialBody);
                else if (PathPreviewing != null && //preview: buy grav. turret
                    selection.TurretToBuy == TurretType.Gravitational)
                    PathPreviewing.AddCelestialObject(player, selection.CelestialBody);
                else if (PathPreviewing != null && //preview: place grav. turret
                    selection.TurretToPlace != null &&
                    selection.TurretToPlace.Type == TurretType.Gravitational)
                    PathPreviewing.AddCelestialObject(player, selection.CelestialBody);
                else if (PathPreviewing != null && //preview: update turret
                    selection.Turret != null &&
                    selection.Turret.Type == TurretType.Gravitational &&
                    selection.Turret.CanUpdate &&
                    selection.TurretChoice == TurretChoice.Update &&
                    selection.Turret.Level <= 1)
                    PathPreviewing.UpgradeCelestialObject(player, selection.Turret.CelestialBody);
                else if (PathPreviewing != null) //preview: rollback
                    PathPreviewing.RollBack(player);
            }
        }
コード例 #25
0
        public void DoTurretToPlaceDeselected(Turret turret, SimPlayer p)
        {
            var player = Players[p];

            player.Cursor.FadeIn();
            turret.CelestialBody.ShowTurretsZone = false;
            turret.ShowRange = false;

            HelpBar.HideMessage(HelpBarMessage.InstallTurret);
        }
コード例 #26
0
        public void DoShowAdvancedViewAsked(SimPlayer p)
        {
            if (Simulator.DemoMode)
                return;

            var player = Players[p];

            if (AdvancedViewCheckedIn == null)
            {
                AdvancedView.Visible = true;
                AdvancedViewCheckedIn = player;
            }
        }
コード例 #27
0
        public void DoPlayerConnected(SimPlayer p)
        {
            GUIPausePlayer player = new GUIPausePlayer(Simulator, p);

            Players.Add(p.PausePlayer, player);

            if (IsPanelVisible)
                ShowPausePlayer(player);
        }
コード例 #28
0
 public void DoTurretUpgraded(Turret turret, SimPlayer p)
 {
     Simulator.Scene.Animations.Add(new TurretMoneyAnimation(turret.BuyPrice, false, turret.Position, VisualPriorities.Default.TurretUpgradedAnimation));
 }
コード例 #29
0
        public void SyncPlayer(SimPlayer p)
        {
            GUIPausePlayer current;

            if (!Players.TryGetValue(p.PausePlayer, out current))
                return;

            if (current.Cursor.FrontImage.TextureName != p.ImageName || current.Cursor.Color != p.Color)
            {
                var previousAlpha = current.Cursor.Alpha;

                current.Cursor.Color = p.Color;
                current.Cursor.SetImage(p.ImageName);
                current.Cursor.Alpha = previousAlpha;
            }
        }
コード例 #30
0
        public void DoTurretSold(Turret turret, SimPlayer p)
        {
            var player = Players[p];

            if (PathPreviewing != null &&
                turret.Type == TurretType.Gravitational)
                PathPreviewing.Commit(player);

            HelpBar.HideMessage(HelpBarMessage.TurretMenu);

            Simulator.Scene.Animations.Add(new TurretMoneyAnimation(turret.SellPrice, true, turret.Position, VisualPriorities.Default.TurretUpgradedAnimation));
        }