Ejemplo n.º 1
0
    public static Crew CreateNewCrew(ColonyController home, int membersCount)
    {
        if (crewsList.Count >= RecruitingCenter.GetCrewsSlotsCount())
        {
            return(null);
        }
        if (crewsList.Count > MAX_CREWS_COUNT)
        {
            AnnouncementCanvasController.MakeImportantAnnounce(Localization.GetAnnouncementString(GameAnnouncements.CrewsLimitReached));
            GameMaster.LoadingFail();
            return(null);
        }
        Crew c = new GameObject(Localization.NameCrew()).AddComponent <Crew>();

        if (crewsContainer == null)
        {
            crewsContainer = new GameObject("crewsContainer");
        }
        c.transform.parent = crewsContainer.transform;

        c.ID     = nextID; nextID++;
        c.atHome = true;

        //normal parameters
        c.membersCount = (byte)membersCount;
        //attributes
        c.SetAttributes(home);
        //
        crewsList.Add(c);
        listChangesMarkerValue++;
        return(c);
    }
 public void ReplenishButton()
 {
     if (showingCrew == null)
     {
         replenishButton.SetActive(false);
     }
     else
     {
         if (showingCrew.membersCount == Crew.MAX_MEMBER_COUNT)
         {
             replenishButton.SetActive(false);
         }
         else
         {
             var   colony   = GameMaster.realMaster.colonyController;
             float hireCost = RecruitingCenter.REPLENISH_COST;
             if (colony.energyCrystalsCount >= hireCost)
             {
                 colony.GetEnergyCrystals(hireCost);
                 showingCrew.AddMember();
                 PrepareButtons();
             }
             else
             {
                 AnnouncementCanvasController.NotEnoughMoneyAnnounce();
             }
         }
     }
 }
Ejemplo n.º 3
0
 private void SendColonists()
 {
     if (completed)
     {
         return;
     }
     if (anchorBasement.colonistsArrived >= COLONISTS_SEND_LIMIT)
     {
         if (colony.storage.GetResourceCount(COST_RESOURCE_ID) >= COLONISTS_SEND_COST)
         {
             if (hexBuilder.totalHousing > hexBuilder.colonistsCount)
             {
                 anchorBasement.GetColonists(COLONISTS_SEND_LIMIT);
                 colony.storage.GetResources(COST_RESOURCE_ID, COLONISTS_SEND_COST);
                 hexBuilder.AddColonist();
                 colony.RemoveCitizens(COLONISTS_SEND_LIMIT, false);
                 settleWindow.Refresh();
             }
             else
             {
                 AnnouncementCanvasController.MakeImportantAnnounce(localizer.notEnoughLivingSpace);
             }
         }
         else
         {
             AnnouncementCanvasController.MakeImportantAnnounce(localizer.notEnoughSuppliesMsg);
         }
     }
     else
     {
         AnnouncementCanvasController.MakeImportantAnnounce(localizer.notEnoughColonistsMsg);
     }
 }
Ejemplo n.º 4
0
    public float BuyResource(ResourceType rt, float volume)
    {
        var colony = GameMaster.realMaster.colonyController;

        if (colony.energyCrystalsCount <= 0f)
        {
            return(0f);
        }
        float p = ResourceType.prices[rt.ID], money = 0f;

        if (p != 0)
        {
            money  = colony.GetEnergyCrystals(volume * ResourceType.prices[rt.ID]);
            volume = money / ResourceType.prices[rt.ID];
            if (volume <= 0f)
            {
                return(0f);
            }
            else
            {
                if (volume > 99f)
                {
                    AnnouncementCanvasController.MakeAnnouncement(Localization.GetBuyMsg(rt, volume, money));
                }
            }
        }
        colony.storage.AddResource(rt, volume);
        colony.gears_coefficient -= gearsDamage * volume;
        return(volume);
    }
Ejemplo n.º 5
0
    public void StartEndQuest(byte routeIndex)
    {
        int endIndex = (int)QuestSection.Endgame;

        if (activeQuests[endIndex] == Quest.NoQuest || activeQuests[endIndex] == null)
        {
            questAccessMap[endIndex] = true;
            if ((Knowledge.ResearchRoute)routeIndex == Knowledge.ResearchRoute.Foundation)
            {
                var scn = new FoundationRouteScenario();
                GameMaster.realMaster.BindScenario(scn);
                scn.StartScenario();
            }
            else
            {
                activeQuests[endIndex] = new Quest(QuestType.Endgame, routeIndex);
            }
        }
        else
        {
            AnnouncementCanvasController.MakeImportantAnnounce(Localization.GetAnnouncementString(GameAnnouncements.AlreadyHaveEndquest));
        }
        if (openedQuest == -1 & GetComponent <Image>().enabled)
        {
            PrepareBasicQuestWindow();
        }
    }
