示例#1
0
        /// <summary>
        /// Stageを初期化する
        /// </summary>
        public void InitStage()
        {
            StageInfo nextStage   = stageInfo[dungeonIndex];              //指定のダンジョン
            int       chooseFloor = nextStage.bossRange * floorIndex + 1; //指定のフロアを計算

            //Stage情報を入力
            gameManager.StageNum = nextStage.fileNum;
            gameManager.InitStage(
                nextStage.dungeonNo,
                nextStage.name,
                (int)nextStage.limitTime,
                chooseFloor,
                nextStage.totalFloor,
                nextStage.bossRange,
                nextStage.baseSize + (chooseFloor - 1) * nextStage.expandRate,
                nextStage.expandRate,
                nextStage.fogColor,
                nextStage.constractColor,
                nextStage.useParticle,
                nextStage.bgmName);

            //BlockStyle設定
            gameManager.ClearBlockStyle();
            gameManager.BlockStyle.Add(Map.MapDef.BlockDef.Entry, nextStage.groundTexture);
            gameManager.BlockStyle.Add(Map.MapDef.BlockDef.Exit, nextStage.groundTexture);
            gameManager.BlockStyle.Add(Map.MapDef.BlockDef.Space, nextStage.groundTexture);
            gameManager.BlockStyle.Add(Map.MapDef.BlockDef.Wall, nextStage.wallTexture);
        }
示例#2
0
    private void Awake()
    {
        playerInput = GetComponentInChildren <PlayerInput>();
        PlayerID    = playerInput.user.index;

        playerCreating = GetComponentInChildren <PlayerCreating>();

        stageInfo = GameObject.FindGameObjectWithTag("StageInfo").GetComponent <StageInfo>();

        colliders = GetComponentsInChildren <Collider>();
        rbs       = GetComponentsInChildren <Rigidbody>();

        Material[] mats = BodyMeshRenderer1.materials;
        mats[0] = MaterialsArray[PlayerID];
        BodyMeshRenderer1.materials = mats;
        mats    = BodyMeshRenderer2.materials;
        mats[0] = MaterialsArray[PlayerID];
        BodyMeshRenderer2.materials = mats;

        // RingDecal.material = RingMaterialsArray[PlayerID];

        /*_playerMove = GetComponentInChildren<PlayerMove>();
         * _playerMove.enabled = false;
         * _playerBehavior = GetComponentInChildren<PlayerBehavior>();
         * _playerBehavior.enabled = false;*/

        StartCoroutine(SpawnToPosition());
    }
示例#3
0
    public void Show(Stage stage, StageInfo info)
    {
        rect.anchoredPosition = startPos;

        textName.text = Localization.currentLanguageStrings[stage.displayName];

        if (stage.type == StageType.Normal)
        {
            hive1.gameObject.SetActive(true);
            hive2.gameObject.SetActive(true);
            hive3.gameObject.SetActive(true);

            hive1.color = info.hiveCount >= 1 ? Color.white : defaultColor;
            hive2.color = info.hiveCount >= 2 ? Color.white : defaultColor;
            hive3.color = info.hiveCount >= 3 ? Color.white : defaultColor;

            textName.alignment = TextAnchor.MiddleLeft;
        }
        else if (stage.type == StageType.Cinematic)
        {
            hive1.gameObject.SetActive(false);
            hive2.gameObject.SetActive(false);
            hive3.gameObject.SetActive(false);

            textName.alignment = TextAnchor.MiddleCenter;
        }

        anim.Play("ShowStagePanel", -1, 0);
    }
