예제 #1
0
    public static SpaceshipRig RigForBattle(int playerId, int battleId)
    {
        List <int> rigIdsInBattles = new List <int>();
        var        battles         = Battle.BattlesForPlayer(playerId, true);

        foreach (var battle in battles)
        {
            rigIdsInBattles.Add(battle.RigId);
        }
        BattleSceneType     sceneType = BattleSceneType.SceneById(battleId);
        List <SpaceshipRig> rigList   = PlayerRigs(playerId);

        foreach (var rig in rigList)
        {
            if (rig.ForBattleId == battleId)
            {
                return(rig);
            }
            if (sceneType.AssembleShip == 1)
            {
                if (!rigIdsInBattles.Contains(rig.Id))
                {
                    return(rig);
                }
            }
        }
        return(null);
    }
예제 #2
0
    //Public Methods
    public void Init(int turnTime, long[] charOrder, PartyInfo[] partyInf,
                     BattleSceneType battleSceneType, bool bot = false,
                     float bot_ai = 1f)
    {
        DivineDebug.Log("Initing battle info.");

        isBot                  = bot;
        botPower               = bot_ai;
        partyInfoes            = partyInf;
        this.turnTime          = turnTime;
        this.battleSceneType   = battleSceneType;
        charactersTurnOrder_id = charOrder;
    }
예제 #3
0
    /// <summary>
    /// Когда надо продолжить сражение
    /// </summary>
    /// <param name="battle"></param>
    public BattleScene(Battle battle)
    {
        SceneType       = BattleSceneType.SceneById(battle.BattleSceneTypeId);
        CycleToComplete = SceneType.CycleToComplete;

        //Starting with 5 cycles and then add some more
        Cycles = new List <Cycle>();
        for (int i = 1; i <= 20; i++)
        {
            Cycle curCycle = new Cycle(SceneType, i, battle.MaxOpenedCycle, battle.MaxOpenedStage);
            Cycles.Add(curCycle);
        }
    }
예제 #4
0
    public BattleScene(BattleSceneType stype)
    {
        SceneType       = stype;
        CycleToComplete = stype.CycleToComplete;

        //Starting with 5 cycles and then add some more
        Cycles = new List <Cycle>();
        for (int i = 1; i <= 100; i++)
        {
            Cycle curCycle = new Cycle(stype, i, 1, 1);
            Cycles.Add(curCycle);
        }
    }
예제 #5
0
    public BattleScene SelectBattleScene(BattleSceneType battleType)
    {
        if (_currentBattleScene != null)
        {
            _currentBattleScene.FinishIt();
        }

        if (_battleSceneDic.Count == 0)
        {
            AddBattleScenes();
        }

        _currentBattleScene = _battleSceneDic[battleType];
        _currentBattleScene.StartIt(_isTablet);

        return(_currentBattleScene);
    }
예제 #6
0
        public HttpResponseMessage ContinueBattle(int battleSceneId)
        {
            string steamId  = User.Identity.Name;
            int    playerId = PlayerDataSql.PlayerId(steamId);

            Battle      battle  = Battle.BattleByTypeId(playerId, battleSceneId);
            BattleScene tBattle = new BattleScene(BattleSceneType.SceneById(battleSceneId));

            battle.battleScene = new UnityBattleScene(tBattle);
            battle.Rig         = SpaceshipRig.RigById(battle.RigId);

            string serializedElement = JsonConvert.SerializeObject(battle);

            serializedElement = CommonFunctions.Compress(serializedElement);
            var response = new HttpResponseMessage(HttpStatusCode.OK);

            response.Content = new StringContent(serializedElement);
            return(response);
        }
    //Public Methods
    public void Init(List <BtlCtrlCharacter> playerCharacters, List <BtlCtrlCharacter> aiCharacters, string playerName, string aiName,
                     List <long> turns, BattleControllerType type, int turnTime = 0, BattleSceneType sceneType = BattleSceneType.Tutorial_Hell)
    {
        _parties = new BtlCtrlParty[2];

        _parties[0] = new BtlCtrlParty();
        _parties[0].Init(playerCharacters, TeamTypes.Player, playerName);

        _parties[1] = new BtlCtrlParty();
        _parties[1].Init(aiCharacters, TeamTypes.Enemy, aiName);

        ListenToPartiesAndCharactersEvents();

        _turnOrders = turns;
        _turnTime   = turnTime;

        _type = type;

        _sceneType = sceneType;

        _currentState = States.WaitToStartFight;

        _currentTurnIndex = -1;

        _currentActionsStack = new Stack <ActionData>();
        _currentActiveSpells = new List <BtlCtrlSpell>();

        _externalLogic = null;
        SetExternalLogic();

        _secretController = new BtlCtrlSecretController();
        _secretController.Event_ActionGenerated += OnActionGenerated;

        _fakeServer = FakeServer.instance;

        _fakeServer.Event_OnMove      += OnMove;
        _fakeServer.Event_OnReadyCome += OnReadyCome;
    }
