public void InitializeSelection(PopulationNode populationNode)
    {
        SelectedPopulationNode = populationNode;

        //TODO: very inefficient!
        List <UnitBase> copiedListOfSpies;
        List <UnitBase> copiedListOfSoldiers;

        copiedListOfSpies          = FilterFactionUnits(SelectedPopulationNode.PresentSpies.ConvertAll(x => (UnitBase)x));
        copiedListOfSoldiers       = FilterFactionUnits(SelectedPopulationNode.PresentSoldiers.ConvertAll(x => (UnitBase)x));
        _ownFactionPresentSpies    = copiedListOfSpies.ConvertAll(x => (SpyUnit)x);
        _ownFactionPresentSoldiers = copiedListOfSoldiers.ConvertAll(x => (SoldierUnit)x);


        _selectionDisplay.FirstUpdate(SelectedPopulationNode.Stats.PopulationNodeName, _ownFactionPresentSoldiers, _ownFactionPresentSpies);

        if (SelectedPopulationNode.Stats.Control != (int)Globals.PlayerFaction)
        {
            _leftPanel.SetActive(true);
            _factionRelations.SetActive(true);

            _declareWarButton.SetActive(true);
            _offerAllianceButton.SetActive(true);
            _askToJoinFederationButton.SetActive(true);
        }
        else
        {
            _leftPanel.SetActive(false);
            _factionRelations.SetActive(false);

            _declareWarButton.SetActive(false);
            _offerAllianceButton.SetActive(false);
            _askToJoinFederationButton.SetActive(false);
        }
    }
    public void InitiateMovement(PopulationNode destination)
    {
        _selectionDisplay.SubmitSelection();
        int spyIndex     = 0;
        int soldierIndex = 0;

        while (spyIndex < _selectionDisplay.SelectedSpies)
        {
            if (!SelectedPopulationNode.PresentSpies[spyIndex].IsSpyBusy())
            {
                SelectedPopulationNode.PresentSpies[spyIndex].InitiateMovement(destination);
            }
            spyIndex++;
        }


        while (soldierIndex < _selectionDisplay.SelectedSoldiers)
        {
            //if (!SelectedPopulationNode.PresentSoldiers[soldierIndex].IsSpyBusy())
            //{
            SelectedPopulationNode.PresentSoldiers[soldierIndex].InitiateMovement(destination);
            //}
            soldierIndex++;
        }

        _selectionDisplay.SelectedSoldiers = 0;

        _selectionDisplay.SelectedSpies = 0;
    }
Example #3
0
    private void OnInitializationCollectControlledPopulationNodes()
    {
        GameObject[] populationNodes = GameObject.FindGameObjectsWithTag("PopulationNode");

        for (int populationNodeIndex = 0; populationNodeIndex < populationNodes.Length; populationNodeIndex++)
        {
            PopulationNode populationNodeStats = populationNodes[populationNodeIndex].GetComponent <PopulationNode>();
            if (populationNodeStats.Stats.Control == (int)FactionId)
            {
                ControlledPopulationNodes.Add(populationNodes[populationNodeIndex]);
            }
        }
    }
Example #4
0
 private void RecruitMilitary(PopulationNode populationNode)
 {
 }
Example #5
0
    private void RecruitSpy(PopulationNode populationNode)
    {
        Debug.Log("Spy recruitment in " + populationNode.Stats.PopulationNodeName + " for faction " + GetCurrentAIFaction().FactionId.ToString());

        populationNode.RecruitSpy(GetCurrentAIFaction().FactionId);
    }
    private void GeneratePopulation()
    {
        int numberOfPopulationNodes = 30;

        switch (Globals.CurrentPopulationSize)
        {
        case Globals.PopulationSizes.Small:
            numberOfPopulationNodes = 30;
            break;

        case Globals.PopulationSizes.Medium:
            numberOfPopulationNodes = 50;
            break;

        case Globals.PopulationSizes.Large:
            numberOfPopulationNodes = 70;
            break;

        default:
            Debug.Log("Invalid population size!");
            numberOfPopulationNodes = 30;
            break;
        }

        PopulationNodeGameObjects = new GameObject[numberOfPopulationNodes];

        Vector2 safeMapSize = Globals.CurrentMapSize;

        safeMapSize.x *= 0.75f;
        safeMapSize.y *= 0.75f;

        Vector3    position = new Vector3(safeMapSize.x / 2, safeMapSize.y / 2, 0);
        Quaternion rotation = new Quaternion(0, 0, 0, 0);

        GameObject populationNodes = new GameObject("populationNodes");

        for (int populationNodeIndex = 0; populationNodeIndex < numberOfPopulationNodes; populationNodeIndex++)
        {
            float chanceOfVillageType = Random.Range(0f, 1f);

            GameObject populationNodeType = chanceOfVillageType < 0.6f ? VillagePrefab : CityPrefab;

            PopulationNodeGameObjects[populationNodeIndex] = Instantiate(populationNodeType, position, rotation);

            PopulationNodeGameObjects[populationNodeIndex].transform.parent = populationNodes.transform;

            PopulationNode populationNode = PopulationNodeGameObjects[populationNodeIndex].GetComponent <PopulationNode>();

            populationNode.Stats.PopulationNodeName = GetPopulationNodeName(Random.Range(0, 11));
            populationNode.Stats.Control            = Random.Range(0, Globals.NumberOfFactions);
            populationNode.Stats.Population         = Random.Range(525, 39550);

            populationNode.Stats.SetFactionSupport((Globals.FactionNames) 0, Random.Range(0f, 1f));
            populationNode.Stats.SetFactionSupport((Globals.FactionNames) 1, Random.Range(0f, 1f));
            populationNode.Stats.SetFactionSupport((Globals.FactionNames) 2, Random.Range(0f, 1f));

            position.x  = Random.Range(0, safeMapSize.x);
            position.x -= safeMapSize.x / 2;
            position.y  = Random.Range(0, safeMapSize.y);
            position.y -= safeMapSize.y / 2;
        }
    }
Example #7
0
 public override void InitiateMovement(PopulationNode destination)
 {
     OrderedToMove = true;
     Destination   = destination;
 }
Example #8
0
 public SpyUnit(PopulationNode location, Globals.FactionNames factionId)
     : base(location, factionId)
 {
 }
Example #9
0
 private void ConquerPopulationNode(PopulationNode target)
 {
     target.Stats.Control = (int)Faction;
 }
 // Use this for initialization
 void Start()
 {
     _populationNode            = GetComponent <PopulationNode>();
     _populationNodeStatDisplay = GetComponentInChildren <TextMesh>();
 }
Example #11
0
 public abstract void InitiateMovement(PopulationNode destination);
Example #12
0
 public UnitBase(PopulationNode location, Globals.FactionNames factionNames)
 {
     CurrentLocation = location;
     Faction         = factionNames;
     CreatedThisTurn = true;
 }