Пример #1
0
    IEnumerator EmitEnergy()
    {
        activeCoroutinesRelatedToEnergy++;
        MissionManager.Mission myMission = mission;
        foreach (Block blocklink in myMission.blocksFound.ToArray())
        {
            for (int i = blocklink.GetConsumption() - blocklink.hiddenPower; i > 0; i--)
            {
                if (myMission.power > 0)
                {
                    GameObject energyFeedback = Instantiate(prefabEmitting);
                    if (!GameManager.instance.DEBUG_MODE)
                    {
                        prefabEmitting.GetComponent <MeshRenderer>().enabled = false;
                        foreach (MeshRenderer mesh in prefabEmitting.GetComponentsInChildren <MeshRenderer>())
                        {
                            mesh.enabled = false;
                        }
                    }
                    energyFeedback.transform.position = blocklink.transform.position;
                    Destroy(energyFeedback, 2);
                    blocklink.AddPower(1);
                    myMission.power--;
                }
            }
        }
        GameManager.instance.missionManager.EndMission(myMission);
        activeCoroutinesRelatedToEnergy--;

        StartCoroutine(EnergyEndVerification());
        yield return(null);
    }
Пример #2
0
    IEnumerator DistributeFood()
    {
        MissionManager.Mission myMission    = mission;
        FoodProvider           foodProvider = GameManager.instance.gridManagement.grid[myMission.position.x, myMission.position.y, myMission.position.z].GetComponent <FoodProvider>();
        float foodLeft = foodProvider.foodTotal;

        foreach (Block blocklink in myMission.blocksFound)
        {
            House house = blocklink.GetComponent <House>();
            house.foodProvidersInRange.Add(foodProvider);
            if (foodLeft > 0)
            {
                if (foodLeft > house.foodConsumption)
                {
                    house.foodReceived = house.foodConsumption;
                    foodLeft          -= house.foodConsumption;
                }
                else
                {
                    house.foodReceived = foodLeft;
                    foodLeft           = 0;
                }
            }
        }
        foodProvider.foodLeft = foodLeft;
        GameManager.instance.systemManager.foodUpdated = true;
        GameManager.instance.missionManager.EndMission(myMission);
        yield return(null);
    }
Пример #3
0
 IEnumerator EmitSpatioportInfluence()
 {
     activeCoroutinesRelatedToSpatioport++;
     MissionManager.Mission myMission = mission;
     foreach (Block b in mission.blocksFound.ToArray())
     {
         if (b != null)
         {
             b.isConsideredDisabled = false;
             b.isLinkedToSpatioport = true;
             if (b.packed)
             {
                 b.UnPack();
                 yield return(new WaitForEndOfFrame());
             }
         }
     }
     GameManager.instance.missionManager.EndMission(myMission);
     activeCoroutinesRelatedToSpatioport--;
     if (activeCoroutinesRelatedToSpatioport <= 0)
     {
         if (GameManager.instance.systemManager != null)
         {
             GameManager.instance.systemManager.UpdateBlocksDisabled();
             GameManager.instance.systemManager.OnCalculEnd();
         }
     }
     yield return(null);
 }
Пример #4
0
    IEnumerator GenerateFireRisks()
    {
        MissionManager.Mission myMission = mission;
        FireRiskGenerator      linkedFG  = GameManager.instance.gridManagement.grid[myMission.position.x, myMission.position.y, myMission.position.z].GetComponent <FireRiskGenerator>();

        for (int i = 1; i < myMission.blocksFound.Count; i++)   //Starts at i = 1 so the block at center isn't affected
        {
            myMission.blocksFound[i].fireRiskPercentage += linkedFG.amountInPercent;
        }
        GameManager.instance.missionManager.EndMission(myMission);
        yield return(null);
    }
Пример #5
0
 public void Reset()
 {
     StopAllCoroutines();
     GameManager.instance.systemManager.UpdateBlocksRequiringPower();
     GameManager.instance.systemManager.UpdateBlocksDisabled();
     GameManager.instance.systemManager.OnCalculEnd();
     activeCoroutinesRelatedToEnergy     = 0;
     activeCoroutinesRelatedToSpatioport = 0;
     mission = null;
     foreach (MissionManager.Mission mission in GameManager.instance.missionManager.missionList.ToArray())
     {
         GameManager.instance.missionManager.EndMission(mission);
     }
 }
Пример #6
0
    IEnumerator EmitOccupators()
    {
        MissionManager.Mission myMission = mission;
        Occupator linkedOccupator        = GameManager.instance.gridManagement.grid[myMission.position.x, myMission.position.y, myMission.position.z].GetComponent <Occupator>();

        lock (myMission.blocksFound)
        {
            foreach (Block blocklink in myMission.blocksFound)
            {
                House house = blocklink.GetComponent <House>();
                house.occupatorsInRange.Add(linkedOccupator);
            }
        }
        GameManager.instance.systemManager.occupatorsUpdated = true;
        GameManager.instance.missionManager.EndMission(myMission);
        yield return(null);
    }
Пример #7
0
    IEnumerator EmitNuisance()
    {
        MissionManager.Mission myMission       = mission;
        NuisanceGenerator      linkedGenerator = GameManager.instance.gridManagement.grid[myMission.position.x, myMission.position.y, myMission.position.z].GetComponent <NuisanceGenerator>();

        for (int i = 0; i < myMission.blocksFound.Count; i++)
        {
            int distanceToCenter = myMission.blockDistanceToCenter[i] + 1;
            if (distanceToCenter > linkedGenerator.amount)
            {
                distanceToCenter = linkedGenerator.amount;                                                            //In case the range is
            }
            myMission.blocksFound[i].UpdateNuisance(linkedGenerator.amount - myMission.blockDistanceToCenter[i] + 1); //+1 because the first block doesn't count
        }
        GameManager.instance.missionManager.EndMission(myMission);
        yield return(null);
    }
