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; }
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]); } } }
private void RecruitMilitary(PopulationNode populationNode) { }
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; } }
public override void InitiateMovement(PopulationNode destination) { OrderedToMove = true; Destination = destination; }
public SpyUnit(PopulationNode location, Globals.FactionNames factionId) : base(location, factionId) { }
private void ConquerPopulationNode(PopulationNode target) { target.Stats.Control = (int)Faction; }
// Use this for initialization void Start() { _populationNode = GetComponent <PopulationNode>(); _populationNodeStatDisplay = GetComponentInChildren <TextMesh>(); }
public abstract void InitiateMovement(PopulationNode destination);
public UnitBase(PopulationNode location, Globals.FactionNames factionNames) { CurrentLocation = location; Faction = factionNames; CreatedThisTurn = true; }