Пример #1
0
        private bool GamePreparing()
        {
            try
            {
                for (int pl = 0; pl < Players.Count; pl++)
                {
                    var v = GetSpawnPoints(pl);
                    for (int h = 0; h < HeroesPerPlayer; h++)
                    {
                        Maze.UnitPositions.Add(Players[pl].Heroes[h], v[h % v.Count]);
                        Players[pl].Heroes[h].Init(Players[pl], Maze, Shop);
                    }

                    Players[pl].InitPlayer();
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                return(false);
            }
            NextHero();
            CurrentHero.StartTurn();
            return(true);
        }
Пример #2
0
 public void EndTurn()
 {
     CurrentPlayer.EndTurn();
     CurrentHero.EndTurn();
     Maze.TickTalents(CurrentPlayer);
     NextHero();
     CurrentHero.StartTurn();
 }
Пример #3
0
    public void UpdateAttributes()
    {
        charStatsPanel.UpdateStats(CurrentHero);
        quirksPanel.UpdateQuirksPanel(CurrentHero);
        diseasePanel.UpdateDiseasePanel(CurrentHero);
        resistancesPanel.UpdateResistances(CurrentHero);

        stressPanel.UpdateStress(CurrentHero.GetPairedAttribute(AttributeType.Stress).ValueRatio);
    }
Пример #4
0
 //when to add clothing to the wardrobe
 //when paramaterless clothing is added from the get go.
 //to slove issue with int not allowing null default: https://stackoverflow.com/questions/38488443/why-a-value-of-type-null-cannot-be-used-as-a-default-parameter-with-type-double
 public void addClothingToWardrobe(int typeOfClothingEnum, int particularClothingEnum, int?storyLocation = null)
 {
     if (storyLocation == null)
     {
         CurrentHero.addToWardrobe(typeOfClothingEnum, particularClothingEnum);
     }
     else //in the future this will be added to some kind of event array so the hero does not have
     //access to it until the event occurs
     {
         CurrentHero.addToWardrobe(typeOfClothingEnum, particularClothingEnum);
     }
 }
Пример #5
0
 private void leftTrinketSlot_onDropIn(InventorySlot slot, InventoryItem item)
 {
     if (item.ItemType == "trinket")
     {
         CurrentHero.Equip((Trinket)item.ItemData, TrinketSlot.Left);
         DarkestSoundManager.PlayOneShot("event:/ui/town/character_equip");
     }
     else
     {
         CurrentHero.Unequip(TrinketSlot.Left);
     }
     PanelChanged();
 }
Пример #6
0
 private void rightTrinketSlot_onDropOut(InventorySlot slot, InventoryItem item)
 {
     if (item.ItemType == "trinket")
     {
         CurrentHero.Unequip(TrinketSlot.Right);
         DarkestSoundManager.PlayOneShot("event:/ui/town/character_unequip");
         PanelChanged();
     }
     else
     {
         CurrentHero.Unequip(TrinketSlot.Right);
     }
     PanelChanged();
 }
Пример #7
0
        public static void DoCombo()
        {
            var hero = CurrentHero.Get();

            switch (hero)
            {
            case Champion.Akali:
            {
                Champions.Akali.Modes.Combo.Execute();
                break;
            }

            case Champion.Caitlyn:
            {
                Champions.Caitlyn.Modes.Combo.Execute();
                break;
            }

            case Champion.Evelynn:
            {
                Champions.Evelynn.Modes.Combo.Execute();
                break;
            }

            case Champion.Ezreal:
            {
                Champions.Ezreal.Modes.Combo.Execute();
                break;
            }

            case Champion.Soraka:
            {
                Champions.Soraka.Modes.Combo.Execute();
                break;
            }

            case Champion.Teemo:
            {
                Champions.Teemo.Modes.Combo.Execute();
                break;
            }

            case Champion.Corki:
            {
                Champions.Corki.Modes.Combo.Execute();
                break;
            }
            }
        }
Пример #8
0
    /// <summary>
    /// 判断当前英雄是否已经购买
    /// </summary>
    /// <returns></returns>
    public static bool JudgeWhetherBuy(CurrentHero current_Hero)
    {
        switch (current_Hero)
        {
        case CurrentHero.GuiYuZi:
            return(true);

        case CurrentHero.CiShen:
            if (CiShen_Buy > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }

        case CurrentHero.YuZi:
            if (YuZi_Buy > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }

        case CurrentHero.ShouSi:
            if (ShouSi_Buy > 0)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
        return(false);
    }
Пример #9
0
        public void RefreshFieldOfView(VectorBase position)
        {
            var initialNumberAlreadyExplored = GetNumberOfExploredTiles();
            var lit    = new bool[Width, Height];
            var radius = Option.HeroSightRange;

            ShadowCaster.ComputeFieldOfViewWithShadowCasting(position.x, position.y, radius,
                                                             (x1, y1) =>
            {
                if (this.Bounds().Contains(new VectorBase(x1, y1)))
                {
                    return(!Tiles[x1, y1].IsTransparent);
                }
                else
                {
                    return(false);
                }
            },     // delegate to handle transperancy
                                                             (x2, y2) =>
            {
                // Need to check against the bounds of the stage
                if (this.Bounds().Contains(new VectorBase(x2, y2)))
                {
                    lit[x2, y2]      = true;
                    Explored[x2, y2] = true;

                    Tiles[x2, y2].SetVisible(true);
                    Tiles[x2, y2].IsExplored = true;
                }
            }     // delegate to handle visibility
                                                             );
            var changedNumberAlreadyExplored = GetNumberOfExploredTiles();

            // Let the hero know things have been explored.
            CurrentHero.Explore(changedNumberAlreadyExplored - initialNumberAlreadyExplored);

            SetVisibility(lit);
        }
Пример #10
0
    //获取人物等级
    public static int GetHeroLevel(CurrentHero current_Hero)
    {
        int hero_Level = 0;

        switch (current_Hero)
        {
        case CurrentHero.GuiYuZi:
            hero_Level = GuiYuZi_Level_Value;
            break;

        case CurrentHero.CiShen:
            hero_Level = CiShen_Level_Value;
            break;

        case CurrentHero.YuZi:
            hero_Level = YuZi_Level_Value;
            break;

        case CurrentHero.ShouSi:
            hero_Level = ShouSi_Level_Value;
            break;
        }
        return(hero_Level);
    }
Пример #11
0
        /// <summary>
        /// Update the scene
        /// </summary>
        /// <param name="time"></param>
        /// <param name="hasFocus"></param>
        /// <param name="isCovered"></param>
        public override void Update(GameTime time, bool hasFocus, bool isCovered)
        {
            // Go back to the main menu
            if (Keyboard.IsNewKeyPress(Keys.Escape))
            {
                ScreenManager.AddScreen(new MainMenu());
                ExitScreen();
            }


            switch (CurrentState)
            {
                #region Select hero
            case CharGenStates.SelectHero:
                if (Mouse.IsButtonDown(MouseButtons.Left))
                {
                    for (int id = 0; id < 4; id++)
                    {
                        if (HeroeBoxes[id].Contains(Mouse.Location))
                        {
                            HeroID = id;

                            // Create a new hero or remove it
                            if (Heroes[id] == null)
                            {
                                Heroes[id] = new Hero();

                                CurrentState = CharGenStates.SelectRace;
                            }
                            else
                            {
                                CurrentState = CharGenStates.Delete;
                            }
                        }
                    }
                }
                break;
                #endregion

                #region Select race
            case CharGenStates.SelectRace:
            {
                Point point = new Point(302, 160);
                for (int i = 0; i < 12; i++)
                {
                    if (new Rectangle(point.X, point.Y, 324, 16).Contains(Mouse.Location) && Mouse.IsNewButtonDown(MouseButtons.Left))
                    {
                        CurrentHero.Race   = (HeroRace)Enum.GetValues(typeof(HeroRace)).GetValue(i / 2);
                        CurrentHero.Gender = (HeroGender)(i % 2);
                        CurrentState       = CharGenStates.SelectClass;
                    }

                    point.Y += 18;
                }
            }
            break;
                #endregion

                #region Select class
            case CharGenStates.SelectClass:
            {
                Point point = new Point(304, 0);

                var currentAllowedClasses = AllowedClass[CurrentHero.Race];
                for (int i = 0; i < currentAllowedClasses.Count(); i++)
                {
                    point.Y = 160 + i * 18;
                    if (new Rectangle(point.X, point.Y, 324, 16).Contains(Mouse.Location) && Mouse.IsNewButtonDown(MouseButtons.Left))
                    {
                        CurrentHero.Professions.Clear();
                        foreach (HeroClass cls in Enum.GetValues(typeof(HeroClass)))
                        {
                            if ((currentAllowedClasses[i] & cls) != 0)
                            {
                                CurrentHero.Professions.Add(new Profession(0, currentAllowedClasses[i]));
                            }
                        }
                        CurrentState = CharGenStates.SelectAlignment;
                    }

                    // Back
                    if (BackButton.Contains(Mouse.Location) && Mouse.IsNewButtonDown(MouseButtons.Left))
                    {
                        CurrentState = CharGenStates.SelectRace;
                    }
                }
            }
            break;
                #endregion

                #region Select alignment
            case CharGenStates.SelectAlignment:
            {
                Point point = new Point(304, 0);
                for (int i = 0; i < 9; i++)
                {
                    point.Y = 176 + i * 18;
                    if (new Rectangle(point.X, point.Y, 324, 16).Contains(Mouse.Location) && Mouse.IsNewButtonDown(MouseButtons.Left))
                    {
                        EntityAlignment[] alignments = new EntityAlignment[]
                        {
                            EntityAlignment.LawfulGood,
                            EntityAlignment.NeutralGood,
                            EntityAlignment.ChaoticGood,
                            EntityAlignment.LawfulNeutral,
                            EntityAlignment.TrueNeutral,
                            EntityAlignment.ChaoticNeutral,
                            EntityAlignment.LawfulEvil,
                            EntityAlignment.NeutralEvil,
                            EntityAlignment.ChaoticEvil,
                        };

                        CurrentHero.Alignment = alignments[i];
                        CurrentHero.RollAbilities();
                        CurrentState = CharGenStates.SelectFace;
                    }
                }

                // Back
                if (BackButton.Contains(Mouse.Location) && Mouse.IsNewButtonDown(MouseButtons.Left))
                {
                    CurrentState = CharGenStates.SelectClass;
                }
            }
            break;
                #endregion

                #region Select face
            case CharGenStates.SelectFace:
            {
                if (Mouse.IsNewButtonDown(MouseButtons.Left))
                {
                    if (new Rectangle(288, 132, 64, 32).Contains(Mouse.Location))
                    {
                        FaceOffset--;
                    }

                    if (new Rectangle(288, 164, 64, 32).Contains(Mouse.Location))
                    {
                        FaceOffset++;
                    }

                    // Select a face
                    for (int x = 0; x < 4; x++)
                    {
                        if (new Rectangle(352 + x * 64, 132, 64, 64).Contains(Mouse.Location))
                        {
                            CurrentHero.Head = FaceOffset + x;
                            CurrentState     = CharGenStates.Confirm;
                            break;
                        }
                    }
                }


                // Limit value
                if (CurrentHero.Gender == HeroGender.Male)
                {
                    if (FaceOffset < 0)
                    {
                        FaceOffset = 0;
                    }

                    if (FaceOffset > 25)
                    {
                        FaceOffset = 25;
                    }
                }
                else
                {
                    if (FaceOffset < 29)
                    {
                        FaceOffset = 29;
                    }

                    if (FaceOffset > 40)
                    {
                        FaceOffset = 40;
                    }
                }

                // Back
                if (BackButton.Contains(Mouse.Location) && Mouse.IsNewButtonDown(MouseButtons.Left))
                {
                    CurrentState = CharGenStates.SelectAlignment;
                }
            }
            break;
                #endregion

                #region Confirm
            case CharGenStates.Confirm:
            {
                if (Mouse.IsNewButtonDown(MouseButtons.Left))
                {
                    // Reroll
                    if (new Rectangle(448, 318, 76, 32).Contains(Mouse.Location))
                    {
                        CurrentHero.RollAbilities();
                    }

                    // Faces
                    if (new Rectangle(448, 350, 76, 32).Contains(Mouse.Location))
                    {
                        CurrentHero.Head = -1;
                        CurrentState     = CharGenStates.SelectFace;
                    }

                    // Modify
                    if (new Rectangle(528, 316, 76, 32).Contains(Mouse.Location))
                    {
                    }

                    // Keep
                    if (new Rectangle(528, 350, 76, 32).Contains(Mouse.Location))
                    {
                        CurrentState      = CharGenStates.SelectName;
                        CurrentHero.Name  = GetRandomName(CurrentHero.Race, CurrentHero.Gender);
                        Keyboard.KeyDown += new EventHandler <PreviewKeyDownEventArgs>(Keyboard_OnKeyDown);
                    }
                }
            }
            break;
                #endregion

                #region Select name
            case CharGenStates.SelectName:
            {
                // Back
                //if (BackButton.Contains(Mouse.Location) && Mouse.IsNewButtonDown(MouseButtons.Left))
                if (new Rectangle(448, 350, 80, 32).Contains(Mouse.Location) && Mouse.IsNewButtonDown(MouseButtons.Left))
                {
                    CurrentState      = CharGenStates.Confirm;
                    Keyboard.KeyDown -= Keyboard_OnKeyDown;
                }

                // OK
                if (new Rectangle(528, 350, 80, 32).Contains(Mouse.Location) && Mouse.IsNewButtonDown(MouseButtons.Left))
                {
                    Keyboard.KeyDown -= new EventHandler <PreviewKeyDownEventArgs>(Keyboard_OnKeyDown);
                    CurrentState      = CharGenStates.SelectHero;
                }
            }
            break;
                #endregion

                #region Delete hero
            case CharGenStates.Delete:
            {
                if (Mouse.IsNewButtonDown(MouseButtons.Left))
                {
                    // Delete
                    if (new Rectangle(448, 344, 76, 32).Contains(Mouse.Location))
                    {
                        Heroes[HeroID] = null;
                        CurrentState   = CharGenStates.SelectHero;
                    }

                    // Ok
                    if (new Rectangle(528, 344, 76, 32).Contains(Mouse.Location))
                    {
                        CurrentState = CharGenStates.SelectHero;
                    }
                }
            }
            break;
                #endregion
            }

            // Update anim
            if (Anims != null)
            {
                Anims.Update(time);
            }


            // If the team is ready, let's go !
            if (PlayButton.Rectangle.Contains(Mouse.Location) && Mouse.IsNewButtonDown(MouseButtons.Left))            // && IsTeamReadyToPlay)
            {
                PrepareTeam();
                PlayButton.OnSelectEntry();
            }
        }