예제 #1
0
    public GameSettings.Player GetGameSettings()
    {
        GameSettings.Player _Player = new GameSettings.Player();

        _Player.IsPlayer      = m_IsPlayer;
        _Player.IsLocalPlayer = m_IsLocalPlayer;
        _Player.Index         = PlayerIndex;
        _Player.SetMapHero    = m_IsHeroRandom;

        if (m_CurrentTownIndex != -1)
        {
            _Player.Faction = m_AvailableTowns[m_CurrentTownIndex];
        }
        else
        {
            _Player.Faction = m_AvailableTowns[Random.Range(0, m_AvailableTowns.Count)];
        }

        if (m_GenerateHeroAtMainTown || m_IsHeroRandom)
        {
            if (m_CurrentHeroIndex != -1)
            {
                _Player.Hero = m_AvailableHeroes[m_CurrentHeroIndex];
            }
            else
            {
                _Player.Hero = HeroPool.GetRandomHero(PlayerIndex, _Player.Faction, true);
                HeroPool.ClaimHero(_Player.Hero);
            }
        }
        else
        {
            _Player.Hero = m_CustomHero;
        }

        if (m_CurrentStartingBonusIndex != -1)
        {
            _Player.StartingBonus = m_StartingBonuses.StartingBonuses[m_CurrentStartingBonusIndex];
        }
        else
        {
            _Player.StartingBonus = m_StartingBonuses.StartingBonuses[Random.Range(0, m_StartingBonuses.StartingBonuses.Count)];
        }

        return(_Player);
    }
예제 #2
0
    public void Initialize(ScenarioObject a_ScenarioObject, GameReferences a_GameReferences)
    {
        PlayerIndex = a_ScenarioObject.Hero.PlayerIndex;

        m_GameReferences = a_GameReferences;

        if (a_ScenarioObject.Template.Name == "avxprsn0")
        {
            IsPrison = true;
        }

        Hero _BaseHero;

        bool _ClaimedMainHero = false;

        if (a_ScenarioObject.Hero.ID != 255)
        {
            _BaseHero = m_Heroes.Heroes.First((a_Hero) => a_Hero.Hero.ID == a_ScenarioObject.Hero.ID).Hero;
        }
        else
        {
            GameSettings.Player _Player = m_GameSettings.Players.First((a_Player) => a_Player.Index == PlayerIndex);

            if (m_GameSettings.Scenario.PlayerInfo[PlayerIndex].IsMainHeroRandom &&
                _Player.SetMapHero)
            {
                _BaseHero          = _Player.Hero;
                _Player.SetMapHero = false;
                _ClaimedMainHero   = true;
            }
            else
            {
                _BaseHero = HeroPool.GetRandomHero(PlayerIndex, m_GameSettings.Players.First((a_Player) => a_Player.Index == PlayerIndex).Faction, true);
            }
        }

        Hero = new Hero();

        Hero.ID             = _BaseHero.ID;
        Hero.Faction        = _BaseHero.Faction;
        Hero.HeroVisualData = _BaseHero.HeroVisualData;

        if (a_ScenarioObject.Hero.Name != "")
        {
            Hero.Name = a_ScenarioObject.Hero.Name;
        }
        else
        {
            Hero.Name = _BaseHero.Name;
        }

        if (a_ScenarioObject.Hero.Portrait != 255)
        {
            Hero _Hero = m_Heroes.Heroes.First((a_Hero) => a_Hero.Hero.ID == a_ScenarioObject.Hero.Portrait).Hero;
            Hero.SmallPortrait = _Hero.SmallPortrait;
            Hero.LargePortrait = _Hero.LargePortrait;
        }
        else
        {
            Hero.SmallPortrait = _BaseHero.SmallPortrait;
            Hero.LargePortrait = _BaseHero.LargePortrait;
        }

        if (a_ScenarioObject.Hero.HasCustomPrimarySkills)
        {
            Hero.Attack     = a_ScenarioObject.Hero.Attack;
            Hero.Defense    = a_ScenarioObject.Hero.Defense;
            Hero.Spellpower = a_ScenarioObject.Hero.Spellpower;
            Hero.Knowledge  = a_ScenarioObject.Hero.Knowledge;
        }
        else
        {
            Hero.Attack     = _BaseHero.Attack;
            Hero.Defense    = _BaseHero.Defense;
            Hero.Spellpower = _BaseHero.Spellpower;
            Hero.Knowledge  = _BaseHero.Knowledge;
        }

        if (!_ClaimedMainHero)
        {
            HeroPool.ClaimHero(Hero);
        }

        m_DynamicObstacle.Initialize(m_GameReferences.Pathfinding, this);

        m_PathfindingPos = new Vector2Int(a_ScenarioObject.PosX - 1, a_ScenarioObject.PosY);

        Initialize();
    }