コード例 #1
0
        public void Enroll(Soldier soldier)
        {
            Soldiers.Add(soldier);
            var id = HeadQuarters.ReportEnlistment(soldier.Name);

            soldier.Id = id;
        }
コード例 #2
0
    public void ChangeMode(SurfacePanelMode newMode)
    {
        switch (newMode)
        {
        case SurfacePanelMode.Build:
        {
            int i = 0;
            hq = colony.hq;
            buildingsLevelToggles[0].transform.parent.gameObject.SetActive(true);
            while (i < buildingsLevelToggles.Length)
            {
                if (i >= hq.level)
                {
                    buildingsLevelToggles[i].gameObject.SetActive(false);
                }
                else
                {
                    buildingsLevelToggles[i].gameObject.SetActive(true);
                    if (i == constructingLevel - 1)
                    {
                        buildingsLevelToggles[i].isOn = true;
                    }
                    else
                    {
                        buildingsLevelToggles[i].isOn = false;
                    }
                }
                i++;
            }
            SetActionPanelStatus(false);
            SetBuildPanelStatus(true);

            returnButton.gameObject.SetActive(true);
            buildingButtonsContainer.gameObject.SetActive(true);         // "surfaceBuildingPanel"
            RewriteBuildingButtons();
            mode = SurfacePanelMode.Build;
            break;
        }

        case SurfacePanelMode.SelectAction:
            if (constructionPlane.activeSelf)
            {
                SwitchConstructionPlane(false);
            }
            buildIntersectionSubmit.SetActive(false);
            switch (mode)
            {
            case SurfacePanelMode.Build: SetBuildPanelStatus(false); break;
            }

            SetActionPanelStatus(true);
            mode = SurfacePanelMode.SelectAction;
            CheckGatherButton();
            changeMaterialButton.gameObject.SetActive(IsChangeSurfaceMaterialAvalable());
            columnCreateButton.gameObject.SetActive(IsColumnAvailable() & observingSurface.pos.y < Chunk.chunkSize);
            blockCreateButton.gameObject.SetActive(colony.hq.level > 5);
            break;
        }
    }
コード例 #3
0
 public void SetHQ(HeadQuarters new_hq)
 {
     if (new_hq != null)
     {
         hq = new_hq;
     }
     QuestUI.current.StartCoroutine(QuestUI.current.WaitForNewQuest(0));
 }
コード例 #4
0
    public void ChangeMode(SurfacePanelMode newMode)
    {
        switch (newMode)
        {
        case SurfacePanelMode.Build:
        {
            int i = 0;
            hq = colony.hq;
            buildingsLevelToggles[0].transform.parent.gameObject.SetActive(true);
            while (i < buildingsLevelToggles.Length)
            {
                if (i >= hq.level)
                {
                    buildingsLevelToggles[i].gameObject.SetActive(false);
                }
                else
                {
                    buildingsLevelToggles[i].gameObject.SetActive(true);
                    if (i == constructingLevel - 1)
                    {
                        buildingsLevelToggles[i].isOn = true;
                    }
                    else
                    {
                        buildingsLevelToggles[i].isOn = false;
                    }
                }
                i++;
            }
            SetActionPanelStatus(false);
            SetBuildPanelStatus(true);

            returnButton.gameObject.SetActive(true);
            buildingButtonsContainer.gameObject.SetActive(true);         // "surfaceBuildingPanel"
            RewriteBuildingButtons();
            mode = SurfacePanelMode.Build;
            break;
        }

        case SurfacePanelMode.SelectAction:
            if (constructionPlane.activeSelf)
            {
                SwitchConstructionPlane(false);
            }
            buildIntersectionSubmit.SetActive(false);
            switch (mode)
            {
            case SurfacePanelMode.Build: SetBuildPanelStatus(false); break;
            }

            SetActionPanelStatus(true);
            mode = SurfacePanelMode.SelectAction;
            break;
        }
    }
