Пример #1
0
    private void StartFight()
    {
        PlayerResources playerResources = Global.Instance.Player.Resources;
        MissionData     md = MissionsConfig.Instance.GetPlanet(EPlanetKey.PlanetA).GetMission(EMissionKey.PlanetA_Test1);

        if (playerResources.Fuel < md.FuelWinCost || playerResources.Fuel < md.FuelLoseCost ||
            playerResources.Credits < md.CreditsWinCost || playerResources.Credits < md.CreditsLoseCost ||
            playerResources.Minerals < md.MineralsWinCost || playerResources.Minerals < md.MineralsLoseCost)
        {
            Debug.LogWarning("Not enough resources");
            return;
        }

        BaseSoldier[] soldiers = new BaseSoldier[_hiredUnits.Count];
        for (int i = 0; i < soldiers.Length; i++)
        {
            soldiers[i] = new BaseSoldier(UnitsConfig.Instance.GetSoldierData(_hiredUnits[i]), Global.Instance.Player.City.GetSoldierUpgradesInfo(_hiredUnits[i]).Level);
        }

        Global.Instance.CurrentMission.PlanetKey        = EPlanetKey.PlanetA;
        Global.Instance.CurrentMission.MissionKey       = EMissionKey.PlanetA_Test1;
        Global.Instance.CurrentMission.SelectedSoldiers = new ArrayRO <BaseSoldier>(soldiers);

        FightManager.Setup(EFightMode.Campaign, MissionsConfig.Instance.GetPlanet(Global.Instance.CurrentMission.PlanetKey).GetMission(Global.Instance.CurrentMission.MissionKey));
        Application.LoadLevel("Fight");
    }
    private void OnBtnPlayClick()
    {
        List <BaseSoldier> soldiers = new List <BaseSoldier>();

        for (int i = 0; i < _hiredSoldiers.Length; i++)
        {
            if (_hiredSoldiers[i] >= 0)
            {
                soldiers.Add(new BaseSoldier(_availableSoldiers[_hiredSoldiers[i]], Global.Instance.Player.City.GetSoldierUpgradesInfo(_availableSoldiers[_hiredSoldiers[i]].Key).Level));
            }
        }
        Global.Instance.CurrentMission.SelectedSoldiers = new ArrayRO <BaseSoldier>(soldiers.ToArray());

        //setup random units and map
        EUnitKey[] availableUnits = new EUnitKey[] { EUnitKey.Scout, EUnitKey.Trooper, EUnitKey.Jawa_1 };
        string[]   availableMaps  = new string[] { "battle1_forest_1", "battle1_forest_2" };

        EUnitKey[] units = new EUnitKey[Random.Range(1, 6)];
        units[0] = EUnitKey.Hero_Sniper;
        for (int i = 1; i < units.Length; i++)
        {
            units[i] = availableUnits[Random.Range(0, availableUnits.Length)];
        }

        MissionMapData mmd = new MissionMapData(units, availableMaps[Random.Range(0, availableMaps.Length)]);
        MissionData    md  = new MissionData(EMissionKey.None, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, new MissionMapData[] { mmd });

        FightManager.Setup(EFightMode.PvP, md);

        LoadingScreen.Instance.Show();
        LoadingScreen.Instance.SetProgress(0f);
        Application.LoadLevel("Fight");
    }
    //private void UpdateSoldiersHireAvailability() {
    //    int totalLeadershop = Global.Instance.Player.Heroes.Current.Leadership;
    //    for (int i = 0; i < _availableSoldiersInfo.Length; i++) {
    //        _availableSoldiersInfo[i].LblLeadershipCost.color = _leadershipSpent + _availableSoldiers[i].LeadershipCost > totalLeadershop ? Color.red : Color.white;
    //    }
    //}

    #endregion

    #region hire/dismiss
    //private void HireSoldier(int unitIndex) {
    //    if (_leadershipSpent + _availableSoldiers[unitIndex].LeadershipCost > Global.Instance.Player.Heroes.Current.Leadership)
    //    {
    //        return;
    //    }

    //    for (int i = 0; i < _hiredSoldiers.Length; i++)
    //    {
    //        if (_hiredSoldiers[i] < 0)
    //        {
    //            _hiredSoldiers[i] = unitIndex;
    //            _hiredSoldiersButtons[i].image.sprite = _availableSoldiersInfo[unitIndex].Button.image.sprite;
    //            _hiredSoldiersButtons[i].image.enabled = true;
    //            break;
    //        }
    //    }

    //    UpdateLeadership();
    //    UpdateSoldiersHireAvailability();
    //}

    //private void DismissSoldier(int unitIndex) {
    //    for (int i = unitIndex; i < _hiredSoldiers.Length - 1; i++) {
    //        _hiredSoldiers[i] = _hiredSoldiers[i + 1];

    //        _hiredSoldiersButtons[i].image.sprite = _hiredSoldiersButtons[i + 1].image.sprite;
    //        _hiredSoldiersButtons[i].image.enabled = _hiredSoldiersButtons[i].image.sprite != null;
    //    }

    //    _hiredSoldiers[_hiredSoldiers.Length - 1] = -1;
    //    _hiredSoldiersButtons[_hiredSoldiersButtons.Length - 1].image.sprite = null;
    //    _hiredSoldiersButtons[_hiredSoldiersButtons.Length - 1].image.enabled = false;

    //    UpdateLeadership();
    //    UpdateSoldiersHireAvailability();
    //}

    #endregion

    #region button listeners
    private void OnBtnPlayClick()
    {
        Global.Instance.CurrentMission.PlanetKey  = _planetKey;
        Global.Instance.CurrentMission.MissionKey = _missionKey;

        _slotManager.SaveHiredSoldiers();
        LoadingScreen.Instance.Show();
        LoadingScreen.Instance.SetProgress(0f);

        FightManager.Setup(EFightMode.Campaign,
                           MissionsConfig.Instance.GetPlanet(Global.Instance.CurrentMission.PlanetKey).GetMission(Global.Instance.CurrentMission.MissionKey));
        Application.LoadLevel(GameConstants.Scenes.FIGHT);
    }