Esempio n. 1
0
 public void OnClickHome()
 {
     if (m_settler.GetHouse() != null)
     {
         UI_ScreenBuilding.SShowStats(M_BuildingManager.SGetBuilding(m_settler.GetHouse()));
     }
 }
Esempio n. 2
0
    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);
    }
Esempio n. 3
0
    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;
            }
        }
    }
Esempio n. 4
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;
        }
    }
Esempio n. 5
0
 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();
 }
Esempio n. 6
0
    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);
    }
Esempio n. 7
0
    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;
                    }
                }
            }
        });
    }
Esempio n. 8
0
    /// <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();
    }
Esempio n. 9
0
    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();
    }
Esempio n. 10
0
    /// <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);
    }
Esempio n. 11
0
    /// <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());
    }
Esempio n. 12
0
    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;
        }
    }
Esempio n. 13
0
    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]);
    }
Esempio n. 14
0
    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();
    }
Esempio n. 15
0
    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);
    }
Esempio n. 16
0
    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;
            }
        }
    }
Esempio n. 17
0
    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();
    }
Esempio n. 18
0
 public void OnClickCancelBuilding()
 {
     M_BuildingManager.SQuitBuilding();
 }
Esempio n. 19
0
    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);
    }
Esempio n. 20
0
 public void OnClickBuild()
 {
     M_ScreenManager.SHideScreen();
     M_BuildingManager.SStartBuilding(buildingData);
 }