示例#4
0
    void Start()
    {
        // Iniciar os componenetes e objetos filhos
        button    = GetComponent <Button>();
        padlock   = transform.Find("Padlock").GetComponent <Image>();
        iconVideo = transform.Find("IconVideo").GetComponent <Image>();

        numberText      = transform.Find("Number").GetComponent <Text>();
        numberText.text = stage.number.ToString();

        // Carrega as informações do estágio (para saber se está bloqueado)
        stageInfo = DataManager.LoadStageInfo(stage.key);

        // Ativa ou desativa o botão, dependendo se ele está liberado ou não
        if (stageInfo.unlocked || stage.alwaysUnlocked)
        {
            if (stage.type == StageType.Normal)
            {
                numberText.gameObject.SetActive(true);
            }
            else if (stage.type == StageType.Cinematic)
            {
                iconVideo.gameObject.SetActive(true);
            }
        }
        else
        {
            button.interactable = false;
            padlock.gameObject.SetActive(true);
        }

        if (stage.type == StageType.Normal)        // Se for um estágio normal, exibe as informações das colmeias coletadas
        {
            if (stageInfo.hiveCount >= 1)
            {
                hive1.color = Color.white;
            }
            if (stageInfo.hiveCount >= 2)
            {
                hive2.color = Color.white;
            }
            if (stageInfo.hiveCount >= 3)
            {
                hive3.color = Color.white;
            }
        }
        else if (stage.type == StageType.Cinematic)         // Se for um estágio de vídeo (cinematic), remove as informações das colmeias coletadas
        {
            hive1.gameObject.SetActive(false);
            hive2.gameObject.SetActive(false);
            hive3.gameObject.SetActive(false);
        }


        if (stage.key == WorldMap.Instance.SelectedStageKey)
        {
            button.Select();
            WorldMap.Instance.SetCurrentRegion(this.mapRegion);
        }
    }
示例#5
0
    public void updateText()
    {
        StageInfo stageInf = sceneDataObjects[currentStage].GetComponent <StageInfo>();
        string    s        = string.Format("Name: {0}\nLocation: {1}\nLength: {2}\nSurface: {3}\n\nTime required to win: {4}\nStage beaten: {5}\nBest time: {6}", stageInf.stageName, stageInf.stageLocation, stageInf.stageLength, stageInf.stageSurface, stageInf.stageTimeToBeat, stageInf.stageBeaten, stageInf.stageBestTime);

        stageDataText.text = s;
    }
示例#6
0
    private static new StageInfo Create()
    {
        StageInfo result = PanelWithChildren.Create <StageInfo> ();

        result.gameObject.name = "panel_StageInfo";

        RectTransform rt = result.gameObject.transform as RectTransform;

        rt.offsetMin = new Vector2(6, 0);
        rt.offsetMax = new Vector2(8, 6);

        result.items = new List <GameObject> ();

        result.LiScore = CreateScore();
        result.items.Add(result.LiScore.gameObject);

        result.LiHitPoints = CreateHitPoints();
        result.items.Add(result.LiHitPoints.gameObject);

        result.buffCaption = CreateBuffCaption();
        result.items.Add(result.buffCaption.gameObject);

        result.buffZone = BuffZone.Create();
        result.items.Add(result.buffZone.gameObject);

        result.alignDirection = Aligner.AlignDirection.adTop;
        result.SetAligner_Pivot();
        result.Rebuild();

        return(result);
    }
示例#7
0
    public void CopyBattleStageData(StageInfo _info)
    {
        LogManager.LogToFile("start copy chapter ...");
        BattleStage pNewData = new BattleStage();

        pNewData.m_BattlePieceNum = _info.id;
        pNewData.m_StarSum        = _info.starsum;
        pNewData.m_bRewardGot     = _info.rewardgot;

        foreach (StageBattle item in _info.stagebattles)
        {
            StageData pData = new StageData();
            pData.m_StageID      = item.id;
            pData.m_StageStar    = item.maxstar;
            pData.m_FightSum     = item.fightnum;
            pData.m_BuyBattleNum = item.buybattlenum;
            //if (pData.m_FightSum == 0)
            //{
            //    // 是否已经查看
            //    if (mViewList.ContainsKey(pData.m_StageID))
            //    {
            //        // 插入未开启列表
            //        mViewList.Add(pData.m_StageID, true);
            //    }
            //}

            pNewData.m_BattleStage.Add(pData);
        }
        if (_info.id != 1001)
        {
            ObjectSelf.GetInstance().SetCurChapterID(_info.id);
        }
        m_BattleStageList.Add(_info.id, pNewData);
    }
        private Stage CreateStage(StageInfo stageInfo)
        {
            var stage = new Stage();

            foreach (var position in stageInfo.positions)
            {
                // CellTypeを取得
                var cellType = position.value switch
                {
                    "treasure" => CellType.Treasure,
                    "arrow-up" => CellType.ArrowUp,
                    "arrow-down" => CellType.ArrowDown,
                    "arrow-left" => CellType.ArrowLeft,
                    "arrow-right" => CellType.ArrowRight,
                    _ => throw new ArgumentException()
                };

                var treasureCell = stage.CreateCell(position.w, position.h, cellType);

                if (cellType == CellType.Treasure)
                {
                    stage.CreateRockAroundTreasure(treasureCell);
                }
            }

            return(stage);
        }
    }