Ejemplo n.º 6
0
 public bool StartHiring()
 {
     if (finding)
     {
         return(true);
     }
     else
     {
         if (Crew.crewsList.Count < GetCrewsSlotsCount())
         {
             if (colony.energyCrystalsCount >= hireCost)
             {
                 colony.GetEnergyCrystals(hireCost);
                 finding = true;
                 return(true);
             }
             else
             {
                 AnnouncementCanvasController.NotEnoughMoneyAnnounce();
                 return(false);
             }
         }
         else
         {
             AnnouncementCanvasController.MakeImportantAnnounce(Localization.GetRefusalReason(RefusalReason.NotEnoughSlots));
             if (GameMaster.soundEnabled)
             {
                 GameMaster.audiomaster.Notify(NotificationSound.NotEnoughSlots);
             }
             return(false);
         }
     }
 }
Ejemplo n.º 7
0
    protected override void LabourResult(int iterations)
    {
        if (iterations < 1)
        {
            return;
        }
        workflow -= iterations;
        int memCount = (int)((workersCount / (float)maxWorkers) * Crew.MAX_MEMBER_COUNT);

        if (workersCount < memCount)
        {
            memCount = workersCount;
        }
        if (memCount > 0)
        {
            Crew c = Crew.CreateNewCrew(colony, memCount);
            workersCount -= memCount;
            workflow      = 0;
            finding       = false;
            AnnouncementCanvasController.MakeAnnouncement(Localization.GetCrewAction(LocalizedCrewAction.Ready, c));
            hireCost = hireCost * (1 + GameConstants.HIRE_COST_INCREASE);
            hireCost = ((int)(hireCost * 100)) / 100f;
            if (showOnGUI)
            {
                rcenterObserver.SelectCrew(c);
            }
        }
    }
Ejemplo n.º 8
0
 override public void LevelUp(bool returnToUI)
 {
     if (!GameMaster.realMaster.weNeedNoResources)
     {
         ResourceContainer[] cost = GetUpgradeCost();
         if (!colony.storage.CheckBuildPossibilityAndCollectIfPossible(cost))
         {
             AnnouncementCanvasController.NotEnoughResourcesAnnounce();
             return;
         }
     }
     if (level > 3)
     {
         SetBlockers();
     }
     level++;
     nextStageConditionMet = CheckUpgradeCondition();
     SetModel();
     buildingObserver.CheckUpgradeAvailability();
     Quest.ResetHousingQuest();
     AnnouncementCanvasController.MakeAnnouncement(Localization.LevelReachedString(level));
     if (GameMaster.soundEnabled)
     {
         GameMaster.audiomaster.Notify(NotificationSound.HQ_Upgraded);
     }
     GameMaster.realMaster.eventTracker?.BuildingUpgraded(this);
 }
 private static AnnouncementCanvasController GetCurrent()
 {
     if (_currentLog == null)
     {
         _currentLog = Instantiate(Resources.Load <GameObject>("UIPrefs/logCanvas"), UIController.GetCurrent()?.transform).GetComponent <AnnouncementCanvasController>();
     }
     return(_currentLog);
 }
    public void CostPanel_Build()
    {
        switch (costPanelMode)
        {
        case CostPanelMode.SurfaceMaterialChanging:
            ResourceType rt = ResourceType.GetResourceTypeById(costPanel_selectedButton.y);
            if (colony.storage.CheckBuildPossibilityAndCollectIfPossible(new ResourceContainer[] { new ResourceContainer(rt, PlaneExtension.INNER_RESOLUTION * PlaneExtension.INNER_RESOLUTION) }))
            {
                observingSurface.ChangeMaterial(rt.ID, true);
                costPanel.transform.GetChild(0).GetChild(costPanel_selectedButton.x).GetComponent <Image>().overrideSprite = null;
            }
            else
            {
                AnnouncementCanvasController.NotEnoughResourcesAnnounce();
            }
            break;

        case CostPanelMode.ColumnBuilding:
        {
            if (colony.storage.CheckBuildPossibilityAndCollectIfPossible(ResourcesCost.GetCost(Structure.COLUMN_ID)))
            {
                // float supportPoints = observingSurface.myChunk.CalculateSupportPoints(observingSurface.pos.x, observingSurface.pos.y, observingSurface.pos.z);
                // if (supportPoints <= 1)
                // {
                Structure s = Structure.GetStructureByID(Structure.COLUMN_ID);
                s.SetBasement(observingSurface, new PixelPosByte(7, 7));
                PoolMaster.current.BuildSplash(s.transform.position);
                SetCostPanelMode(CostPanelMode.Disabled);

                Plane p;
                if ((s as IPlanable).TryGetPlane(observingSurface.faceIndex, out p) && !p.isTerminal)
                {
                    mycanvas.Select(p);
                }
                else
                {
                    ReturnButton();
                }
                // }
                //   else
                //  {
                //    observingSurface.myChunk.ReplaceBlock(observingSurface.pos, BlockType.Cave, observingSurface.material_id, ResourceType.CONCRETE_ID, false);
                // }
            }
            else
            {
                AnnouncementCanvasController.NotEnoughResourcesAnnounce();
            }
        }
        break;

        case CostPanelMode.BlockBuilding:
            BlockBuildingSite bbs = new BlockBuildingSite(observingSurface, ResourceType.GetResourceTypeById(costPanel_selectedButton.y));
            SetCostPanelMode(CostPanelMode.Disabled);
            mycanvas.ShowWorksite(bbs);
            break;
        }
    }