コード例 #5
0
ファイル: Zeppelin.cs プロジェクト: Hengle/VoxelGame
    void Update()
    {
        if (destroyed)
        {
            return;
        }
        if (!landPointSet)
        {
            transform.RotateAround(GameMaster.sceneCenter, Vector3.up, flySpeed * Time.deltaTime * GameMaster.gameSpeed);
            leftScrew.Rotate(0, SCREWS_ROTATION_SPEED * Time.deltaTime * GameMaster.gameSpeed, 0);
            rightScrew.Rotate(0, SCREWS_ROTATION_SPEED * Time.deltaTime * GameMaster.gameSpeed, 0);
        }
        else
        {
            if (destructionTimer > 0)
            {
                destructionTimer -= Time.deltaTime * GameMaster.gameSpeed;
                if (destructionTimer <= 0)
                {
                    destroyed = true;
                    //hq
                    Structure s = HeadQuarters.GetHQ(1);
                    if (landingByZAxis == true)
                    {
                        s.SetModelRotation(0);
                    }
                    else
                    {
                        s.SetModelRotation(2);
                    }
                    s.SetBasement(landingSurface, PixelPosByte.zero);
                    //storage
                    s = Structure.GetStructureByID(Structure.STORAGE_0_ID);
                    Plane sb = (landingByZAxis == true) ?
                               landingSurface.myChunk.GetSurfacePlane(landingSurface.pos.OneBlockForward())
                        :
                               landingSurface.myChunk.GetSurfacePlane(landingSurface.pos.OneBlockRight());
                    s.SetBasement(sb, PixelPosByte.zero);

                    GameMaster.realMaster.SetStartResources();
                    PoolMaster.current.BuildSplash(transform.position);
                    if (GameMaster.soundEnabled)
                    {
                        GameMaster.audiomaster.Notify(NotificationSound.ColonyFounded);
                    }
                    FollowingCamera.main.SetLookPoint(s.transform.position);
                    Destroy(gameObject);
                }
            }
        }
    }
コード例 #6
0
        public Army Attack(Army secondArmy)
        {
            while (ThereIsAFrontman(Frontman) && ThereIsAFrontman(secondArmy.Frontman))
            {
                var winningFrontman = Frontman.Fight(secondArmy.Frontman);
                if (!isOurFrontman(winningFrontman))
                {
                    this.RemoveDeadSoldier(Frontman);
                }
                else
                {
                    secondArmy.RemoveDeadSoldier(secondArmy.Frontman);
                }
            }
            var winningArmy = CheckWinningTeam(secondArmy);

            HeadQuarters.ReportVictory(winningArmy.Soldiers.Count);
            return(winningArmy);
        }
コード例 #7
0
 public void SetObservingSurface(Plane sb)
 {
     if (sb == null || sb.destroyed)
     {
         SelfShutOff();
         return;
     }
     else
     {
         colony           = GameMaster.realMaster.colonyController;
         hq               = colony.hq;
         observingSurface = sb;
         isObserving      = true;
         ChangeMode(SurfacePanelMode.SelectAction);
         if (constructionPlane.activeSelf)
         {
             PrepareConstructionPlane();
         }
     }
 }
コード例 #8
0
    /// <summary>
    /// Load and Animate the paths
    /// </summary>
    /// <param name="path">Paths to animate</param>
    /// <param name="onComplete">Gets called when it's done animating</param>
    private IEnumerator AnimateLoadPath(List <Tile> path, Action onComplete = null)
    {
        HeadQuarters.AnimateFadeScaleIn(TileVisualState.HEADQUARTERS);
        for (int i = path.Count - 1; i >= 0; i--)
        {
            if (i == 0)
            {
                path[i].AnimateFadeScaleIn(TileVisualState.ENEMY_SPAWN);
            }
            else
            {
                path[i].AnimateFadeScaleIn(TileVisualState.PATH);
            }

            yield return(new WaitForSeconds(0.025f));
        }
        if (onComplete != null)
        {
            onComplete();
        }
    }
コード例 #9
0
    public void SetObservingSurface(SurfaceBlock sb)
    {
        if (sb == null)
        {
            SelfShutOff();
            return;
        }
        else
        {
            hq = GameMaster.colonyController.hq;
            observingSurface = sb;
            isObserving      = true;
            ChangeMode(SurfacePanelMode.SelectAction);
            if (constructionPlane.activeSelf)
            {
                PrepareConstructionPlane();
            }

            STATUS_UPDATE_TIME = 1;
            timer = STATUS_UPDATE_TIME;
        }
    }