示例#9
0
        private void DrawFloors(float constractAlpha)
        {
            renderer.DrawTexture("fade",                                       //背景
                                 FLOOR_OFFSET,
                                 new Vector2(280, 330),
                                 backLayer.CurrentAlpha() * 0.5f);

            StageInfo info        = stageInfo[dungeonIndex];
            int       chooseFloor = info.totalFloor / info.bossRange;

            for (int i = 0; i < floors.Count; i++)                             //各ダンジョン
            {
                Vector2 buttonPos = new Vector2(floors[i].Position().X, floors[i].Position().Y);
                Color   color     = (i == floorIndex) ? Color.Gold : Color.White; //選択の色

                renderer.DrawTexture(
                    "fade",
                    buttonPos,
                    floors[i].Size(),
                    backLayer.CurrentAlpha());

                renderer.DrawString(
                    "地下 " + (1 + info.bossRange * i) + " 階",
                    FLOOR_OFFSET + new Vector2(10, 25 * i + 35),
                    new Vector2(1.1f, 1.1f), color, backLayer.CurrentAlpha() * constractAlpha);
            }
        }
示例#10
0
        private double b(int n, int snum)
        {
            StageInfo stage = stages[snum];

            if (!stage.b_dirty[n])
            {
                return(stage.b[n]);
            }

            double ret;

            if (n == 0)
            {
                ret = stage.dV;
            }
            else
            {
                ret = b(n - 1, snum) * stage.tau - stage.v_e * MuUtils.IntPow(stage.T, n) / n;
            }

            stage.b[n]       = ret;
            stage.b_dirty[n] = false;

            return(ret);
        }
示例#11
0
        void UpdateStageStats()
        {
            if (stages.Count == 0)
            {
                InitStageStats();
            }

            for (int i = 0; i < stages.Count; i++)
            {
                StageInfo stage = stages[i];

                stage.kspStage = FixKSPStage(stage.kspStage, stage.parts);

                if (stage.kspStage >= 0)
                {
                    UpdateStageFromMechJeb(stage, i == 0);
                }
            }
            for (int i = stages.Count - 1; i >= 0; i--)
            {
                if (stages[i].kspStage < 0)
                {
                    /* if someone runs a booster program though the full boster we don't consume a PEG stage */
                    /* also if PEG is disabled manually we don't consume stages */
                    if (mode == AscentMode.GRAVITY_TURN && guidanceEnabled)
                    {
                        SetNumStages(Math.Max(1, num_stages - 1));
                    }
                    stages.RemoveAt(i);
                    InitConstantCache();
                }
            }
            // dirty the constant cache for the bottom stage because v_e and such is live and may be changing (even exoatmospheric due to Agathorn)
            DirtyCacheForStage(0);
        }
示例#12
0
 public void InitStageStats()
 {
     Debug.Log("MechJebModuleAscentPEG.InitStageStats()");
     terminalGuidance = false;
     stages.Clear();
     skippedParts.Clear();
     for (int i = vacStats.Length - 1; i >= 0; i--)
     {
         if (vacStats[i].deltaV > stageLowDVLimit)
         {
             StageInfo stage = new StageInfo();
             stage.parts    = vacStats[i].parts;
             stage.kspStage = i;
             UpdateStageFromMechJeb(stage, i == 0);
             stages.Add(stage);
         }
         else
         {
             skippedParts.AddRange(vacStats[i].parts);
         }
     }
     /* sometimes parts we want also wind up in zero dV stages and we need to remove them here */
     for (int i = 0; i < stages.Count; i++)
     {
         for (int j = 0; j < stages[i].parts.Count; j++)
         {
             if (skippedParts.Contains(stages[i].parts[j]))
             {
                 skippedParts.Remove(stages[i].parts[j]);
             }
         }
     }
     InitConstantCache();
     ResetBooleans();
 }
