public override bool IsBuildingBuilt(BuildingRequirements a_Building) { if (a_Building == m_HallMageGuild1.BuildingData.Requirements) { return(m_BuiltBuildings.MageGuild1); } else if (a_Building == m_HallMageGuild2.BuildingData.Requirements) { return(m_BuiltBuildings.MageGuild2); } else if (a_Building == m_HallMageGuild3.BuildingData.Requirements) { return(m_BuiltBuildings.MageGuild3); } else if (a_Building == m_HallMageGuild4.BuildingData.Requirements) { return(m_BuiltBuildings.MageGuild4); } else if (a_Building == m_HallLighthouse.BuildingData.Requirements) { return(m_BuiltBuildings.FactionBuilding1); } else if (a_Building == m_HallBrotherhood.BuildingData.Requirements) { return(m_BuiltBuildings.FactionBuilding2); } else if (a_Building == m_HallStables.BuildingData.Requirements) { return(m_BuiltBuildings.FactionBuilding3); } else { return(base.IsBuildingBuilt(a_Building)); } }
private Dictionary <ResourceType, Dictionary <ResourceType, int> > allHiddenRequirementsCache; // To cache old work public HiddenRequirement() { this.allRequirements = new Dictionary <ResourceType, BuildingRequirements>(); this.allHiddenRequirementsCache = new Dictionary <ResourceType, Dictionary <ResourceType, int> >(); foreach (KeyValuePair <BuildingType, BuildingBlueprint> kvp in BuildingFactory.allBluePrints) { // Go through all the buildings BuildingType bt = kvp.Key; BuildingBlueprint bluePrint = kvp.Value; foreach (IResourceProducer buildingOutput in bluePrint.outputResourceProduction) { // Consider every output to this building ResourceType outputResourceType = buildingOutput.targetResource(); if (!allRequirements.ContainsKey(outputResourceType)) { allRequirements[outputResourceType] = new BuildingRequirements(); } // the inputs to this building are a "hidden" extra requirement to the outputs so count them allRequirements[outputResourceType].merge(bluePrint.inputResourceCosts); } } }
Vector2 PlaceBuilding(Vector3 clickPoint, GameObject gameObject) { var finalPosition = GetNearestPointOnGrid(clickPoint); GO = Instantiate(gameObject, finalPosition, Quaternion.identity, this.transform); buildingRequirements = GO.GetComponent <BuildingRequirements>(); return((Vector2)finalPosition); }
public static void Notice(string ScriptName, BuildingRequirements Requirements) { Log.Notice(ScriptName, "Required resources to build " + Requirements.TypeName + " are:"); foreach (ResourceEnumerator _e in Requirements.ResourceRequirements) { Log.Notice(ScriptName, _e.Resource.Name + " - " + _e.Count); } }
// public ThirdPersonCharacter thirdPersonCharacter; void Awake() { agent = this.GetComponent <NavMeshAgent>(); anim = this.GetComponent <Animator>(); // thirdPersonCharacter = GetComponent<PathController>(); buildingRequirements = GetComponent <BuildingRequirements>(); // sim.SetActive(false); // let's just turn off the rigid body for now }
void FinalizeBuilding(GameObject gameObject) { soundInterface.PlayFinalizeStructureSound(); Cursor.visible = true; Vector3 finalizedPosition; // not to be confused with finalPosition finalizedPosition = GO.transform.position; Quaternion finalizedRotation = GO.transform.rotation; Destroy(GO); finalGO = (GameObject)Instantiate(gameObject, finalizedPosition, finalizedRotation, this.transform); // for preventing the structure changing colors on collider event when we have already set down the building buildingRequirements = finalGO.GetComponent <BuildingRequirements>(); buildingRequirements.structureFinalized = true; start = false; mobileTouchCamera.lockCamera = false; GetComponent <AudioSource>().PlayOneShot(finalizedBuilding, volume); // here we will need some way to trigger build events based on building type, we could use the previous events but those are triggered when we first set the building // and the purpose here is that we don't want to replace the first build stage right away when the player is still dragging the building, but only when they set the building down // which will be another event, so here we will need to trigger an event, and we already have the current build selection type state set above to go by // EventManager.TriggerEvent("House1Finalized"); // what if instead we just simply grab the build component on the object // this way the whole building stages component will contain the different model stages attached to each building object, so we simply drag in the appropriate stages for each game object BuildingStages buildingStages; buildingStages = finalGO.GetComponent <BuildingStages>(); buildingStages.OnFinalizeBuildingEvent(finalizedRotation); EventManager.TriggerEvent("PlacedHouse"); // for sending notification to SimMovementControls }
//Fired when buildingcompleted void CheckBuildingRequirements(Building completedBuilding) { if (buildingState == BuildingState.Locked) { BuildingRequirements requirements = buildingRequirements.FirstOrDefault(br => br != null && br.buildingName == completedBuilding.buildingName && br.level == completedBuilding.level); if (requirements != null && !requirements.completed) { requirements.completed = true; if (!buildingRequirements.Any(t => t.completed == false)) { BuildingUnlock(); } } } }
/// <summary> /// Adds a new building requirement to profile. /// </summary> /// <param name="type">Structure type.</param> /// <param name="level">Structure level.</param> /// <param name="id">Id value.</param> /// <returns></returns> public BuildingData AddBuildingRequirement( BuildingType type, int level, int id = 0) { if (BuildingRequirements.Any(i => i.Type == type)) { return(BuildingRequirements.First(i => i.Type == type)); } var br = new BuildingData(id, type, level); BuildingRequirements.Add(br); return(br); }
// This should probably be moved to some kind of dictionary solution public virtual bool IsBuildingBuilt(BuildingRequirements a_Building) { if (a_Building == m_HallTownHall.BuildingData.Requirements) { return(m_BuiltBuildings.TownHall); } else if (a_Building == m_HallCityHall.BuildingData.Requirements) { return(m_BuiltBuildings.CityHall); } else if (a_Building == m_HallCapitol.BuildingData.Requirements) { return(m_BuiltBuildings.Capitol); } else if (a_Building == m_HallFort.BuildingData.Requirements) { return(m_BuiltBuildings.Fort); } else if (a_Building == m_HallCitadel.BuildingData.Requirements) { return(m_BuiltBuildings.Citadel); } else if (a_Building == m_HallCastle.BuildingData.Requirements) { return(m_BuiltBuildings.Castle); } else if (a_Building == m_HallBlacksmith.BuildingData.Requirements) { return(m_BuiltBuildings.Blacksmith); } else if (a_Building == m_HallMarket.BuildingData.Requirements) { return(m_BuiltBuildings.Market); } else if (a_Building == m_HallSilo.BuildingData.Requirements) { return(m_BuiltBuildings.Silo); } else if (a_Building == m_HallTavern.BuildingData.Requirements) { return(m_BuiltBuildings.Tavern); } else if (a_Building == m_HallDwelling1.BuildingData.Requirements) { return(m_BuiltBuildings.Dwelling1); } else if (a_Building == m_HallDwelling1Up.BuildingData.Requirements) { return(m_BuiltBuildings.Dwelling1Up); } else if (a_Building == m_HallDwelling2.BuildingData.Requirements) { return(m_BuiltBuildings.Dwelling2); } else if (a_Building == m_HallDwelling2Up.BuildingData.Requirements) { return(m_BuiltBuildings.Dwelling2Up); } else if (a_Building == m_HallDwelling3.BuildingData.Requirements) { return(m_BuiltBuildings.Dwelling3); } else if (a_Building == m_HallDwelling3Up.BuildingData.Requirements) { return(m_BuiltBuildings.Dwelling3Up); } else if (a_Building == m_HallDwelling4.BuildingData.Requirements) { return(m_BuiltBuildings.Dwelling4); } else if (a_Building == m_HallDwelling4Up.BuildingData.Requirements) { return(m_BuiltBuildings.Dwelling4Up); } else if (a_Building == m_HallDwelling5.BuildingData.Requirements) { return(m_BuiltBuildings.Dwelling5); } else if (a_Building == m_HallDwelling5Up.BuildingData.Requirements) { return(m_BuiltBuildings.Dwelling5Up); } else if (a_Building == m_HallDwelling6.BuildingData.Requirements) { return(m_BuiltBuildings.Dwelling6); } else if (a_Building == m_HallDwelling6Up.BuildingData.Requirements) { return(m_BuiltBuildings.Dwelling6Up); } else if (a_Building == m_HallDwelling7.BuildingData.Requirements) { return(m_BuiltBuildings.Dwelling7); } else if (a_Building == m_HallDwelling7Up.BuildingData.Requirements) { return(m_BuiltBuildings.Dwelling7Up); } else { return(false); } }