public void DigButton()
 {
     if (observingSurface == null)
     {
         SelfShutOff();
         return;
     }
     else
     {
         CleanSite cs = observingSurface.worksite as CleanSite;
         if (cs == null)
         {
             cs = observingSurface.gameObject.AddComponent <CleanSite>();
             cs.Set(observingSurface, true);
             UIController.current.ShowWorksite(cs);
         }
         else
         {
             if (cs.diggingMission)
             {
                 cs.StopWork();
             }
         }
         StatusUpdate(); timer = STATUS_UPDATE_TIME;
     }
 }
 void SetActionPanelStatus(bool working)
 {
     if (observingSurface == null)
     {
         SelfShutOff();
         return;
     }
     buildButton.gameObject.SetActive(working);
     digButton.gameObject.SetActive(working);
     gatherButton.gameObject.SetActive(working);
     if (working)
     {
         CheckGatherButton();
         if (observingSurface.host.IsStructure())
         {
             digButton.transform.GetChild(0).GetComponent <Text>().text = Localization.GetWord(LocalizedWord.Delete);
         }
         else
         {
             CleanSite cs = colony.GetWorksite(observingSurface) as CleanSite;
             if (cs != null && cs.diggingMission)
             {
                 status_digOrdered = true;
                 digButton.transform.GetChild(0).GetComponent <Text>().text = Localization.GetPhrase(LocalizedPhrase.StopDig);
             }
             else
             {
                 status_digOrdered = false;
                 digButton.transform.GetChild(0).GetComponent <Text>().text = Localization.GetWord(LocalizedWord.Dig);
             }
         }
         savedHqLevel = hq.level;
         blockCreateButton.gameObject.SetActive(IsBlockCreatingAvailable());
         columnCreateButton.gameObject.SetActive(IsColumnAvailable() && !observingSurface.isTerminal);
         changeMaterialButton.gameObject.SetActive(IsChangeSurfaceMaterialAvalable());
         mycanvas.closePanelButton.gameObject.SetActive(true);
     }
     else
     {
         if (changeMaterialButton.gameObject.activeSelf)
         {
             changeMaterialButton.gameObject.SetActive(false);
         }
         if (blockCreateButton.gameObject.activeSelf)
         {
             blockCreateButton.gameObject.SetActive(false);
         }
         if (columnCreateButton.gameObject.activeSelf)
         {
             columnCreateButton.gameObject.SetActive(false);
         }
         mycanvas.closePanelButton.gameObject.SetActive(false);
         if (costPanelMode != CostPanelMode.Disabled)
         {
             SetCostPanelMode(CostPanelMode.Disabled);
         }
     }
 }
Пример #3
0
    public void Load(ColonyControllerSerializer ccs)
    {
        if (storage == null)
        {
            storage = gameObject.AddComponent <Storage>();
        }
        storage.Load(ccs.storageSerializer);
        gears_coefficient             = ccs.gears_coefficient;
        labourEfficientcy_coefficient = ccs.labourEfficientcy_coefficient;
        happiness_coefficient         = ccs.happiness_coefficient;
        health_coefficient            = ccs.health_coefficient;
        birthrateCoefficient          = ccs.birthrateCoefficient;

        energyStored        = ccs.energyStored;
        energyCrystalsCount = ccs.energyCrystalsCount;
        if (ccs.worksites.Count > 0)
        {
            foreach (WorksiteSerializer ws in ccs.worksites)
            {
                Worksite w = null;
                switch (ws.type)
                {
                case WorksiteType.BlockBuildingSite:
                    w = new BlockBuildingSite();
                    break;

                case WorksiteType.CleanSite:
                    w = new CleanSite();
                    break;

                case WorksiteType.DigSite:
                    w = new DigSite();
                    break;

                case WorksiteType.GatherSite:
                    w = new GatherSite();
                    break;

                case WorksiteType.TunnelBuildingSite:
                    w = new TunnelBuildingSite();
                    break;
                }
                w.Load(ws);
            }
        }
        freeWorkers          = ccs.freeWorkers;
        citizenCount         = ccs.citizenCount;
        deathCredit          = ccs.deathCredit;
        peopleSurplus        = ccs.peopleSurplus;
        housingTimer         = ccs.housingTimer;
        starvationTimer      = ccs.starvationTimer;
        starvationTime       = ccs.starvationTime;
        realBirthrate        = ccs.realBirthrate;
        birthrateCoefficient = ccs.birthrateCoefficient;
    }