示例#13
0
    IEnumerator SpawnToPositionLoad()
    {
        footIK_AF.followTerrain = false;
        foreach (Rigidbody rb in rbs)
        {
            rb.velocity = Vector3.zero;
        }
        foreach (Collider collider in colliders)
        {
            collider.isTrigger = true;
        }
        yield return(new WaitForFixedUpdate());

        stageInfo = GameObject.FindGameObjectWithTag("StageInfo").GetComponent <StageInfo>();
        playerMove.transform.position       = stageInfo.SpawnPosition[PlayerID];
        playerMove.transform.eulerAngles    = stageInfo.SpawnRotation[PlayerID];
        playerRigHips.transform.position    = stageInfo.SpawnPosition[PlayerID];
        playerRigHips.transform.eulerAngles = stageInfo.SpawnRotation[PlayerID];

        yield return(new WaitForSeconds(1.5f));

        foreach (Rigidbody rb in rbs)
        {
            rb.velocity = Vector3.zero;
        }
        foreach (Collider collider in colliders)
        {
            collider.isTrigger = false;
        }
        if (!StageManager.InLobby && !SceneChangeTest.IsLoadingTutorial)
        {
            footIK_AF.followTerrain = true;
        }
        yield return(null);
    }
示例#14
0
        private double c(int n, int snum)
        {
            StageInfo stage = stages[snum];

            if (!stage.c_dirty[n])
            {
                return(stage.c[n]);
            }

            double ret;

            if (n == 0)
            {
                ret = b(0, snum) * stage.T - b(1, snum);
            }
            else
            {
                ret = c(n - 1, snum) * stage.tau - stage.v_e * MuUtils.IntPow(stage.T, n + 1) / (n * (n + 1));
            }

            stage.c[n]       = ret;
            stage.c_dirty[n] = false;

            return(ret);
        }
示例#15
0
    public static char[,] LoadMap(StageInfo stageInfo)
    {
        string fileName = "MapData";

        fileName += stageInfo.Stage.ToString() + "_" + stageInfo.Chapter.ToString();
        TextAsset textAsset = new TextAsset();                                //テキストファイルのデータを取得するインスタンスを作成

        textAsset = Resources.Load(fileName, typeof(TextAsset)) as TextAsset; //Resourcesフォルダから対象テキストを取得

        // 改行コード'\n'を取り除く
        string[] tmp = textAsset.text.Split('\n'); //テキスト全体をstring型で入れる変数を用意して入れる.

        // '\r'を取り除く
        for (int i = 0; i < tmp.GetLength(0); i++)
        {
            tmp[i] = tmp[i].TrimEnd('\r');
        }

        var data = new char[tmp.GetLength(0) - 1, tmp[0].Length];

        for (int row = 0; row < data.GetLength(0); row++)
        {
            for (int col = 0; col < data.GetLength(1); col++)
            {
                data[row, col] = tmp[row][col];
            }
        }
        return(data);
    }
示例#16
0
        private static void ApplySettingsChanges(ClassicStageInfo self, StageInfo stageInfo)
        {
            StageSettings settings = GetStageSettings(self);

            StageSettingsActions?.Invoke(settings, stageInfo);
            SetStageSettings(self, settings);
        }
示例#17
0
        private async Task <StageInfo> ScanFirstPick()
        {
            var finder    = new Finder();
            var stageInfo = new StageInfo {
                Step = -1
            };

            while (stageInfo.Step == -1 && !_scanningCancellationToken.IsCancellationRequested)
            {
                if (OcrUtil.SuspendScanning)
                {
                    await Task.Delay(1000);

                    continue;
                }
                stageInfo = finder.GetStageInfo();
                if (stageInfo.Step > -1)
                {
                    return(stageInfo);
                }

                await Task.Delay(1000);
            }

            return(stageInfo);
        }