コード例 #10
0
    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;
        }
    }
コード例 #11
0
    void PrepareSession()
    {
        if (sessionPrepared)
        {
            return;
        }
        bool activateEventTracker = false;

        switch (gameMode)
        {
        case GameMode.Survival:
        {
            uicontroller.ChangeUIMode(UIMode.Standart, true);
            difficulty = startSettings.DefineDifficulty();
            SetDefaultValues();
            var cgs         = startSettings.GetChunkGenerationSettings();
            var chunkAction = cgs.preparingActionMode;
            if (chunkAction != ChunkPreparingAction.NoAction)
            {
                if (chunkAction == ChunkPreparingAction.Load)
                {
                    LoadTerrain(SaveSystemUI.GetTerrainsPath() + '/' + cgs.GetTerrainName() + '.' + SaveSystemUI.TERRAIN_FNAME_EXTENSION);
                }
                else
                {
                    mainChunk = Constructor.ConstructChunk(cgs);
                    var slist = mainChunk.GetSurfaces();
                    if (slist != null)
                    {
                        geologyModule.SpreadMinerals(slist);
                    }
                    mainChunk.InitializeNature().FirstLifeformGeneration(Chunk.chunkSize * Chunk.chunkSize * 500f);
                }
            }
            //
            var fcm = FollowingCamera.main;
            fcm.CameraToStartPosition();
            fcm.ResetTouchRightBorder();
            fcm.CameraRotationBlock(false);
            warProximity   = 0.01f;
            layerCutHeight = Chunk.chunkSize; prevCutHeight = layerCutHeight;
            //
            switch (startSettings.DefineFoundingType())
            {
            case StartFoundingType.Zeppelin:
            {
                Zeppelin.CreateNew();
                AnnouncementCanvasController.MakeAnnouncement(Localization.GetAnnouncementString(GameAnnouncements.SetLandingPoint));
                break;
            }

            case StartFoundingType.Headquarters:
            {
                Plane sb   = mainChunk.GetRandomSurface();
                int   xpos = sb.pos.x;
                int   zpos = sb.pos.z;

                Structure s;
                if (testMode)
                {
                    s = HeadQuarters.GetHQ(6);
                    weNeedNoResources = true;
                }
                else
                {
                    weNeedNoResources = false;
                    s = HeadQuarters.GetHQ(1);
                }

                Plane b = mainChunk.GetHighestSurfacePlane(xpos, zpos);
                s.SetBasement(b, PixelPosByte.zero);


                sb = mainChunk.GetNearestUnoccupiedSurface(b.pos);
                StorageHouse firstStorage = Structure.GetStructureByID(Structure.STORAGE_0_ID) as StorageHouse;
                firstStorage.SetBasement(sb, PixelPosByte.zero);
                SetStartResources();
                break;
            }
            }
            fcm.WeNeedUpdate();
            activateEventTracker = true;
            break;
        }

        case GameMode.Editor:
        {
            uicontroller.ChangeUIMode(UIMode.Editor, true);
            mainChunk = new GameObject("chunk").AddComponent <Chunk>();
            int size = Chunk.chunkSize;
            int[,,] blocksArray = new int[size, size, size];
            size /= 2;
            blocksArray[size, size, size] = ResourceType.STONE_ID;
            mainChunk.Rebuild(blocksArray);
            FollowingCamera.main.CameraToStartPosition();
            break;
        }

        case GameMode.Scenario:
        {
            uicontroller.ChangeUIMode(UIMode.Standart, true);
            switch (startSettings.GetScenarioType())
            {
            case ScenarioType.Embedded:
            {
                switch ((EmbeddedScenarioType)startSettings.GetSecondSubIndex())
                {
                case EmbeddedScenarioType.Tutorial:
                {
                    gameRules = GameRules.GetTutorialRules();
                    LoadTerrainFromAssets(TutorialScenarioNS.TutorialScenario.tutorialTerrainName);
                    TutorialScenarioNS.TutorialUI.Initialize();
                    break;
                }
                }
                break;
            }
            }
            activateEventTracker = true;
            FollowingCamera.main.CameraToStartPosition();
            break;
        }
        }
        if (activateEventTracker)
        {
            eventTracker = new EventChecker();
        }

        startSettings   = null;
        sessionPrepared = true;
        if (testMode)
        {
            AnnouncementCanvasController.MakeAnnouncement("game master loaded");
        }
        autosaveTimer = AUTOSAVE_TIME;
    }