Пример #4
0
 public void DigButton()
 {
     if (observingSurface == null || observingSurface.destroyed)
     {
         SelfShutOff();
         return;
     }
     else
     {
         if (observingSurface.host.IsStructure())
         {
             //IPlanable
             ((observingSurface.host) as Structure).Annihilate(true, true, false);
             SelfShutOff();
             return;
         }
         else
         {
             bool newCleanSite = false;
             if (observingSurface.isSurface)
             {
                 newCleanSite = observingSurface.fulfillStatus != FullfillStatus.Empty;
                 if (observingSurface.haveWorksite)
                 {
                     var w = colony.GetWorksite(observingSurface);
                     if (w != null && w is CleanSite)
                     {
                         if ((w as CleanSite).diggingMission)
                         {
                             w.StopWork(true);
                             newCleanSite = false;
                         }
                     }
                 }
             }
             if (newCleanSite)
             {
                 var cs = new CleanSite(observingSurface, true);
                 UIController.current.ShowWorksite(cs);
             }
             else
             {
                 var ds = new DigSite(observingSurface, true);
                 UIController.current.ShowWorksite(ds);
             }
             StatusUpdate();
         }
     }
 }
 void SetActionPanelStatus(bool working)
 {
     buildButton.gameObject.SetActive(working);
     digButton.gameObject.SetActive(working);
     gatherButton.gameObject.SetActive(working);
     if (working)
     {
         CheckGatherButton();
         CleanSite cs = observingSurface.worksite as CleanSite;
         if (cs != null && cs.diggingMission)
         {
             status_digOrdered = true;
             digButton.transform.GetChild(0).GetComponent <Text>().text = Localization.GetPhrase(LocalizedPhrase.StopDig);
         }
         else
         {
             status_digOrdered = false;
             digButton.transform.GetChild(0).GetComponent <Text>().text = Localization.GetWord(LocalizedWord.Dig);
         }
         savedHqLevel = hq.level;
         blockCreateButton.gameObject.SetActive(IsBlockCreatingAvailable());
         columnCreateButton.gameObject.SetActive(IsColumnAvailable() && observingSurface.pos.y < Chunk.CHUNK_SIZE - 1);
         changeMaterialButton.gameObject.SetActive(IsChangeSurfaceMaterialAvalable());
         UIController.current.closePanelButton.gameObject.SetActive(true);
     }
     else
     {
         if (changeMaterialButton.gameObject.activeSelf)
         {
             changeMaterialButton.gameObject.SetActive(false);
         }
         if (blockCreateButton.gameObject.activeSelf)
         {
             blockCreateButton.gameObject.SetActive(false);
         }
         if (columnCreateButton.gameObject.activeSelf)
         {
             columnCreateButton.gameObject.SetActive(false);
         }
         UIController.current.closePanelButton.gameObject.SetActive(false);
         if (costPanelMode != CostPanelMode.Disabled)
         {
             SetCostPanelMode(CostPanelMode.Disabled);
         }
     }
 }
Пример #6
0
    public void Set(CubeBlock block, bool work_is_dig)
    {
        workObject = block;
        workObject.SetWorksite(this);
        dig = work_is_dig;
        if (dig)
        {
            Block b = GameMaster.mainChunk.GetBlock(block.pos.x, block.pos.y + 1, block.pos.z);
            if (b != null && (b.type == BlockType.Surface & b.worksite == null))
            {
                CleanSite cs = b.gameObject.AddComponent <CleanSite>();
                TransferWorkers(this, cs);
                cs.Set(b as SurfaceBlock, true);
                if (showOnGUI)
                {
                    cs.ShowOnGUI();
                    showOnGUI = false;
                }
                StopWork();
                return;
            }
            sign = Instantiate(Resources.Load <GameObject> ("Prefs/DigSign")).GetComponent <WorksiteSign>();
        }
        else
        {
            sign = Instantiate(Resources.Load <GameObject>("Prefs/PourInSign")).GetComponent <WorksiteSign>();
        }
        sign.worksite           = this;
        sign.transform.position = workObject.transform.position + Vector3.up * Block.QUAD_SIZE;
        //FollowingCamera.main.cameraChangedEvent += SignCameraUpdate;

        mainResource = ResourceType.GetResourceTypeById(workObject.material_id);
        if (workersCount < START_WORKERS_COUNT)
        {
            GameMaster.colonyController.SendWorkers(START_WORKERS_COUNT, this);
        }
        if (!worksitesList.Contains(this))
        {
            worksitesList.Add(this);
        }
        if (!subscribedToUpdate)
        {
            GameMaster.realMaster.labourUpdateEvent += WorkUpdate;
            subscribedToUpdate = true;
        }
    }
Пример #7
0
    public static void StaticLoad(System.IO.Stream fs, int count)
    {
        if (count < 0 | count > 1000)
        {
            Debug.Log("worksites loading error - incorrect count");
            GameMaster.LoadingFail();
            return;
        }
        if (count > 0)
        {
            Worksite w     = null;
            Chunk    chunk = GameMaster.realMaster.mainChunk;
            for (int i = 0; i < count; i++)
            {
                switch ((WorksiteType)fs.ReadByte())
                {
                case WorksiteType.CleanSite:
                {
                    w = CleanSite.Load(fs, chunk);
                    break;
                }

                case WorksiteType.DigSite:
                {
                    w = DigSite.Load(fs, chunk);
                    break;
                }

                case WorksiteType.BlockBuildingSite:
                {
                    w = BlockBuildingSite.Load(fs, chunk);
                    break;
                }

                case WorksiteType.GatherSite:
                {
                    w = GatherSite.Load(fs, chunk);
                    break;
                }

                default: w = null; break;
                }
            }
        }
    }