示例#18
0
        /// <summary>
        /// FloorUIを更新
        /// </summary>
        public void InitFloor()
        {
            floorIndex = 0;
            floors     = new List <Button>();
            DungeonProcess process = gameManager.DungeonProcess;
            StageInfo      info    = stageInfo[dungeonIndex];
            int            limit   = 1;                     //制限階層

            if (process.HasKey(info.dungeonNo))             //攻略したことがあれば進捗で更新
            {
                limit = process.GetProcess()[info.dungeonNo];
            }

            int chooseFloor = info.totalFloor / info.bossRange;

            for (int i = 0; i < chooseFloor; i++)           //Buttonを作る
            {
                if ((1 + info.bossRange * i) > limit + 1)   //到達した階層以外は選択できない
                {
                    break;
                }

                Vector2 position = FLOOR_OFFSET + new Vector2(0, 25 * i + 35);
                Button  button   = new Button(position + new Vector2(0, 2), 280, 21);
                floors.Add(button);
            }
        }
示例#19
0
    public void LoadStage(int stageNum)
    {
        loading = true;

        InitStage();

        if (GameData.instance.stageList.Length > 0)
        {
            mapNo       = 0;
            objectNo    = 0;
            repeatNo    = 0;
            distance    = 0;
            currentWave = 0;

            currentStageInfo = GameData.instance.stageList[stageNum];

            float h = 0;
            float y = -screenY;
            float spriteH;

            while (h <= screenY * 2)
            {
                spriteH = AddNextBackground(y);

                y += spriteH;
                h += spriteH;
            }
        }
        loading = false;
    }
示例#20
0
    public void GenerateStage(bool useAllSpawns)
    {
        CurrentStageInfo = Stages[CurrentStageNum];

        foreach (SpawnInfo si in CurrentStageInfo.Spawns)
        {
            int usedCount = Random.Range(si.MinNumber, si.MaxNumber);
            for (int i = 1; i <= usedCount; i++)
            {
                GameObject spawnGO = Instantiate(si.prefabEnemy, CharacterHolder, true);

                Vector3    sourcePostion = si.SpawnLocation.position;
                NavMeshHit closestHit;
                if (NavMesh.SamplePosition(sourcePostion, out closestHit, 500, 1))
                {
                    spawnGO.transform.position = closestHit.position;
                    //print("Closest Point " + spawnGO.name + " | " + closestHit.position);
                    spawnGO.GetComponent <NavMeshAgent>().enabled = true;
                    spawnGO.GetComponent <NavMeshAgent>().Warp(closestHit.position);
                    spawnGO.transform.localScale = Vector3.zero;
                    LeanTween.scale(spawnGO, Vector3.one, 0.5f).setEaseInOutCirc();
                }
                else
                {
                    Debug.Log("...");
                }
            }
        }
    }
 // ステージ情報をセット
 void CatchStageInfo(StageInfo info)
 {
     this.killedMonster = 0;
     this.maxMonsterNumber = info.monsterNumber;
     Debug.Log("maxMonsterNumber : " + maxMonsterNumber);
     this.levelText.guiText.text = LV + info.stageLevel;
 }
        public void OpenStageSelect()
        {
            sSelectScreenGO.SetActive(true);
            cSelectScreenGO.SetActive(false);
            cSelectCamera.SetActive(false);

            //Cleanup
            foreach (Transform t in sSelectStageHolder.transform)
            {
                Destroy(t.gameObject);
            }

            //Create SSS
            for (int i = 0; i < gameInfo.stages.Length; i++)
            {
                GameObject go = Instantiate(sSelectStagePrefab, sSelectStageHolder.transform, false);

                StageInfo          sN     = gameInfo.stages[i];
                EventTrigger       et     = go.GetComponent <EventTrigger>();
                EventTrigger.Entry entryT = new EventTrigger.Entry();
                entryT.eventID = EventTriggerType.Submit;
                entryT.callback.AddListener((eventData) => { StartMatch(sN); });
                et.triggers.Add(entryT);

                EventTrigger.Entry entryCl = new EventTrigger.Entry();
                entryCl.eventID = EventTriggerType.PointerClick;
                entryCl.callback.AddListener((eventData) => { StartMatch(sN); });
                et.triggers.Add(entryCl);
            }
        }
示例#23
0
    public void AddPanel(StageInfo info)
    {
        StageSelectorPanel panel = panels[count];

        panel.SetPortrait(info);
        count++;
    }