コード例 #12
0
    void Update()
    {
        if (destroyed)
        {
            return;
        }
        if (!landPointSet)
        {
            transform.RotateAround(GameMaster.sceneCenter, Vector3.up, flySpeed * Time.deltaTime * GameMaster.gameSpeed);
            leftScrew.Rotate(0, SCREWS_ROTATION_SPEED * Time.deltaTime * GameMaster.gameSpeed, 0);
            rightScrew.Rotate(0, SCREWS_ROTATION_SPEED * Time.deltaTime * GameMaster.gameSpeed, 0);
        }
        else
        {
            if (destructionTimer > 0)
            {
                destructionTimer -= Time.deltaTime * GameMaster.gameSpeed;
                if (destructionTimer <= 0)
                {
                    destroyed = true;
                    //hq
                    Structure hq = HeadQuarters.GetHQ(1), storage = null, setCenter = null;
                    //storage
                    if (landingByZAxis == true)
                    {
                        hq.SetModelRotation(0);
                        hq.SetBasement(landingSurface, PixelPosByte.zero);
                        var p2 = landingSurface.myChunk.GetSurfacePlane(landingSurface.pos.OneBlockForward());
                        storage   = p2.CreateStructure(Structure.STORAGE_0_ID);
                        p2        = landingSurface.myChunk.GetSurfacePlane(landingSurface.pos.OneBlockBack());
                        setCenter = p2.CreateStructure(Structure.SETTLEMENT_CENTER_ID);
                    }
                    else
                    {
                        hq.SetModelRotation(2);
                        hq.SetBasement(landingSurface, PixelPosByte.zero);
                        var chunk = landingSurface.myChunk;
                        var npos  = landingSurface.pos.OneBlockRight();
                        var p2    = chunk.GetSurfacePlane(npos);
                        if (p2 == null)
                        {
                            p2 = chunk.GetBlock(npos).FORCED_GetPlane(Block.UP_FACE_INDEX);
                        }
                        storage = p2.CreateStructure(Structure.STORAGE_0_ID);
                        npos    = landingSurface.pos.OneBlockLeft();
                        p2      = chunk.GetSurfacePlane(npos);
                        if (p2 == null)
                        {
                            p2 = chunk.GetBlock(npos).FORCED_GetPlane(Block.UP_FACE_INDEX);
                        }
                        setCenter = p2.CreateStructure(Structure.SETTLEMENT_CENTER_ID);
                    }
                    var et = GameMaster.realMaster.eventTracker;
                    et.BuildingConstructed(hq);
                    if (storage != null)
                    {
                        et.BuildingConstructed(storage);
                    }
                    if (setCenter != null)
                    {
                        et.BuildingConstructed(setCenter);
                    }

                    GameMaster.realMaster.SetStartResources();
                    PoolMaster.current.BuildSplash(transform.position);
                    if (GameMaster.soundEnabled)
                    {
                        GameMaster.audiomaster.Notify(NotificationSound.ColonyFounded);
                    }
                    FollowingCamera.main.SetLookPoint(hq.transform.position);
                    Destroy(gameObject);
                }
            }
        }
    }
