public BattleSceneTypeResource AddResource()
    {
        BattleSceneTypeResource resource = new BattleSceneTypeResource();

        resources.Add(resource);
        return(resource);
    }
Exemple #2
0
            public ResourceInCycle(BattleSceneTypeResource res, int cycleNumber)
            {
                rnd         = new Random();
                probability = 0;
                amount      = 0;
                resType     = res.ResourceType;
                bpType      = res.BlueprintType;
                anyEnemy    = res.AnyEnemy == 1;

                //Пока что гарантированный дроп падает в тот цикл, который минимален для данного ресурса
                if (res.GuaranteedAmount > 0)
                {
                    if (res.MinimumCycle == cycleNumber)
                    {
                        guaranteedAmount = res.GuaranteedAmount;
                    }
                }


                if (res.AnyEnemy == 0)
                {
                    EnemyId = res.EnemyId;
                }
                else
                {
                    EnemyId = 0;
                }

                if (guaranteedAmount > 0)
                {
                    enemies = new List <StageEnemy>();
                }

                //Это дроп ресурса, который падает с определенной вероятностью
                if (cycleNumber >= res.MinimumCycle && res.AmountFrom > 0 && res.VariableChanceFrom > 0)
                {
                    this.resType = res.ResourceType;
                    this.bpType  = res.BlueprintType;

                    if (res.MaximumCycle <= cycleNumber)
                    {
                        probability = res.VariableChanceTo / 10000;
                        amount      = res.AmountTo;
                    }
                    else
                    {
                        probability = (double)res.VariableChanceFrom / 10000 + (double)(cycleNumber - res.MinimumCycle) / (double)(res.MaximumCycle - res.MinimumCycle) * (double)((res.VariableChanceTo - res.VariableChanceFrom) / 1000);
                        amount      = (double)res.AmountFrom + (double)(cycleNumber - res.MinimumCycle) / (double)(res.MaximumCycle - res.MinimumCycle) * (double)(res.AmountTo - res.AmountFrom);
                    }
                }
            }