Ejemplo n.º 11
0
    override public void LevelUp(bool returnToUI)
    {
        if (upgradedIndex == -1)
        {
            return;
        }
        if (!GameMaster.realMaster.weNeedNoResources)
        {
            ResourceContainer[] cost = GetUpgradeCost();
            if (!colony.storage.CheckBuildPossibilityAndCollectIfPossible(cost))
            {
                AnnouncementCanvasController.NotEnoughResourcesAnnounce();
                return;
            }
        }
        Factory upgraded = GetStructureByID(upgradedIndex) as Factory;

        upgraded.Prepare();
        PixelPosByte setPos = new PixelPosByte(surfaceRect.x, surfaceRect.z);

        if (upgraded.surfaceRect.size == 16)
        {
            setPos = new PixelPosByte(0, 0);
        }
        int workers = workersCount;

        workersCount = 0;
        if (upgraded.rotate90only & (modelRotation % 2 != 0))
        {
            upgraded.modelRotation = (byte)(modelRotation - 1);
        }
        else
        {
            upgraded.modelRotation = modelRotation;
        }
        //
        upgraded.SetRecipe(recipe);
        upgraded.productionMode        = productionMode;
        upgraded.productionModeValue   = productionModeValue;
        upgraded.workPaused            = workPaused;
        upgraded.workflow              = workflow;
        upgraded.inputResourcesBuffer  = inputResourcesBuffer; inputResourcesBuffer = 0;
        upgraded.outputResourcesBuffer = outputResourcesBuffer; outputResourcesBuffer = 0;
        //
        upgraded.SetBasement(basement, setPos);
        upgraded.AddWorkers(workers);
        if (isActive)
        {
            upgraded.SetActivationStatus(true, true);
        }
        if (returnToUI)
        {
            upgraded.ShowOnGUI();
        }
        GameMaster.realMaster.eventTracker?.BuildingUpgraded(this);
    }
 public void Next()
 {
     if (currentStep == FoundationScenarioStep.AnchorStart)
     {
         AnnouncementCanvasController.MakeAnnouncement(localizer.GetAnnounceTitle(currentStep, QUEST_INFO_1));
         scenarioQuest.MakeQuestCompleted();
     }
     currentStep++;
     StartSubscenario();
 }
