public void OnClickHome() { if (m_settler.GetHouse() != null) { UI_ScreenBuilding.SShowStats(M_BuildingManager.SGetBuilding(m_settler.GetHouse())); } }
public bool Load(string name) { string filename = Application.persistentDataPath + DIRECTORY; if (!Directory.Exists(filename)) { Directory.CreateDirectory(filename); return(false); } filename += ("/" + name); if (!File.Exists(filename)) { Debug.LogWarning("File doesn't exsist!"); return(false); } BinaryFormatter formatter = GetBinaryFormatter(); FileStream stream = new FileStream(filename, FileMode.Open); SAV_Game gameSav = formatter.Deserialize(stream) as SAV_Game; // Apply data M_BuildingManager.SAddBuildings(gameSav.GetBuildings()); M_SettlersManager.SAddSettlers(gameSav.settlers); M_InGameResourcesManager.SApplySavedData(gameSav.resources); return(true); }
private void CheckFavoriteBuildings() { if (m_favoriteBuildings == null) { return; } int templId = 0; if (m_workplace != Guid.Empty) { templId = M_BuildingManager.SGetTemplIdFromBuilding(m_workplace); } for (int i = 0; i < m_favoriteBuildings.Count; i++) { FavoriteBuilding fav = m_favoriteBuildings[i]; if (!fav.active && fav.buildingTemplId == templId) { fav.active = true; fav.currentDays = 0; fav.currentMood = 0; } else if (fav.active && fav.buildingTemplId != templId) { fav.active = false; fav.currentMood = 0; } } }
public void Update() { // game time handling if (m_data == null) { return; } m_data.m_timeElapsed += Time.deltaTime; if (m_data.m_timeElapsed > m_data.secondsPerDay) { m_data.days++; if (m_data.days % m_data.daysPerMonth == 0) { M_SettlersManager.STriggerMonth(m_data.days / m_data.daysPerMonth); M_BuildingManager.STriggerMonth(m_data.days / m_data.daysPerMonth); } if (m_data.days > m_data.daysPerMonth * m_data.monthsPerSeason * 4 && m_data.year < m_data.maxYears) { m_data.year++; m_data.days = 0; M_BuildingManager.STriggerYear(m_data.year); } M_SettlersManager.STriggerDay(m_data.days); M_BuildingManager.STriggerDay(m_data.days); m_dayText.text = m_data.days.ToString(); m_data.m_timeElapsed -= m_data.secondsPerDay; } }
public void OnOpen() { settlersText.text = M_SettlersManager.SGetSettlersCount().ToString(); upkeepText.text = M_SettlersManager.SGetUpkeep().ToString(); foodText.text = M_BuildingManager.SGetFoodPerDay().ToString(); researchText.text = M_BuildingManager.SGetResearchPerDay().ToString(); }
private void Start() { if (inputFood == null || inputResearch == null) { Debug.LogWarning("Component hasn't been fully initialized!"); } List <GameObject> rows = new List <GameObject>(); int i = 0; List <DAT_Building> buildings = M_BuildingManager.SGetBuildingsTemplates().GetBuildings(); foreach (DAT_Building building in buildings) { GameObject temp = Instantiate(elemBuilding); //temp.GetComponent<UI_DevElemBuilding>().Setup(building); if (i % 2 == 0) { temp.GetComponent <Image>().color = elemBgColorA; } else { temp.GetComponent <Image>().color = elemBgColorB; } rows.Add(temp); i++; } GUIUtils.AddElementsToCleanYScrollContainer(container, rows); }
public void UpdatePerDay() { m_graphBuildings.Foreach((UT_Node <BuildingStats> node) => { node.GetData().overallMood = 0; node.GetData().availability = 0; node.GetData().createdInstances = 0; }); List <IBuilding> buildings = M_BuildingManager.SGetBuildings(); foreach (IBuilding building in buildings) { if (building is IBuildingHouse) { GetNode(building.GetData().id).GetData().createdInstances++; continue; } if (!(building is IBuildingProduction)) { continue; } IBuildingProduction prod = (IBuildingProduction)building; UT_Node <BuildingStats> node = GetNode(building.GetData().id); node.GetData().overallMood += prod.GetMood(); node.GetData().createdInstances++; if (prod.IsWorking()) { M_WaresManager.SAddProductiveBuilding(prod.GetId(), prod.GetProducedWareType()); } else { M_WaresManager.SRemoveProductiveBuilding(prod.GetId(), prod.GetProducedWareType()); } } m_graphBuildings.Foreach((UT_Node <BuildingStats> node) => { BuildingStats stats = node.GetData(); foreach (DAT_Building.BuildDependency dep in stats.data.dependencies) { if (stats.overallMood > dep.requiredMood) { UT_Node <BuildingStats> tempNode = GetNode(dep.unlocksBuilding); tempNode.GetData().availability += 1; if (tempNode.GetData().availability == tempNode.GetAdjacent().Count && m_currentBuildingsLevel < tempNode.GetData().buildingLevel) { m_currentBuildingsLevel = tempNode.GetData().buildingLevel; } } } }); }
/// <summary>[SetInInspector] </summary> public void OnRemoveButtonClick() { if (!(m_currentBuilding is IBuildingProduction)) { Debug.LogWarning("Building is not a production one."); return; } Guid settler = M_BuildingManager.SRemoveSettler(m_currentBuilding.GetId()); M_SettlersManager.SRemoveWorkplace(settler); RefreshUI(); }
public static void AssignWorker(Guid settler) { if (s_instance == null) { return; } M_BuildingManager.SRemoveSettler(settler); M_SettlersManager.SAssignWorkplace(settler, s_instance.m_currentBuilding.GetId()); M_BuildingManager.SAssignSettler(s_instance.m_currentBuilding.GetId(), settler); s_instance.RefreshUI(); }
/// <summary> Function called when Building is supposed to be placed. </summary> private void OnBuildingBuildIconClick() { // check whether the place is not occupied. foreach (Tile tile in m_tilesHighlighted) { if (tile.IsOccupied()) { return; } } UT_Pair <int, int> cost = M_BuildingManager.SGetBuildingCost(m_tempBuildingComp.GetData().id); // Apply cost to the resources M_InGameResourcesManager.SAddFood(-cost.first); M_InGameResourcesManager.SAddResearch(-cost.second); // Mark highlighted tiles as occupied foreach (Tile tile in m_tilesHighlighted) { tile.SetOccupied(true); tile.Highlight(false); } // set final building position Vector3 pos = m_currentMiddleTile.transform.position; pos.y = M_MapManager.SGetYDepthValue(pos.z); m_tempBuildingObj.transform.position = pos; // Move to the BUILDINGS group M_GameHelper.AddToGroup(m_tempBuildingObj, M_GameHelper.Group.BUILDINGS); m_tempBuildingComp.SetActionOnBuildingFinished(ActionOnBuildingFinished); // Start in-game building process m_tempBuildingComp.StartBuilding(); m_onBuildingPlacedAction(m_tempBuildingComp); // reset values m_tempBuildingObj.GetComponent <IBuilding>().GetBuildButton().SetActive(false); m_tempBuildingObj = null; m_tempBuildingComp = null; m_currentMiddleTile = null; m_tilesHighlighted.Clear(); M_MiscManager.ShowCancelButton(false); }
/// <summary> Creates a new settler </summary> /// <returns>Guid of a new settler</returns> public Guid CreateSettler(Guid houseId) { Settler settler = new Settler(houseId); settler.SetName(GetRandName()); settler.SetPortrait(GetRandPortrait()); List <FavoriteBuilding> favoriteBuildings = new List <FavoriteBuilding>(); List <FavoriteWare> favoriteWares = new List <FavoriteWare>(); int FAVORITE_BUILDINGS = 3; int FAVORITE_WARES = 3; M_BuildingManager.SEnableUniqueRandomizing(FAVORITE_BUILDINGS); for (int i = 0; i < FAVORITE_BUILDINGS; i++) { FavoriteBuilding temp = new FavoriteBuilding(); temp.maxMood = 20; temp.buildingTemplId = M_BuildingManager.SGetRandProductionBuildingTempl(); temp.active = false; favoriteBuildings.Add(temp); } M_WaresManager.SEnableUniqueWareRandomizing(FAVORITE_WARES); for (int i = 0; i < FAVORITE_WARES; i++) { FavoriteWare temp = new FavoriteWare(); temp.mood = UnityEngine.Random.Range(10, 21);; temp.ware = M_WaresManager.SGetRandWare(); temp.active = false; favoriteWares.Add(temp); } settler.SetFavoriteBuildings(favoriteBuildings); settler.SetFavortiteWares(favoriteWares); m_settlers.Add(settler); Debug.Log("CreateSettler id: " + settler.GetId()); return(settler.GetId()); }
public void Setup(DAT_Building data) { buildingData = data; buildingName.text = data.name; UT_Pair <int, int> cost = M_BuildingManager.SGetBuildingCost(data.id); requiredFood = cost.first; requiredResearch = cost.second; if (data != null && requiredFood <= M_InGameResourcesManager.GetFood() && requiredResearch <= M_InGameResourcesManager.GetResearchPoints()) { buildButton.interactable = true; buildButton.image.color = Color.green; } else { buildButton.interactable = false; buildButton.image.color = Color.red; } }
public DAT_Ware.Type GetRandWare() { List <DAT_Ware.Type> wares = M_BuildingManager.SGetAvailableWares(); int count = wares.Count; int val = UnityEngine.Random.Range(1, count); if (s_randomized.Count < s_uniqueRandomizingTimes) { while (s_randomized.Contains(val)) { val++; if (val >= count) { val = 1; } } s_randomized.Add(val); } return(wares[val]); }
public void Save(string name) { string filename = Application.persistentDataPath + DIRECTORY; if (!Directory.Exists(filename)) { Directory.CreateDirectory(filename); } filename += ("/" + name); Debug.Log("Saving game... " + filename); BinaryFormatter formatter = GetBinaryFormatter(); FileStream stream = new FileStream(filename, FileMode.Create); SAV_Game gameSav = new SAV_Game(M_BuildingManager.SGetBuildings(), M_SettlersManager.SGetSettlers(), new SAV_InGameResources(M_InGameResourcesManager.SGetData())); formatter.Serialize(stream, gameSav); stream.Close(); }
public void OnOpen() { if (M_BuildingManager.IsBuildingStarted()) { M_BuildingManager.SQuitBuilding(); } List <DAT_Building> buildings = M_BuildingManager.SGetAvailableBuildings(); List <GameObject> rows = new List <GameObject>(); int i = 0; foreach (DAT_Building building in buildings) { GameObject temp = Instantiate(elemPrefab); temp.GetComponent <UI_ElemBuilding>().Setup(building); if (i % 2 == 0) { temp.GetComponent <Image>().color = elemBgColorA; } else { temp.GetComponent <Image>().color = elemBgColorB; } i++; rows.Add(temp); } GUIUtils.AddElementsToCleanYScrollContainer(container, rows); foreach (UI_ElemBuilding elem in container.transform.GetComponentsInChildren <UI_ElemBuilding>()) { elem.Setup(); } buildingDesc.SetActive(false); }
public void Setup() { if (buildingData != null) { UT_Pair <int, int> cost = M_BuildingManager.SGetBuildingCost(buildingData.id); requiredFood = cost.first; requiredResearch = cost.second; foodText.text = requiredFood.ToString(); researchText.text = requiredResearch.ToString(); if (buildingData != null && requiredFood <= M_InGameResourcesManager.GetFood() && requiredResearch <= M_InGameResourcesManager.GetResearchPoints()) { buildButton.interactable = true; buildButton.image.color = Color.green; } else { buildButton.interactable = false; buildButton.image.color = Color.red; } } }
void Start() { Debug.Log("GameHelper -> Start()"); s_instance = this; m_camController = Camera.main.GetComponent <CameraController>(); if (m_camController == null) { Debug.LogWarning("Couldn't get CameraController from Camera.main!"); } if (dayText == null || foodText == null || researchText == null) { Debug.LogWarning("One of the TMP_Text objects is not initialized."); } else { m_resourcesManager = M_InGameResourcesManager.GetInstance(foodText, dayText, researchText); } m_buildingManager = M_BuildingManager.Instance; m_mapManager = M_MapManager.Instance; m_settlersManager = M_SettlersManager.Instance; m_inputManager = M_InputManager.Instance; m_waresManager = M_WaresManager.Instance; m_saveManager = M_SaveManager.Instance; // Load level GameObject menuManager = GameObject.FindGameObjectWithTag("MenuManager"); if (menuManager != null) { SceneLoader sceneLoader = menuManager.GetComponent <SceneLoader>(); if (sceneLoader != null) { if (sceneLoader.gameData == null) { LoadLevel(defaultGameData); } else { LoadLevel(sceneLoader.gameData); } if (sceneLoader.saveId > 0) { LoadSave(sceneLoader.saveId); } } else { Debug.LogWarning("Cannot find " + typeof(SceneLoader).Name + " component!"); } } else { // Only if we started from Game scene, because MenuManager hasn't been initialized. if (defaultGameData != null) { Debug.LogWarning("Loading using default data ."); LoadLevel(defaultGameData); } else { Debug.LogWarning("Couldn't find either MenuManager or default DAT_Game!"); } } ResumeGame(); }
public void OnClickCancelBuilding() { M_BuildingManager.SQuitBuilding(); }
public void ShowSettler(ISettler settler) { if (settler == null) { Debug.LogWarning(typeof(ISettler).Name + " cannot be null!"); M_ScreenManager.SPreviousScreen(); return; } m_settler = settler; settlerName.text = settler.GetName(); settlerUpkeep.text = settler.GetUpkeep().ToString(); settlerMood.value = settler.GetMood(); moodValue.text = string.Format("{0}%", settler.GetMood()); // Preferences List <GameObject> favBuildings = new List <GameObject>(); foreach (FavoriteBuilding favoriteBuilding in settler.GetFavoriteBuildings()) { GameObject obj = Instantiate(favoriteThingRowElementPrefab); if (favoriteBuilding.active) { obj.GetComponent <Image>().color = elemBgHighlightColor; } obj.GetComponentInChildren <TMP_Text>().text = M_BuildingManager.SGetDatBuilding(favoriteBuilding.buildingTemplId).name; obj.GetComponentInChildren <Slider>().value = favoriteBuilding.maxMood; favBuildings.Add(obj); } List <GameObject> favWares = new List <GameObject>(); foreach (FavoriteWare favoriteWare in settler.GetFavoriteWares()) { GameObject obj = Instantiate(favoriteThingRowElementPrefab); if (favoriteWare.active) { obj.GetComponent <Image>().color = elemBgHighlightColor; } obj.GetComponentInChildren <TMP_Text>().text = favoriteWare.ware.ToString(); obj.GetComponentInChildren <Slider>().value = favoriteWare.mood; favWares.Add(obj); } GUIUtils.AddElementsToCleanYScrollContainer(favoriteBuildingsContainer, favBuildings); GUIUtils.AddElementsToCleanYScrollContainer(favoriteWaresContainer, favWares); preferencesSubPage.SetActive(false); settlerPortrait.sprite = M_SettlersManager.SGetPortrait(settler.GetPortraitId()); if (settler.GetWorkplace() != System.Guid.Empty) { workplaceButton.image.sprite = M_BuildingManager.SGetBuilding(settler.GetWorkplace()).GetIcon(); } else { workplaceButton.image.sprite = spriteWhenNoWorkplace; } if (settler.GetHouse() != System.Guid.Empty) { homeButton.image.sprite = M_BuildingManager.SGetBuilding(settler.GetHouse()).GetIcon(); } else { homeButton.image.sprite = spriteWhenNoWorkplace; } M_ScreenManager.SChangeScreenPersistentBack(this.gameObject); }
public void OnClickBuild() { M_ScreenManager.SHideScreen(); M_BuildingManager.SStartBuilding(buildingData); }