Пример #8
0
 IEnumerator Repair()
 {
     MissionManager.Mission myMission = mission;
     for (int i = 1; i < myMission.blocksFound.Count; i++)
     {
         if (myMission.blocksFound[i].states.ContainsKey(State.Damaged))
         {
             Damaged state = myMission.blocksFound[i].states[State.Damaged] as Damaged;
             if (!state.isBeingRepaired)
             {
                 state.StartRepair();
                 break;
             }
         }
     }
     GameManager.instance.missionManager.EndMission(myMission);
     yield return(null);
 }
Пример #9
0
 IEnumerator Repress()
 {
     MissionManager.Mission myMission = mission;
     for (int i = 1; i < myMission.blocksFound.Count; i++)
     {
         if (myMission.blocksFound[i].states.ContainsKey(State.OnRiot))
         {
             OnRiot state = myMission.blocksFound[i].states[State.OnRiot] as OnRiot;
             if (!state.isBeingRepressed)
             {
                 state.StartRepress();
                 break;
             }
         }
     }
     GameManager.instance.missionManager.EndMission(myMission);
     yield return(null);
 }
Пример #10
0
    IEnumerator Extinguish()
    {
        MissionManager.Mission myMission = mission;
        for (int i = 1; i < myMission.blocksFound.Count; i++)
        {
            if (myMission.blocksFound[i].states.ContainsKey(State.OnFire))
            {
                OnFire state = myMission.blocksFound[i].states[State.OnFire] as OnFire;

                if (!state.isBeingExtinguished)
                {
                    state.StartExtinguish();
                    break;
                }
            }
        }
        GameManager.instance.missionManager.EndMission(myMission);
        yield return(null);
    }
Пример #11
0
    public static void Spread(OnFire fire)
    {
        List <Block> fireBlocks = new List <Block>();

        MissionManager.Mission newMission = GameManager.instance.missionManager.PrepareNewMission();
        newMission.position = fire.block.gridCoordinates;
        newMission.callBack = "";
        newMission.range    = 1;

        Block[] blocks = GameManager.instance.missionManager.CheckAdjacentBlocks(fire.block.gridCoordinates, newMission).ToArray();
        GameManager.instance.missionManager.EndMission(newMission);

        foreach (Block block in blocks)
        {
            if (block != null && !block.scheme.fireProof)
            {
                if (block.states.ContainsKey(State.Damaged))
                {
                    Damaged d = (Damaged)block.states[State.Damaged];
                    if (d.lastFireId != fire.id)
                    {
                        if (!block.states.ContainsKey(State.OnFire))
                        {
                            fireBlocks.Add(block);
                        }
                    }
                }
                else
                {
                    if (!block.states.ContainsKey(State.OnFire))
                    {
                        fireBlocks.Add(block);
                    }
                }
            }
        }

        GameManager.instance.StartCoroutine(IgniteBlocks(fireBlocks.ToArray(), fire.id));
    }
Пример #12
0
    public void SetMissionInfo(string missionIdx, MissionManager.Mission mission)
    {
        _missionName = missionIdx;
        StringBuilder stringBuilder = new StringBuilder(missionIdx);

        if (mission._towerType.Equals(""))
        {
            stringBuilder.Append(" Required: " + mission._towerTier + " x " + mission._numOfTower);
        }
        else if (mission._towerType.Equals("Bullet"))
        {
            stringBuilder.Append(" Required: " + mission._towerTier + " " + mission._towerType + " x " + mission._numOfTower);
        }
        else if (mission._towerType.Equals("AOE"))
        {
            stringBuilder.Append(" Required: " + mission._towerTier + " " + mission._towerType + " x " + mission._numOfTower);
        }
        else if (mission._towerType.Equals("Buff"))
        {
            stringBuilder.Append(" Required: " + mission._towerType + " x " + mission._numOfTower);
        }
        else if (mission._towerType.Equals("Slow"))
        {
            stringBuilder.Append(" Required: " + mission._towerType + " x " + mission._numOfTower);
        }
        else if (mission._towerType.Equals("Laser"))
        {
            stringBuilder.Append(" Required: " + mission._towerType + " x " + mission._numOfTower);
        }

        _missionExplanation = stringBuilder.ToString();

        _isCleared  = mission._isCleared;
        _numOfTower = mission._numOfTower;
        _towerTier  = mission._towerTier;
        _towerType  = mission._towerType;
        _reward     = mission._reward;
    }
Пример #13
0
    public override void OnGridUpdate()
    {
        base.OnGridUpdate();
        oldNest = nest;
        nest    = null;

        MissionManager.Mission newMission = GameManager.instance.missionManager.PrepareNewMission();
        newMission.position = block.gridCoordinates;
        newMission.callBack = "";
        newMission.range    = 1;

        Block[] blocks = GameManager.instance.missionManager.CheckAdjacentBlocks(block.gridCoordinates, newMission).ToArray();
        GameManager.instance.missionManager.EndMission(newMission);

        foreach (Block b in blocks)
        {
            Nest n = b.GetComponent <Nest>();
            if (n != null)
            {
                nest = n;
                if (nest != oldNest)
                {
                    nest.Cage();
                }
                break;
            }
        }

        if (oldNest != null && oldNest != nest)
        {
            oldNest.Uncage();
        }
        if (nest == null)
        {
            isEnabled = false;
        }
    }