Ejemplo n.º 13
0
    public void SubmitButton() // for save option only
    {
        int si = listController.selectedButtonIndex;

        if (si < 0 || savenames == null || si >= savenames.Length)
        {
            return;
        }
        string name       = savenames[listController.selectedButtonIndex];
        bool   redrawList = false;

        if (workWithTerrains)
        {// ПЕРЕЗАПИСЬ СОХРАНЕНИЯ ТЕРРЕЙНА
            if (deleteSubmit)
            {
                File.Delete(GetTerrainSaveFullpath(name));
                redrawList = true;
            }
            else
            {
                GameMaster.realMaster.SaveTerrain(name);
                redrawList = true;
            }
        }
        else
        {   // ПЕРЕЗАПИСЬ СОХРАНЕНИЯ ИГРЫ
            if (deleteSubmit)
            {
                File.Delete(GetGameSaveFullpath(name));
                redrawList = true;
            }
            else
            {
                if (GameMaster.realMaster.SaveGame(name))
                {
                    AnnouncementCanvasController.MakeAnnouncement(Localization.GetAnnouncementString(GameAnnouncements.GameSaved));
                    redrawList = true;
                }
                else
                {
                    AnnouncementCanvasController.MakeAnnouncement(Localization.GetAnnouncementString(GameAnnouncements.SavingFailed));
                    if (GameMaster.soundEnabled)
                    {
                        GameMaster.audiomaster.Notify(NotificationSound.SystemError);
                    }
                }
            }
        }
        submitWindow.SetActive(false);
        if (redrawList)
        {
            PrepareSavesList();
        }
    }
 public void ToMainMenu()
 {
     AnnouncementCanvasController.EnableDecisionWindow(
         Localization.GetPhrase(LocalizedPhrase.AskReturnToMainMenu),
         this.ReturnToMainMenu,
         Localization.GetWord(LocalizedWord.Yes),
         AnnouncementCanvasController.DisableDecisionPanel,
         Localization.GetWord(LocalizedWord.No),
         true
         );
 }
 public void ExitButton()
 {
     AnnouncementCanvasController.EnableDecisionWindow(
         Localization.GetPhrase(LocalizedPhrase.AskExit),
         this.ExitGame,
         Localization.GetWord(LocalizedWord.Yes),
         AnnouncementCanvasController.DisableDecisionPanel,
         Localization.GetWord(LocalizedWord.No),
         true
         );
 }
Ejemplo n.º 16
0
 public void StartShipService(Ship s)
 {
     if (servicingShip != s)
     {
         servicingShip.Undock();
     }
     servicingShip = s;
     loadingTimer  = LOADING_TIME;
     if (announceNewShips)
     {
         AnnouncementCanvasController.MakeAnnouncement(Localization.GetAnnouncementString(GameAnnouncements.ShipArrived));
     }
 }
Ejemplo n.º 17
0
    public void SellResource(ResourceType rt, float volume)
    {
        var   colony = GameMaster.realMaster.colonyController;
        float vol    = colony.storage.GetResources(rt, volume);
        float money  = vol * ResourceType.prices[rt.ID] * GameMaster.sellPriceCoefficient;

        colony.AddEnergyCrystals(money);
        colony.gears_coefficient -= gearsDamage * vol;
        if (vol > 99f)
        {
            AnnouncementCanvasController.MakeAnnouncement(Localization.GetSellMsg(rt, vol, money));
        }
    }
Ejemplo n.º 18
0
    public void Dismiss() // экспедиция вернулась домой и распускается
    {
        //зависимость : Disappear()
        if (stage == ExpeditionStage.Disappeared | stage == ExpeditionStage.Dismissed)
        {
            return;
        }
        else
        {
            AnnouncementCanvasController.MakeAnnouncement(Localization.GetCrewAction(LocalizedCrewAction.Returned, crew));
            if (crew != null)
            {
                crew.CountMission(missionCompleted);
                crew.SetCurrentExpedition(null);
                crew = null;
            }
            QuantumTransmitter.StopTransmission(transmissionID);
            Hangar.ReturnShuttle(shuttleID);
            if (destination != null)
            {
                destination.DeassignExpedition(this);
            }
            if (suppliesCount > 0)
            {
                GameMaster.realMaster.colonyController.storage.AddResource(ResourceType.Supplies, suppliesCount);
            }
            if (expeditionsList.Contains(this))
            {
                expeditionsList.Remove(this);
            }
            if (crystalsCollected > 0)
            {
                GameMaster.realMaster.colonyController.AddEnergyCrystals(crystalsCollected);
                crystalsCollected = 0;
            }
            stage = ExpeditionStage.Dismissed;
            if (missionCompleted)
            {
                expeditionsSucceed++;
                Knowledge.GetCurrent()?.ExpeditionsCheck(expeditionsSucceed);
            }

            if (subscribedToUpdate & !GameMaster.sceneClearing)
            {
                GameMaster.realMaster.labourUpdateEvent -= this.LabourUpdate;
                subscribedToUpdate = false;
            }
            changesMarkerValue++;
        }
    }