示例#24
0
    private void SetStageInfo()
    {
        var manager = GameManager.Instance;

        string    nextStage     = "Stage" + nowSelected.ToString();
        StageInfo nextStageInfo = stageInfo[nextStage];

        stagePanel.SetDisplayFromStageInfo(nextStageInfo);

        isLocked = nextStageInfo.unlockCoin > manager.GetCollectedCoinNum();

        if (isLocked)
        {
            if (!locked)
            {
                var obj = Instantiate(Resources.Load("Prefabs/Locked") as GameObject, stagePanel.gameObject.GetComponent <Transform>());
                locked = obj.GetComponent <Locked>();
            }

            locked.SetUnlockInfoText(nextStageInfo.unlockCoin);
        }
        else
        {
            if (locked)
            {
                locked.GetComponent <Animator>().SetTrigger("Destroy");
                locked = null;
            }
        }
    }
示例#25
0
        private void FlameDrone_InteractableActions(List <DirectorCardHolder> arg1, StageInfo arg2)
        {
            DirectorCard dcFlameDrone = null;

            foreach (DirectorCardHolder dch in arg1)
            {
                if (dcFlameDrone == null && dch.Card.spawnCard.name.Contains("FlameDrone"))
                {
                    dcFlameDrone = dch.Card;
                    break;
                }
            }
            if (dcFlameDrone != null)
            {
                if (generalCfg.flameDroneWeightAbyssalDepths > 1 && arg2.stage == R2APIStage.AbyssalDepths)
                {
                    dcFlameDrone.selectionWeight *= generalCfg.flameDroneWeightAbyssalDepths;
                }
                else if (generalCfg.flameDroneWeightScorchedAcres > 1 && arg2.stage == R2APIStage.ScorchedAcres)
                {
                    dcFlameDrone.selectionWeight *= generalCfg.flameDroneWeightScorchedAcres;
                }
            }
            else
            {
                Log.Warning("GradiusModPlugin.FlameDrone_InteractableActions: Flame Drone Director Card not found!");
            }
        }
示例#26
0
        public static void UpdateStageView(StageInfo stage, MainWindowViewModel viewModel)
        {
            if (stage.status != null)
            {
                viewModel.Level = stage.status.level;

                viewModel.StaminaValue = stage.status.stamina.value;
                viewModel.StaminaMax   = stage.status.stamina.max;

                viewModel.ExpValue = stage.status.exp.value;
                viewModel.ExpMin   = stage.status.exp.min;
                viewModel.ExpMax   = stage.status.exp.max;

                viewModel.BpValue = stage.status.bp.value;
                viewModel.BpMax   = stage.status.bp.max;

                viewModel.TpValue = stage.status.tp.value;
                viewModel.TpMax   = stage.status.tp.max;

                if (viewModel.IsFuryRaidEnable)
                {
                    viewModel.Fever = stage.status.furyraid != null && stage.status.furyraid.fever != null;
                }

                if (viewModel.IsLimitedRaidEnable)
                {
                    viewModel.Fever = stage.status.limitedraid != null && stage.status.limitedraid.fever != null && stage.status.limitedraid.fever.gachaTicket != null;
                }

                if (viewModel.IsBreedingEnable)
                {
                    viewModel.Fever = stage.status.breeding != null && stage.status.breeding.fever != null && stage.status.breeding.fever.breedingPoint != null;
                }
            }
        }
示例#27
0
    void Start()
    {
        if (debugMode)
        {
            stageInfo.mapNumber = 0001;
            stageInfo.mapName   = "산 남부 중턱";
            stageInfo.areaName  = "디스메어 산";
            stageInfo.gridColor = new Color(0f, 179f / 255f, 63f / 255f);
            stageInfo.gameRule  = GameRules.DefaultRule;
        }
        else
        {
            stageInfo = GlobalData.stageInfo;
        }

        units      = new List <Unit>();
        skills     = new List <Skill>();
        gameRule   = GameRule.GetGameRule(stageInfo.gameRule);
        fieldState = new FieldState[12, 4];
        for (int x = 0; x < 12; ++x)
        {
            for (int y = 0; y < 4; ++y)
            {
                fieldState[x, y] = new FieldState();
            }
        }

        UIManager.Instance.Initialize();
        TouchManager.Instance.Initialize();
        CameraManager.Instance.Initialize();
        gameRule.Initialize();
        grid.Initialize();
        background.Initialize();
    }