예제 #8
0
    /// <summary>
    /// Запуск нового экземпляра сражения
    /// </summary>
    public static Battle CreateBattle(int playerId, int battleSceneId, int rigId, bool forceCreate)
    {
        List <Battle> playerBattles = BattlesForPlayer(playerId, true);
        Battle        curBattle     = new Battle();

        curBattle.PlayerId          = playerId;
        curBattle.Ongoing           = 1;
        curBattle.BattleSceneTypeId = battleSceneId;
        curBattle.RigId             = rigId;
        curBattle.DateStart         = DateTime.Now;
        curBattle.Successfull       = 0;
        curBattle.CurrentCycle      = 1;
        curBattle.CurrentStage      = 1;
        curBattle.MaxOpenedCycle    = 1;
        curBattle.MaxOpenedStage    = 1;
        curBattle.ShipExperience    = 0;
        curBattle.ShipOpenedSkills  = "";
        BattleScene tBattle = new BattleScene(BattleSceneType.SceneById(curBattle.BattleSceneTypeId));

        curBattle.battleScene     = new UnityBattleScene(tBattle);
        curBattle.GainedResources = new PlayerResources();
        curBattle.SaveData();
        return(curBattle);
    }
예제 #9
0
 /// <summary>
 /// Отключено, потому что вся необходимая информация должна быть упакована в объект конкретной боевой сцены
 /// </summary>
 private void LoadBattleSceneTypes()
 {
     battleSceneTypes = BattleSceneType.SceneList();
 }
예제 #10
0
        public Cycle(BattleSceneType stype, int cycleNumber, int maxOpenedCycle, int maxOpenedStage)
        {
            Random rnd = new Random();

            crList = new List <ResourceInCycle>();
            if (cycleNumber >= maxOpenedCycle)
            {
                foreach (BattleSceneTypeResource res in stype.resources)
                {
                    ResourceInCycle curRc = new ResourceInCycle(res, cycleNumber);
                    if (curRc.CanBeUsed)
                    {
                        crList.Add(curRc);
                    }
                }
            }


            Stages = new List <Stage>();
            Number = cycleNumber;
            foreach (var enemy in stype.enemies)
            {
                if (enemy.CycleFrom <= Number && enemy.CycleTo >= Number)
                {
                    bool enemyLoaded = false;
                    if (Stages.Count > 0)
                    {
                        foreach (var stage in Stages)
                        {
                            bool processResources = false;
                            if (cycleNumber >= maxOpenedCycle)
                            {
                                processResources = true;
                            }
                            else if (cycleNumber == maxOpenedCycle && stage.StageNumber >= maxOpenedStage)
                            {
                                processResources = true;
                            }
                            if (stage.StageNumber == enemy.StageNumber)
                            {
                                stage.AddEnemy(enemy, processResources);
                                enemyLoaded = true;
                                break;
                            }
                        }
                    }
                    if (!enemyLoaded)
                    {
                        bool processResources = false;
                        if (cycleNumber >= maxOpenedCycle)
                        {
                            processResources = true;
                        }
                        else if (cycleNumber == maxOpenedCycle && enemy.StageNumber >= maxOpenedStage)
                        {
                            processResources = true;
                        }
                        Stages.Add(new Stage(enemy, cycleNumber, crList, stype, processResources));
                    }
                }
            }

            foreach (var res in crList)
            {
                res.ProcessGuaranteedAmount();
            }
        }
예제 #11
0
 public Stage(BattleSceneTypeEnemy enemy, int cycleNumber, List <Cycle.ResourceInCycle> cr, BattleSceneType stype, bool processResources)
 {
     Enemy       = new List <StageEnemy>();
     StageNumber = enemy.StageNumber;
     CycleNumber = cycleNumber;
     Cr          = cr;
     AddEnemy(enemy, processResources);
 }