Ejemplo n.º 19
0
 public void LaunchButton()
 {
     if (observingExpedition == null)
     {
         if (selectedCrew != null && selectedCrew.atHome)
         {
             var  storage  = colony.storage;
             bool TESTMODE = GameMaster.realMaster.weNeedNoResources;
             if (TESTMODE || suppliesSlider.value <= storage.GetResourceCount(ResourceType.Supplies) &&
                 crystalsSlider.value <= colony.energyCrystalsCount &&
                 storage.GetResourceCount(ResourceType.Fuel) >= FUEL_BASE_COST
                 )
             {
                 int shID = Hangar.GetFreeShuttleID();
                 if (shID != Hangar.NO_SHUTTLE_VALUE)
                 {
                     var t = QuantumTransmitter.GetFreeTransmitter();
                     if (t != null)
                     {
                         if (storage.TryGetResources(ResourceType.Fuel, FUEL_BASE_COST))
                         {
                             var e  = new Expedition(selectedDestination, selectedCrew, shID, t, storage.GetResources(ResourceType.Supplies, suppliesSlider.value), colony.GetEnergyCrystals(crystalsSlider.value));
                             var mc = mycanvas.uicontroller;
                             if (mc.currentMode == UIMode.Standart)
                             {
                                 observingExpedition = e;
                             }
                             else
                             {
                                 observingExpedition = e;
                                 RedrawWindow();
                                 mc.ShowExpedition(e);
                             }
                         }
                         else
                         {
                             AnnouncementCanvasController.MakeAnnouncement(Localization.GetExpeditionErrorText(ExpeditionComposingErrors.NotEnoughFuel));
                         }
                         RedrawWindow();
                     }
                 }
             }
         }
     }
     else
     {
         observingExpedition.EndMission();
     }
 }
Ejemplo n.º 20
0
    public void Next()
    {
        switch (currentStep)
        {
        case FoundationScenarioStep.AnchorBuilding:
            scenarioQuest?.MakeQuestCompleted();
            break;

        case FoundationScenarioStep.AnchorStart:
            AnnouncementCanvasController.MakeAnnouncement(localizer.GetAnnounceTitle(currentStep, QUEST_INFO_1));
            scenarioQuest.MakeQuestCompleted();
            break;
        }
        currentStep++;
        StartSubscenario();
    }
    public void Prepare()
    {
        if (prepared)
        {
            return;
        }
        else
        {
            prepared = true;
        }
        vegetationShaderWindPropertyID = Shader.PropertyToID("_Windpower");
        if (!GameMaster.loading)
        {
            windVector    = Random.insideUnitCircle;
            newWindVector = windVector;
        }

        Shader.SetGlobalFloat(vegetationShaderWindPropertyID, 1);
        sun = FindObjectOfType <Light>();
        if (sun == null)
        {
            sun      = new GameObject("sun").AddComponent <Light>();
            sun.type = LightType.Directional;
        }
        sunTransform = sun.transform;
        decorations  = new List <Transform>();

        skyboxMaterial = RenderSettings.skybox;
        gm             = GameMaster.realMaster;
        globalMap      = gm.globalMap;
        SetEnvironment(Environment.defaultEnvironment);
        if (gm.gameMode != GameMode.Editor)
        {
            RefreshVisual();
            RecalculateCelestialDecorations();
        }
        else
        {
        }
        islandStability = DEFAULT_ISLAND_STABILITY;
        globalMap?.LinkEnvironmentMaster(this);
        if (GameMaster.realMaster.IsInTestMode)
        {
            AnnouncementCanvasController.MakeAnnouncement("environment master loaded");
        }
    }
Ejemplo n.º 22
0
    private void Update()
    {
        if (loading | gameSpeed == 0)
        {
            return;
        }

        autosaveTimer -= Time.deltaTime;
        if (autosaveTimer <= 0f)
        {
            SetPause(true);
            AnnouncementCanvasController.MakeAnnouncement("autosaving!");
            SaveGame("autosave_time");
            SetPause(false);
            autosaveTimer = AUTOSAVE_TIME;
        }
        gameSpeed = _gameSpeed;
    }