示例#28
0
    public GameObject GetNextBackgroundObject(StageInfo stageInfo)
    {
        MapData           mapData;
        List <GameObject> backList;

        mapData  = stageInfo.mapList[mapNo];
        backList = GameData.instance.GetBackgroundObjectList(mapData.bgGroupName);

        // if one cycle of background images was finished,
        if (objectNo >= backList.Count)
        {
            objectNo = 0;

            // Checking whether this map is an infinity loop or not.
            //    mapData.repeatCount == 0 means this map items is looping infinitely.
            if (mapData.repeatCount > 0 && ++repeatNo >= mapData.repeatCount)
            {
                repeatNo = 0;

                // if the next map number > a size of the map list, assign 0 to mapNo.
                if (++mapNo >= stageInfo.mapList.Count)
                {
                    mapNo = 0;
                }

                mapData  = stageInfo.mapList[mapNo];
                backList = GameData.instance.GetBackgroundObjectList(mapData.bgGroupName);
            }
        }

        return(backList[objectNo++]);
    }
示例#29
0
    void LoadRandomStage()
    {
        AreaInfo SaveAreaInfo = new AreaInfo();

        if (!Isbonus)
        {
            for (int i = 0; i < 4; i++)
            {
                StageInfo SaveStage = RandomStagesInfos[SaveRandomIndex[i]];
                if (SaveAreaInfo.StageInfos.Contains(SaveStage))
                {
                    while (SaveAreaInfo.StageInfos.Contains(SaveStage))
                    {
                        SaveStage = RandomStagesInfos[UnityEngine.Random.Range(0, RandomStagesInfos.Count)];
                    }
                }
                SaveStage.StageNum      = i;
                SaveAreaInfo.AreaNumber = ClearedStandCount;
                SaveAreaInfo.StageInfos.Add(SaveStage);
            }
        }
        else
        {
            StageInfo SaveStage = RandomBonusStagesInfos[SaveRandomIndex[0]];
            SaveStage.StageNum      = 0;
            SaveAreaInfo.AreaNumber = ClearedBonusCount;
            SaveAreaInfo.StageInfos.Add(SaveStage);
        }
        CurrentArea = SaveAreaInfo;
    }
示例#30
0
        private static void ApplyMonsterChanges(ClassicStageInfo self, StageInfo stage)
        {
            var monsters     = self.GetFieldValue <DirectorCardCategorySelection>("monsterCategories");
            var monsterCards = new List <DirectorCardHolder>();

            foreach (var cat in monsters.categories)
            {
                MonsterCategory      monstCat = GetMonsterCategory(cat.name);
                InteractableCategory interCat = GetInteractableCategory(cat.name);
                foreach (var t in cat.cards)
                {
                    monsterCards.Add(new DirectorCardHolder {
                        InteractableCategory = interCat,
                        MonsterCategory      = monstCat,
                        Card = t
                    });
                }
            }
            MonsterActions?.Invoke(monsterCards, stage);
            var monsterBasic = new List <DirectorCard>();
            var monsterSub   = new List <DirectorCard>();
            var monsterChamp = new List <DirectorCard>();

            foreach (var hold in monsterCards)
            {
                switch (hold.MonsterCategory)
                {
                case MonsterCategory.BasicMonsters:
                    monsterBasic.Add(hold.Card);
                    break;

                case MonsterCategory.Champions:
                    monsterChamp.Add(hold.Card);
                    break;

                case MonsterCategory.Minibosses:
                    monsterSub.Add(hold.Card);
                    break;
                }
            }
            for (int i = 0; i < monsters.categories.Length; i++)
            {
                DirectorCardCategorySelection.Category cat = monsters.categories[i];
                switch (cat.name)
                {
                case "Champions":
                    cat.cards = monsterChamp.ToArray();
                    break;

                case "Minibosses":
                    cat.cards = monsterSub.ToArray();
                    break;

                case "Basic Monsters":
                    cat.cards = monsterBasic.ToArray();
                    break;
                }
                monsters.categories[i] = cat;
            }
        }