Пример #8
0
    public static CleanSite Load(System.IO.FileStream fs, Chunk chunk)
    {
        var data = new byte[5];

        fs.Read(data, 0, data.Length);
        Plane plane = null;

        if (chunk.GetBlock(data[0], data[1], data[2])?.TryGetPlane(data[3], out plane) == true)
        {
            var cs = new CleanSite(plane, data[4] == 1);
            cs.LoadWorksiteData(fs);
            return(cs);
        }
        else
        {
            Debug.Log("clean site load error");
            return(null);
        }
    }
Пример #9
0
    public static void StaticLoad(WorksiteSerializer[] wdata)
    {
        worksitesList = new List <Worksite>(wdata.Length);
        Worksite w = null;

        for (int i = 0; i < worksitesList.Count; i++)
        {
            switch (wdata[i].type)
            {
            default: w = null;; break;

            case WorksiteType.BlockBuildingSite:
                w = new BlockBuildingSite();
                break;

            case WorksiteType.CleanSite:
                w = new CleanSite();
                break;

            case WorksiteType.DigSite:
                w = new DigSite();
                break;

            case WorksiteType.GatherSite:
                w = new GatherSite();
                break;

            case WorksiteType.TunnelBuildingSite:
                w = new TunnelBuildingSite();
                break;
            }
            if (w != null)
            {
                w.Load(wdata[i]);
                worksitesList[i] = w;
            }
        }
    }
Пример #10
0
 public void DigCube()
 {
     if (chosenCube == null)
     {
         return;
     }
     else
     {
         if (faceIndex == 4)
         {
             SurfaceBlock sb = chosenCube.myChunk.GetBlock(chosenCube.pos.x, chosenCube.pos.y + 1, chosenCube.pos.z) as SurfaceBlock;
             if (sb == null)
             {
                 DigSite ds = chosenCube.gameObject.AddComponent <DigSite>();
                 ds.Set(chosenCube, true);
                 workingObserver = ds.ShowOnGUI(); // вообще они должны сами в конце цепочки устанавливать здесь workingObserver, не?
             }
             else
             {
                 CleanSite cs = chosenCube.gameObject.AddComponent <CleanSite>();
                 cs.Set(sb, true);
                 workingObserver = cs.ShowOnGUI();
             }
         }
         else
         {
             if (faceIndex < 4)
             {
                 TunnelBuildingSite tbs = chosenCube.gameObject.AddComponent <TunnelBuildingSite>();
                 tbs.Set(chosenCube);
                 tbs.CreateSign(faceIndex);
                 workingObserver = tbs.ShowOnGUI();
             }
         }
     }
 }
    protected override void StatusUpdate()
    {
        if (observingSurface == null)
        {
            SelfShutOff();
            return;
        }
        switch (mode)
        {
        case SurfacePanelMode.SelectAction:
        {
            hq = GameMaster.colonyController.hq;
            CheckGatherButton();

            CleanSite cs    = observingSurface.worksite as CleanSite;
            bool      check = (cs != null && cs.diggingMission);
            if (check != status_digOrdered)
            {
                status_digOrdered = check;
                digButton.transform.GetChild(0).GetComponent <Text>().text = status_digOrdered ? Localization.GetPhrase(LocalizedPhrase.StopDig) : Localization.GetWord(LocalizedWord.Dig);
            }


            if (savedHqLevel != hq.level)
            {
                savedHqLevel = hq.level;
                blockCreateButton.gameObject.SetActive(IsBlockCreatingAvailable());
                columnCreateButton.gameObject.SetActive(IsColumnAvailable());
            }
            changeMaterialButton.gameObject.SetActive(IsChangeSurfaceMaterialAvalable());
            break;
        }

        case SurfacePanelMode.Build:
        {
            if (chosenStructure != null)
            {
                switch (buildingCreateMode)
                {
                case BuildingCreateInfoMode.Acceptable:
                    Storage storage = GameMaster.colonyController.storage;
                    if (lastStorageStatus != storage.operationsDone)
                    {
                        float[] onStorage = storage.standartResources;
                        for (int i = 0; i < resourcesCostImage.Length; i++)
                        {
                            int rid = (int)showingResourcesCount[i].x;
                            resourcesCostImage[i].transform.GetChild(0).GetComponent <Text>().color = (onStorage[rid] < showingResourcesCount[i].y) ? Color.red : Color.white;
                        }
                        lastStorageStatus = storage.operationsDone;
                    }
                    break;

                case BuildingCreateInfoMode.Unacceptable_Material:
                    if ((chosenStructure as Building).requiredBasementMaterialId == observingSurface.material_id)
                    {
                        SelectBuildingForConstruction(chosenStructure, selectedBuildingButton);
                    }
                    break;
                }
                //rotating window
            }
        }
        break;
        }
    }