Ejemplo n.º 23
0
    override public void LevelUp(bool returnToUI)
    {
        if (upgradedIndex == -1)
        {
            return;
        }
        if (!GameMaster.realMaster.weNeedNoResources)
        {
            ResourceContainer[] cost = GetUpgradeCost();
            if (!colony.storage.CheckBuildPossibilityAndCollectIfPossible(cost))
            {
                AnnouncementCanvasController.NotEnoughResourcesAnnounce();
                return;
            }
        }
        WorkBuilding upgraded = GetStructureByID(upgradedIndex) as WorkBuilding;

        upgraded.Prepare();
        PixelPosByte setPos = new PixelPosByte(surfaceRect.x, surfaceRect.z);

        if (upgraded.surfaceRect.size == 16)
        {
            setPos = new PixelPosByte(0, 0);
        }
        int workers = workersCount;

        workersCount = 0;
        if (upgraded.rotate90only & (modelRotation % 2 != 0))
        {
            upgraded.modelRotation = (byte)(modelRotation - 1);
        }
        else
        {
            upgraded.modelRotation = modelRotation;
        }
        upgraded.AddWorkers(workers);
        upgraded.SetBasement(basement, setPos);
        GameMaster.realMaster.eventTracker?.BuildingUpgraded(this);
        if (returnToUI)
        {
            upgraded.ShowOnGUI();
        }
        //copied to factory.levelup
    }
Ejemplo n.º 24
0
    /// ===============================
    public Expedition(PointOfInterest i_destination, Crew c, int i_shuttleID, QuantumTransmitter transmitter, float i_supplies, float i_crystals)
    {
        // СДЕЛАТЬ: проверка компонентов и вывод ошибок
        ID    = nextID++;
        stage = ExpeditionStage.WayIn;

        destination = i_destination; destination.AssignExpedition(this);
        crew        = c; c.SetCurrentExpedition(this);

        if (Hangar.OccupyShuttle(i_shuttleID))
        {
            shuttleID = i_shuttleID;
        }
        else
        {
            AnnouncementCanvasController.MakeAnnouncement(Localization.GetExpeditionErrorText(ExpeditionComposingErrors.ShuttleUnavailable));
            Dismiss();
        }

        if (transmitter != null)
        {
            transmissionID = transmitter.StartTransmission();
            hasConnection  = true;
        }
        else
        {
            transmissionID = QuantumTransmitter.NO_TRANSMISSION_VALUE;
            hasConnection  = false;
        }
        suppliesCount     = (byte)i_supplies;
        crystalsCollected = (ushort)i_crystals;

        //#creating map marker
        GlobalMap gmap = GameMaster.realMaster.globalMap;

        mapMarker = new FlyingExpedition(this, gmap.cityPoint, destination, FLY_SPEED);
        gmap.AddPoint(mapMarker, true);
        //

        expeditionsList.Add(this);
        listChangesMarker++;
    }
Ejemplo n.º 25
0
 override protected void LabourResult(int iterations)
 {
     if (iterations < 1)
     {
         return;
     }
     shuttleID = nextShuttleID++;
     status    = HangarStatus.ShuttleInside;
     if (workersCount > 0)
     {
         FreeWorkers();
     }
     workflow = 0f;
     listChangesMarkerValue++;
     if (showOnGUI)
     {
         hangarObserver.PrepareHangarWindow();
     }
     AnnouncementCanvasController.MakeAnnouncement(Localization.GetPhrase(LocalizedPhrase.ShuttleConstructed));
 }
    public void Charge()
    {
        ColonyController colony = GameMaster.realMaster.colonyController;

        if (colony.energyCrystalsCount >= 1)
        {
            if (colony.energyStored != colony.totalEnergyCapacity)
            {
                colony.GetEnergyCrystals(1);
                colony.AddEnergy(GameConstants.ENERGY_IN_CRYSTAL);
                if (GameMaster.soundEnabled)
                {
                    GameMaster.audiomaster.Notify(NotificationSound.BatteryCharged);
                }
            }
        }
        else
        {
            AnnouncementCanvasController.NotEnoughMoneyAnnounce();
        }
    }
 public void StartConstructing()
 {
     if (observingHangar.status == Hangar.HangarStatus.ConstructingShuttle)
     {
         observingHangar.StopConstruction();
         PrepareHangarWindow();
     }
     else
     {
         ColonyController colony = GameMaster.realMaster.colonyController;
         if (colony.storage.CheckBuildPossibilityAndCollectIfPossible(ResourcesCost.GetCost(ResourcesCost.SHUTTLE_BUILD_COST_ID)))
         {
             observingHangar.StartConstruction();
             PrepareHangarWindow();
         }
         else
         {
             AnnouncementCanvasController.NotEnoughResourcesAnnounce();
         }
     }
 }