示例#31
0
    /// <summary>
    /// 通过传过来的关卡初始化(单个)
    /// </summary>
    /// <param name="info"></param>
    public void InitStage(StageInfo info)
    {
        /***********建议读表i***********/
        if (m_RootStageHandler != null)
        {
            return;
        }

        NormalStageData StageData  = null; // 生成的怪物的Enemy
        IStageScore     StageScore = null; // 通关的成绩
        IStageHandler   NewStage   = null;

        ////1
        StageData = new NormalStageData(1, GetSpawnPosition());
        StageData.AddStageData(ENUM_Enemy.Keraha, 1);
        StageScore = new StageScoreEnemyKilledCount(1, this);
        NewStage   = new NormalStageHandler(StageScore, StageData);

        // 设置初始关卡
        m_RootStageHandler = NewStage;

        //指定第一个关卡
        m_NowStageHandler = m_RootStageHandler;

        level = 0;
    }
 // Use this for initialization
 void Start()
 {
     stageInfo = GameObject.Find ("_Manager").GetComponent<StageInfo> ();
 }
	void Update()
    {
        temp = XMLManager.Instance.Load_StageData(dayManager._PassedDay - 1);
        
        GetComponent<Text>().text = temp.Sum.ToString();
    }
 void SetStageInfo()
 {
     this.info = new StageInfo(this.stageLevel, this.stageMonsterNumberList[this.stageLevel - 1], this.stageDethNumberList[this.stageLevel - 1]);
 }
    IEnumerator GameStateCheck()
    {
        while(true)
        {
            yield return new WaitForSeconds(0.05f);
            

            if(dayManager._isDay)
            {
                gameState = GameState.Day;
                spawnFlag = false;
            }
            else if(!dayManager._isDay)
            {
                stageInfo = XMLManager.Instance.Load_StageData(dayManager._PassedDay - 1);
                gameState = GameState.Night;
                if(!spawnFlag)
                {
                    SetSpawnList();
                }
            }

            if (gameState == GameState.Night)
            {
                if (spawnIndex > 0)
                {
                    if (enemyList.Count > 0)
                    {
                        foreach (GameObject obj in enemyList)
                        {
                            if (obj.GetComponent<Transform>().position.x < -5)
                            {
                                gameState = GameState.Die;
                            }
                        }
                    }
                    else
                    {
                        dayManager.Day();
                    }
                }

            }

            switch(gameState)
            {
                case GameState.Day:
                    break;
                case GameState.Night:
                    break;
                case GameState.Die:
                    _FadePlane.GetComponent<NextScene.NextSceneWithFadeInLerp>()._SceneIndex = 5;
                    _FadePlane.GetComponent<FadeInLerp>()._FadeIn = true;
                    break;
                case GameState.GameClear:
                    _FadePlane.GetComponent<NextScene.NextSceneWithFadeInLerp>()._SceneIndex = 5;
                    _FadePlane.GetComponent<FadeInLerp>()._FadeIn = true;
                    break;
            }
        }
    }
示例#36
0
    public StageInfo Load_StageData(int id)
    {
        StageInfo temp = new StageInfo();

        foreach(XmlNode node in stageTable)
        {
            if(id == int.Parse(node.SelectSingleNode("ID").InnerText))
            {
                temp.ID = id;
                temp.Name = node.SelectSingleNode("Name").InnerText;
                temp.Enemy1 = int.Parse(node.SelectSingleNode("Enemy01").InnerText);
                temp.Enemy2 = int.Parse(node.SelectSingleNode("Enemy02").InnerText);
                temp.Enemy3 = int.Parse(node.SelectSingleNode("Enemy03").InnerText);
                temp.Enemy4 = int.Parse(node.SelectSingleNode("Enemy04").InnerText);
                temp.Enemy5 = int.Parse(node.SelectSingleNode("Enemy05").InnerText);
                temp.Sum = int.Parse(node.SelectSingleNode("Sum").InnerText);

                return temp;
            }
        }
        return null;
    }
示例#37
0
 public void Init(StageInfo _info)
 {
     info = _info;
     stageName = GetComponentInChildren<UILabel>();
     stageName.text = info.Name;
 }