Пример #1
0
        public override void Load()
        {
            TerrainSorcererStreet ActiveTerrain = Map.GetTerrain(ActivePlayer.GamePiece);

            Map.GlobalSorcererStreetBattleContext.Invader  = Invader;
            Map.GlobalSorcererStreetBattleContext.Defender = ActiveTerrain.DefendingCreature;

            Map.GlobalSorcererStreetBattleContext.InvaderPlayer  = ActivePlayer;
            Map.GlobalSorcererStreetBattleContext.DefenderPlayer = ActiveTerrain.Owner;

            Map.GlobalSorcererStreetBattleContext.Invader.ResetBonuses();
            Map.GlobalSorcererStreetBattleContext.Defender.ResetBonuses();

            Map.GlobalSorcererStreetBattleContext.InvaderFinalHP  = Map.GlobalSorcererStreetBattleContext.Invader.CurrentHP;
            Map.GlobalSorcererStreetBattleContext.DefenderFinalHP = Map.GlobalSorcererStreetBattleContext.Defender.CurrentHP;
            Map.GlobalSorcererStreetBattleContext.InvaderFinalST  = Map.GlobalSorcererStreetBattleContext.Invader.CurrentST;
            Map.GlobalSorcererStreetBattleContext.DefenderFinalST = Map.GlobalSorcererStreetBattleContext.Defender.CurrentST;

            Map.GlobalSorcererStreetBattleContext.InvaderCard           = new SimpleAnimation("Invader", "Invader", Invader.sprCard);
            Map.GlobalSorcererStreetBattleContext.InvaderCard.Position  = new Vector2(10, 30);
            Map.GlobalSorcererStreetBattleContext.InvaderCard.Scale     = new Vector2(0.5f);
            Map.GlobalSorcererStreetBattleContext.DefenderCard          = new SimpleAnimation("Defender", "Defender", ActiveTerrain.DefendingCreature.sprCard);
            Map.GlobalSorcererStreetBattleContext.DefenderCard.Position = new Vector2(Constants.Width - 210, 30);
            Map.GlobalSorcererStreetBattleContext.DefenderCard.Scale    = new Vector2(0.5f);

            ListActionMenuChoice.AddToPanelListAndSelect(new ActionPanelBattleItemSelectionPhase(ListActionMenuChoice, Map, ActivePlayer));
        }
Пример #2
0
        public void DoUpdateEditor(GameTime gameTime)
        {
            if (MouseHelper.InputLeftButtonPressed())
            {
                if (CursorPosition.X >= Constants.Width - 200 && CursorPosition.Y <= 30)
                {
                    if (ListActionMenuChoice.HasMainPanel && !(ListActionMenuChoice.Last() is MagicElementSelectionPanel))
                    {
                        ListActionMenuChoice.RemoveAllActionPanels();
                    }
                    if (!ListActionMenuChoice.HasMainPanel)
                    {
                        ListActionMenuChoice.AddToPanelListAndSelect(new MagicElementSelectionPanel(this));
                    }
                    else if (ListActionMenuChoice.HasMainPanel && ListActionMenuChoice.Last() is MagicElementSelectionPanel)
                    {
                        ListActionMenuChoice.RemoveAllActionPanels();
                    }
                }
                else if (CursorPosition.X >= Constants.Width - 400 && CursorPosition.Y <= 30)
                {
                    ListActionMenuChoice.RemoveAllActionPanels();
                    ListActionMenuChoice.AddToPanelListAndSelect(new MagicPreviewerPanel(Content, ActiveMagicSpell, ListActionMenuChoice, GlobalProjectileContext, SharedParams));
                }
                else
                {
                    if (ListActionMenuChoice.HasMainPanel && CursorPosition.X >= Constants.Width - 200)
                    {
                        return;
                    }

                    if (ListActionMenuChoice.HasMainPanel && ListActionMenuChoice.Last() is MagicAttributesEditonPanel)
                    {
                        ListActionMenuChoice.RemoveAllActionPanels();
                    }

                    foreach (MagicElement ActiveMagicElement in ListMagicElement)
                    {
                        if (Math.Sqrt(Math.Pow(CursorPosition.X - ActiveMagicElement.Position.X, 2) + Math.Pow(CursorPosition.Y - ActiveMagicElement.Position.Y, 2)) < ActiveMagicElement.Radius)
                        {
                            MagicElementSelected = ActiveMagicElement;
                            ListActionMenuChoice.AddToPanelListAndSelect(new MagicAttributesEditonPanel(this, ActiveMagicElement));
                            break;
                        }
                    }
                }
            }
            else if (MouseHelper.InputLeftButtonReleased())
            {
                MagicElementSelected = null;
            }
            else if (MouseHelper.InputLeftButtonHold())
            {
                if (MagicElementSelected != null)
                {
                    MagicElementSelected.Position = CursorPosition;
                    MagicElementSelected.IsValid  = true;

                    //Unlink all Magic
                    foreach (MagicElement ActiveMagicElement in ListMagicElement)
                    {
                        ActiveMagicElement.ListLinkedMagicElement.Remove(MagicElementSelected);
                        if (ActiveMagicElement == MagicElementSelected)
                        {
                            continue;
                        }

                        double DistanceBetweenMagicElement = Math.Sqrt(Math.Pow(MagicElementSelected.Position.X - ActiveMagicElement.Position.X, 2)
                                                                       + Math.Pow(MagicElementSelected.Position.Y - ActiveMagicElement.Position.Y, 2));

                        float TotalRadius = MagicElementSelected.Radius + ActiveMagicElement.Radius;

                        // Collision
                        if (DistanceBetweenMagicElement <= TotalRadius)
                        {
                            MagicElementSelected.IsValid = false;
                            return;
                        }
                    }

                    //Recompute all Magic links
                    foreach (MagicElement ActiveMagicElement in ListMagicElement)
                    {
                        if (ActiveMagicElement == MagicElementSelected)
                        {
                            continue;
                        }

                        double DistanceBetweenMagicElement = Math.Sqrt(Math.Pow(MagicElementSelected.Position.X - ActiveMagicElement.Position.X, 2)
                                                                       + Math.Pow(MagicElementSelected.Position.Y - ActiveMagicElement.Position.Y, 2));

                        float TotalRadius = MagicElementSelected.Radius + ActiveMagicElement.Radius;

                        // Collision
                        if (DistanceBetweenMagicElement > TotalRadius && DistanceBetweenMagicElement < TotalRadius + SelectionRadius)
                        {
                            ActiveMagicElement.ListLinkedMagicElement.Add(MagicElementSelected);
                            break;
                        }
                    }
                }
                else if (KeyboardHelper.KeyHold(Microsoft.Xna.Framework.Input.Keys.LeftAlt))
                {
                    CameraOffset.X += MouseHelper.MouseStateCurrent.X - MouseHelper.MouseStateLast.X;
                    CameraOffset.Y += MouseHelper.MouseStateCurrent.Y - MouseHelper.MouseStateLast.Y;

                    ZoomLevel += (MouseHelper.MouseStateCurrent.ScrollWheelValue - MouseHelper.MouseStateLast.ScrollWheelValue) / 100;
                }
            }
        }