Ejemplo n.º 28
0
    /*
     * override public bool IsLevelUpPossible(ref string refusalReason)
     * {
     *  if (workFinished && !awaitingElevatorBuilding)
     *  {
     *      //Block b = basement.myChunk.GetBlock(lastWorkObjectPos.x, lastWorkObjectPos.y - 1, lastWorkObjectPos.z);
     *      //if (b != null && b.type == BlockType.Cube) return true;
     *      else
     *      {
     *          refusalReason = Localization.GetRefusalReason(RefusalReason.NoBlockBelow);
     *          return false;
     *      }
     *  }
     *  else
     *  {
     *      refusalReason = Localization.GetRefusalReason(RefusalReason.WorkNotFinished);
     *      return false;
     *  }
     * }
     */

    override public void LevelUp(bool returnToUI)
    {
        //if (b != null && b.type == BlockType.Cube)
        {
            if (!GameMaster.realMaster.weNeedNoResources)
            {
                ResourceContainer[] cost = GetUpgradeCost();
                if (cost != null && cost.Length != 0)
                {
                    if (!colony.storage.CheckBuildPossibilityAndCollectIfPossible(cost))
                    {
                        AnnouncementCanvasController.NotEnoughResourcesAnnounce();
                        return;
                    }
                }
            }
            //   workObject = b as CubeBlock;

            UpgradeMine((byte)(level + 1));
            GameMaster.realMaster.eventTracker?.BuildingUpgraded(this);
        }
    }
Ejemplo n.º 29
0
 public void AddArtifact(Artifact a, int slotIndex)
 {
     if (a != null && !a.destructed)
     {
         if (!a.researched)
         {
             GameMaster.audiomaster.Notify(NotificationSound.Disagree);
             AnnouncementCanvasController.MakeImportantAnnounce(Localization.GetPhrase(LocalizedPhrase.ArtifactNotResearched));
             return;
         }
         else
         {
             if (affectionPath != Path.TechPath)
             {
                 GameMaster.audiomaster.Notify(NotificationSound.Disagree);
                 AnnouncementCanvasController.MakeImportantAnnounce(Localization.GetPhrase(LocalizedPhrase.AffectionTypeNotMatch));
                 return;
             }
             else
             {
                 if (artifacts == null)
                 {
                     artifacts = new Artifact[4];
                 }
                 else
                 {
                     if (artifacts[slotIndex] != null)
                     {
                         artifacts[slotIndex].ChangeStatus(Artifact.ArtifactStatus.OnConservation);
                     }
                 }
                 artifacts[slotIndex] = a;
                 a.ChangeStatus(Artifact.ArtifactStatus.UsingInMonument);
                 RecalculateAffection();
             }
         }
     }
 }
Ejemplo n.º 30
0
    public virtual void LevelUp(bool returnToUI)
    {
        if (upgradedIndex == -1)
        {
            return;
        }
        if (!GameMaster.realMaster.weNeedNoResources)
        {
            ResourceContainer[] cost = GetUpgradeCost();
            if (!GameMaster.realMaster.colonyController.storage.CheckBuildPossibilityAndCollectIfPossible(cost))
            {
                AnnouncementCanvasController.NotEnoughResourcesAnnounce();
                return;
            }
        }
        Building     upgraded = GetStructureByID(upgradedIndex) as Building;
        PixelPosByte setPos   = new PixelPosByte(surfaceRect.x, surfaceRect.z);

        if (upgraded.surfaceRect.size == PlaneExtension.INNER_RESOLUTION)
        {
            setPos = new PixelPosByte(0, 0);
        }
        if (upgraded.rotate90only & (modelRotation % 2 != 0))
        {
            upgraded.modelRotation = (byte)(modelRotation - 1);
        }
        else
        {
            upgraded.modelRotation = modelRotation;
        }
        upgraded.SetBasement(basement, setPos);
        GameMaster.realMaster.eventTracker?.BuildingUpgraded(this);
        if (returnToUI)
        {
            upgraded.ShowOnGUI();
        }
    }