示例#1
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);
    }
示例#2
0
 public static void SShowSettler(Guid id)
 {
     if (s_instance != null)
     {
         s_instance.ShowSettler(M_SettlersManager.SGetSettler(id));
     }
 }
示例#3
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();
 }
示例#4
0
    public void ShowEmployScreen()
    {
        m_employee = null;
        employButton.gameObject.SetActive(false);
        m_settlersAvailable = 0;
        int i;

        for (i = 0; i < container.transform.childCount; i++)
        {
            GameObject.Destroy(container.transform.GetChild(i).gameObject);
        }
        List <ISettler> settlers = M_SettlersManager.SGetSettlers();

        i = 0;
        foreach (Settler s in settlers)
        {
            if (s.GetWorkplace() == Guid.Empty)
            {
                m_settlersAvailable++;
                GameObject temp = Instantiate(settlerUIprefab);
                temp.transform.SetParent(container.transform);
                temp.GetComponent <UI_ElemSettlerEmploy>().Setup(s, settlerScreen);
                RectTransform rectTransform = temp.GetComponent <RectTransform>();
                float         yOffset       = container.GetComponent <RectTransform>().rect.height / 2 - rectTransform.rect.height / 2;
                rectTransform.localPosition = new Vector3(0, yOffset - rectTransform.rect.height * i, 0);
                i++;
            }
        }
        settlersCount.text = m_settlersAvailable.ToString();

        M_ScreenManager.SChangeScreenPersistentBack(this.gameObject);
    }
示例#5
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;
        }
    }
示例#6
0
 public void TriggerDay(int day)
 {
     if (m_assignedSettler != Guid.Empty)
     {
         m_moodOnThisBuilding = M_SettlersManager.SGetMoodFavBuilding(m_assignedSettler);
     }
 }
示例#7
0
    public void Setup(ISettler settler, GameObject settlerScreen)
    {
        if (settler == null)
        {
            Debug.LogWarning("Settler cannot be null!");
            return;
        }
        else if (settlerScreen == null)
        {
            Debug.LogWarning("SettlerScreen cannot be null!");
            return;
        }

        if (s_count % 2 == 0)
        {
            gameObject.GetComponent <Image>().color = backgroundAColor;
            m_baseColor = backgroundAColor;
        }
        else
        {
            gameObject.GetComponent <Image>().color = backgroundBColor;
            m_baseColor = backgroundBColor;
        }


        m_settler = settler;
        name.text = settler.GetName();

        settlerPortrait.sprite = M_SettlersManager.SGetPortrait(settler.GetPortraitId());
        m_settlerScreen        = settlerScreen;

        s_count++;
    }
示例#8
0
    public void Setup(Settler settler, GameObject settlerScreen)
    {
        if (settler == null)
        {
            Debug.LogWarning("Settler cannot be null!");
            return;
        }
        else if (settlerScreen == null)
        {
            Debug.LogWarning("SettlerScreen cannot be null!");
            return;
        }

        if (s_count % 2 == 0)
        {
            gameObject.GetComponent <Image>().color = backgroundAColor;
            m_baseColor = backgroundAColor;
        }
        else
        {
            gameObject.GetComponent <Image>().color = backgroundBColor;
            m_baseColor = backgroundBColor;
        }


        m_settler = settler;
        name.text = settler.GetName();
        settlerPortrait.sprite = M_SettlersManager.SGetPortrait(settler.GetPortraitId());
        m_settlerScreen        = settlerScreen;
        infoButton.onClick.AddListener(OnClickInfo);
        employButton.onClick.AddListener(OnClickEmploy);
        deemployButton.onClick.AddListener(OnClickDeemploy);

        s_count++;
    }
示例#9
0
    private void RefreshUI()
    {
        buildingName.text = m_currentBuilding.GetName();
        buildingDesc.text = m_currentBuilding.GetDesc();

        if (m_currentBuilding is IBuildingProduction)
        {
            IBuildingProduction prod = (IBuildingProduction)m_currentBuilding;
            foodPerDay.text     = string.Format(FORMAT_PER_DAY, prod.GetProducedFood());
            researchPerDay.text = string.Format(FORMAT_PER_DAY, prod.GetProducedResearch());
            if (prod.GetWorker() != Guid.Empty)
            {
                workerImage.sprite = M_SettlersManager.SGetPortraitOfSettler(prod.GetWorker());
                workerName.text    = M_SettlersManager.SGetNameOfSettler(prod.GetWorker());

                employButton.gameObject.SetActive(false);
                removeButton.gameObject.SetActive(true);
                infoButtonProd.gameObject.SetActive(true);
            }
            else
            {
                workerImage.sprite = defaultWorkerImg;
                workerName.text    = "None";

                employButton.gameObject.SetActive(true);
                removeButton.gameObject.SetActive(false);
                infoButtonProd.gameObject.SetActive(false);
            }
        }
    }
示例#10
0
 public static void SShowSettlers()
 {
     if (s_instance == null)
     {
         return;
     }
     s_instance.ShowSettlers(M_SettlersManager.SGetSettlers());
 }
示例#11
0
 public static void SShowSettlers(List <Guid> settlers)
 {
     if (s_instance == null)
     {
         return;
     }
     s_instance.ShowSettlers(M_SettlersManager.SGetSettlers(settlers));
 }
示例#12
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();
    }
示例#13
0
    private void ActionOnBuildingFinished(IBuilding building)
    {
        if (building is IBuildingHouse)
        {
            IBuildingHouse house = ((IBuildingHouse)building);
            int            count = house.GetProvidedSettlers();

            for (int i = 0; i < count; i++)
            {
                house.AssignSettler(M_SettlersManager.SCreateSettler(house.GetId()));
            }
        }
    }
示例#14
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();
    }
示例#15
0
    public void Setup(ISettler settler, GameObject settlerScreen)
    {
        if (s_counter % 2 == 0)
        {
            gameObject.GetComponent <Image>().color = colorRowA;
        }
        else
        {
            gameObject.GetComponent <Image>().color = colorRowB;
        }

        m_settler        = settler;
        m_settlerScreen  = settlerScreen;
        name.text        = settler.GetName();
        moodSlider.value = settler.GetMood();

        settlerPortrait.sprite = M_SettlersManager.SGetPortrait(settler.GetPortraitId());
        infoButton.onClick.AddListener(OnClickInfo);

        s_counter++;
    }
示例#16
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();
    }
示例#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();
    }
示例#18
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);
    }