コード例 #13
0
    void Start()
    {
        if (gameStarted)
        {
            return;
        }

        if (gameMode != GameMode.Editor)
        {
            difficulty = gameStartSettings.difficulty;
            SetDefaultValues();
            //byte chunksize = gss.chunkSize;
            byte chunksize;
            chunksize = gameStartSettings.chunkSize;
            if (testMode && savenameToLoad != string.Empty)
            {
                gameStartSettings = new GameStartSettings(ChunkGenerationMode.GameLoading);
                savename          = savenameToLoad;
            }
            if (gameStartSettings.generationMode != ChunkGenerationMode.GameLoading)
            {
                if (gameStartSettings.generationMode != ChunkGenerationMode.DontGenerate)
                {
                    if (gameStartSettings.generationMode != ChunkGenerationMode.TerrainLoading)
                    {
                        Constructor.ConstructChunk(chunksize, gameStartSettings.generationMode);
                        // Constructor.ConstructBlock(chunksize);
                        if (gameStartSettings.generationMode == ChunkGenerationMode.Peak)
                        {
                            environmentMaster.PrepareIslandBasis(ChunkGenerationMode.Peak);
                        }
                    }
                    else
                    {
                        LoadTerrain(SaveSystemUI.GetTerrainsPath() + '/' + savename + '.' + SaveSystemUI.TERRAIN_FNAME_EXTENSION);
                    }
                }
                FollowingCamera.main.ResetTouchRightBorder();
                FollowingCamera.main.CameraRotationBlock(false);
                warProximity   = 0.01f;
                layerCutHeight = Chunk.chunkSize; prevCutHeight = layerCutHeight;
                switch (startGameWith)
                {
                case GameStart.Zeppelin:
                    Instantiate(Resources.Load <GameObject>("Prefs/Zeppelin"));
                    if (needTutorial)
                    {
                        GameLogUI.EnableDecisionWindow(null, Localization.GetTutorialHint(LocalizedTutorialHint.Landing));
                    }
                    else
                    {
                        GameLogUI.MakeAnnouncement(Localization.GetAnnouncementString(GameAnnouncements.SetLandingPoint));
                    }
                    break;

                case GameStart.Headquarters:
                    var   sblocks = mainChunk.surfaces;
                    Plane sb      = sblocks[Random.Range(0, sblocks.Length)];
                    int   xpos    = sb.pos.x;
                    int   zpos    = sb.pos.z;

                    Structure s;
                    if (testMode)
                    {
                        s = HeadQuarters.GetHQ(6);
                        weNeedNoResources = true;
                    }
                    else
                    {
                        weNeedNoResources = false;
                        s = HeadQuarters.GetHQ(1);
                    }

                    Plane b = mainChunk.GetHighestSurfacePlane(xpos, zpos);
                    s.SetBasement(b, PixelPosByte.zero);


                    sb = mainChunk.GetHighestSurfacePlane(xpos - 1, zpos + 1);
                    if (sb == null)
                    {
                        sb = mainChunk.GetHighestSurfacePlane(xpos, zpos + 1);
                        if (sb == null)
                        {
                            sb = mainChunk.GetHighestSurfacePlane(xpos + 1, zpos + 1);
                            if (sb == null)
                            {
                                sb = mainChunk.GetHighestSurfacePlane(xpos - 1, zpos);
                                if (sb == null)
                                {
                                    sb = mainChunk.GetHighestSurfacePlane(xpos + 1, zpos);
                                    if (sb == null)
                                    {
                                        sb = mainChunk.GetHighestSurfacePlane(xpos - 1, zpos - 1);
                                        if (sb == null)
                                        {
                                            sb = mainChunk.GetHighestSurfacePlane(xpos, zpos - 1);
                                            if (sb == null)
                                            {
                                                sb = mainChunk.GetHighestSurfacePlane(xpos + 1, zpos - 1);
                                                if (sb == null)
                                                {
                                                    print("bad generation, do something!");
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                    StorageHouse firstStorage = Structure.GetStructureByID(Structure.STORAGE_0_ID) as StorageHouse;
                    firstStorage.SetBasement(sb, PixelPosByte.zero);
                    SetStartResources();
                    break;
                }
                FollowingCamera.main.WeNeedUpdate();
            }
            else
            {
                LoadGame(SaveSystemUI.GetSavesPath() + '/' + savename + ".sav");
            }
        }
        else
        {
            gameObject.AddComponent <PoolMaster>().Load();
            mainChunk = new GameObject("chunk").AddComponent <Chunk>();
            int size = Chunk.chunkSize;
            int[,,] blocksArray = new int[size, size, size];
            size /= 2;
            blocksArray[size, size, size] = ResourceType.STONE_ID;
            mainChunk.CreateNewChunk(blocksArray);
        }

        { // set look point
            FollowingCamera.camBasisTransform.position = sceneCenter;
        }
        gameStarted = true;
    }
コード例 #14
0
    public void CheckQuestsAccessibility(bool prepareQuestIfNone)
    {
        bool createNewQuests = prepareQuestIfNone & GameMaster.realMaster.UseQuestAutoCreating();

        questAccessMap[0] = true;
        if (createNewQuests && activeQuests[0] == Quest.NoQuest)
        {
            StartNewQuestAwaiting(0);
        }
        questAccessMap[1] = true;
        if (createNewQuests && activeQuests[1] == Quest.NoQuest)
        {
            StartNewQuestAwaiting(1);
        }
        questAccessMap[2] = true;
        if (createNewQuests && activeQuests[2] == Quest.NoQuest)
        {
            StartNewQuestAwaiting(2);
        }
        HeadQuarters hq = GameMaster.realMaster.colonyController?.hq;

        if (hq != null)
        {
            var lvl = hq.level;
            if (lvl >= 2)
            {
                if (questAccessMap[3] == false)
                {
                    UnblockQuestPosition(QuestSection.Three, prepareQuestIfNone);
                }
                else
                {
                    if (createNewQuests && activeQuests[3] == Quest.NoQuest)
                    {
                        StartNewQuestAwaiting(3);
                    }
                }
                if (lvl >= 3)
                {
                    if (questAccessMap[4] == false)
                    {
                        UnblockQuestPosition(QuestSection.Five, prepareQuestIfNone);
                    }
                    else
                    {
                        if (createNewQuests && activeQuests[4] == Quest.NoQuest)
                        {
                            StartNewQuestAwaiting(4);
                        }
                    }
                    if (lvl >= 4)
                    {
                        if (questAccessMap[6] == false)
                        {
                            UnblockQuestPosition(QuestSection.Six, prepareQuestIfNone);
                        }
                        else
                        {
                            if (createNewQuests && activeQuests[6] == Quest.NoQuest)
                            {
                                StartNewQuestAwaiting(5);
                            }
                        }
                        if (lvl >= 5)
                        {
                            if (questAccessMap[7] == false)
                            {
                                UnblockQuestPosition(QuestSection.Seven, prepareQuestIfNone);
                            }
                            else
                            {
                                if (createNewQuests && activeQuests[7] == Quest.NoQuest)
                                {
                                    StartNewQuestAwaiting(7);
                                }
                            }
                            if (lvl >= 6)
                            {
                                if (questAccessMap[8] == false)
                                {
                                    UnblockQuestPosition(QuestSection.Eight, prepareQuestIfNone);
                                }
                                else
                                {
                                    if (createNewQuests && activeQuests[8] == Quest.NoQuest)
                                    {
                                        StartNewQuestAwaiting(8);
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        else
        {
            return;
        }
    }
コード例 #15
0
 public void RemoveDeadSoldier(Soldier deadSoldier)
 {
     HeadQuarters.ReportCasualty(deadSoldier.Id);
     Soldiers.Remove(deadSoldier);
 }
コード例 #16
0
    public void SetObservingSurface(Plane sb)
    {
        if (sb == null || sb.destroyed)
        {
            SelfShutOff();
            return;
        }
        else
        {
            colony           = GameMaster.realMaster.colonyController;
            hq               = colony.hq;
            observingSurface = sb;
            isObserving      = true;
            ChangeMode(SurfacePanelMode.SelectAction);
            if (constructionPlane.activeSelf)
            {
                PrepareConstructionPlane();
            }
            //
            var  chunk           = observingSurface.myChunk;
            var  pos             = sb.GetLookingPosition();
            bool buildingAllowed = !chunk.IsAnyStructureInABlockSpace(pos) && observingSurface.isQuad;
            var  col             = buildingAllowed ? (chunk.IsSpaceBlocked(pos) ? Color.yellow : Color.white) : Color.grey;
            buildButton.transform.GetChild(0).GetComponent <Text>().color = col;
            buildButton.interactable = buildingAllowed;

            bool isTerminal = observingSurface.isTerminal;
            if (!isTerminal)
            {
                blockCreateButton.interactable = buildingAllowed;
                blockCreateButton.transform.GetChild(0).GetComponent <Text>().color = col;
                blockCreateButton.gameObject.SetActive(true);
            }
            else
            {
                blockCreateButton.gameObject.SetActive(false);
            }
            bool down = observingSurface.faceIndex == Block.DOWN_FACE_INDEX | observingSurface.faceIndex == Block.CEILING_FACE_INDEX;
            if (IsColumnAvailable() && !isTerminal && !down)
            {
                columnCreateButton.transform.GetChild(0).GetComponent <Text>().color = col;
                columnCreateButton.interactable = buildingAllowed;
                columnCreateButton.gameObject.SetActive(true);
            }
            else
            {
                columnCreateButton.gameObject.SetActive(false);
            }
            if (!buildingAllowed)
            {
                if (costPanel.activeSelf)
                {
                    costPanel.SetActive(false);
                }
                if (surfaceBuildingPanel.activeSelf)
                {
                    SetBuildPanelStatus(false);
                }
            }
            //
            CheckGatherButton();
            bool disableDig = observingSurface.GetBlock()?.isInvincible ?? observingSurface.isInvicible;
            digButton.interactable = !disableDig;
            digButton.transform.GetChild(0).GetComponent <Text>().color = disableDig ? Color.grey: Color.white;
            changeMaterialButton.gameObject.SetActive(IsChangeSurfaceMaterialAvalable());
        }
    }
コード例 #17
0
    public void CheckQuestsAccessibility()
    {
        questAccessMap[0] = true;
        questAccessMap[1] = true;
        questAccessMap[2] = true;
        HeadQuarters hq = GameMaster.realMaster.colonyController?.hq;

        if (hq != null)
        {
            var lvl = hq.level;
            if (lvl >= 2)
            {
                if (questAccessMap[3] == false)
                {
                    UnblockQuestPosition(QuestSection.Three);
                }
                else
                {
                    if (activeQuests[3] == Quest.NoQuest)
                    {
                        StartCoroutine(WaitForNewQuest(3));
                    }
                }
                if (lvl >= 3)
                {
                    if (questAccessMap[4] == false)
                    {
                        UnblockQuestPosition(QuestSection.Five);
                    }
                    else
                    {
                        if (activeQuests[4] == Quest.NoQuest)
                        {
                            StartCoroutine(WaitForNewQuest(4));
                        }
                    }
                    if (lvl >= 4)
                    {
                        if (questAccessMap[6] == false)
                        {
                            UnblockQuestPosition(QuestSection.Six);
                        }
                        else
                        {
                            if (activeQuests[6] == Quest.NoQuest)
                            {
                                StartCoroutine(WaitForNewQuest(6));
                            }
                        }
                        if (lvl >= 5)
                        {
                            if (questAccessMap[7] == false)
                            {
                                UnblockQuestPosition(QuestSection.Seven);
                            }
                            else
                            {
                                if (activeQuests[7] == Quest.NoQuest)
                                {
                                    StartCoroutine(WaitForNewQuest(7));
                                }
                            }
                            if (lvl >= 6)
                            {
                                if (questAccessMap[8] == false)
                                {
                                    UnblockQuestPosition(QuestSection.Eight);
                                }
                                else
                                {
                                    if (activeQuests[8] == Quest.NoQuest)
                                    {
                                        StartCoroutine(WaitForNewQuest(8));
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
        else
        {
            return;
        }
    }
コード例 #18
0
    override public void StatusUpdate()
    {
        if (!isObserving)
        {
            return;
        }
        if (observingSurface == null || observingSurface.destroyed)
        {
            SelfShutOff();
            return;
        }
        switch (mode)
        {
        case SurfacePanelMode.SelectAction:
        {
            hq = colony.hq;
            CheckGatherButton();

            if (observingSurface.host.IsStructure())
            {
                digButton.transform.GetChild(0).GetComponent <Text>().text = Localization.GetWord(LocalizedWord.Delete);
            }
            else
            {
                if (observingSurface.haveWorksite)
                {
                    var w = colony.GetWorksite(observingSurface);
                    if (w != null)
                    {
                        var cs = w as CleanSite;
                        status_digOrdered = (cs != null && cs.diggingMission);
                    }
                }
                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 (selectedStructureID != Structure.EMPTY_ID)
            {
                switch (buildingCreateMode)
                {
                case BuildingCreateInfoMode.Acceptable:
                    Storage storage = colony.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:

                    break;
                }
                //rotating window
            }
        }
        break;
        }
    }