Пример #1
0
 public void GetEntranceDirection(SubStage subStage)
 {
     entranceDirection = subStage.GetForegroundDirection(playerModelObject.transform.position);
     subStageObject    = subStage;
     initModelAngle    = playerModelObject.transform.eulerAngles;
     curveTimer.Initialize();
 }
Пример #2
0
    /// <summary>
    /// 次のサブステージを生成する
    /// </summary>
    private void SpawnNextSubStage()
    {
        //直前のステージに合致するステージを生成する
        SubStage   prevStage     = subStages.Last();
        GameObject next          = GetNextSubStagePrefab(GatewayTypeExtend.ChainableType(prevStage.ExitType));
        Vector3    spawnPosition = prevStage.transform.position + SubStageOffset(prevStage.ExitType);
        GameObject newObject     = Instantiate(next, spawnPosition, Quaternion.identity);
        SubStage   newSubStage   = newObject.GetComponent <SubStage>();

        subStages.Add(newSubStage);

        if (reserveNextStageType.HasValue)
        {
            if (reserveNextStageType.Value == SubStageShapeType.Goal)
            {
                goalGenerated = true;
            }
            reserveNextStageType = null;
        }
        else
        {
            spawnedSubStageNum++;
        }

        if (!goalGenerated)
        {
            newSubStage.SpawnObjects(stageParameter.GetSpawnObjectsParameterByPhase(currentWavePhase), 5);
        }
    }
Пример #3
0
        public VMRandomComannds()
        {
            TeamGroupHandler handler = new TeamGroupHandler();
            //IDataResult<List<ISubStage>> result = handler.GenerateTeamGroups(1);
            //groups = new List<List<string>>();

            //if (result.Success)
            //{
            //    List<ISubStage> substages = result.Data;

            //    foreach (ISubStage teams in substages)
            //    {

            //        List<IGroupTeam> groupsTeam=  teams.TeamInformation.TeamsInGroup;
            //        List<string> names = new List<string>();

            //        foreach(var s in groupsTeam)
            //        {
            //            names.Add(s.Name);
            //        }
            //        groups.Add(names);
            //    }
            //}


            SubStage stage = new SubStage();
        }
Пример #4
0
        public IResult SubStageFile(string pathArchiv)
        {
            List <string> stagesArchiv = Directory.GetDirectories
                                             (pathArchiv).ToList();
            IDataResult <MemoryStream> result =
                new DataResult <MemoryStream>()
            {
                Success = false
            };
            List <IStage> listStages = new List <IStage>();

            foreach (var stage in configSection.StageItems)
            {
                IStage currentStage = new Stage();

                List <string> substatages = new List <string>();

                if (stagesArchiv.Count >= stage.StageNumber)
                {
                    substatages = Directory.GetDirectories
                                      (stagesArchiv[stage.StageNumber - 1]).ToList();
                }

                currentStage.Name        = stage.StageNumber.ToString();
                currentStage.StageNumber = stage.StageNumber;

                int i = 0;
                List <ISubStage> listSubStages = new List <ISubStage>();

                foreach (var subStage in stage.SubStageItems)
                {
                    List <string> topicThems = new List <string>();

                    if (substatages.Count - 1 >= i)
                    {
                        topicThems = Directory.GetFiles
                                         (substatages[i]).ToList();
                    }

                    string pathImage = topicThems[0];

                    ISubStage sub = new SubStage();
                    sub.ArchivePath = pathArchiv;
                    sub.Image       = SaveImageFile(pathImage);
                    listSubStages.Add(sub);
                    i++;
                }

                currentStage.ChildItemss = listSubStages;
                listStages.Add(currentStage);
            }
            Game game = new Game();

            game.ChildItemss               = listStages;
            GameEntityHolder.Game          = game;
            GameEntityHolder.PathToArchive = pathArchiv;
            // GameEntityHolder.Game.ChildItemss[0].ChildItemss[0].ChildItemss[0].
            return(result);
        }
Пример #5
0
 public void Initialize()
 {
     LanePositionList = new List <Transform>();
     for (int i = 0; i < transform.childCount; i++)
     {
         LanePositionList.Add(transform.GetChild(i));
     }
     entranceDirection = Vector3.zero;
     subStageObject    = null;
     curveTimer        = new Timer();
 }
Пример #6
0
    /// <summary>
    /// 次のステージプレハブを取得する
    /// </summary>
    /// <param name="type">次のステージの入口の種類</param>
    /// <returns>入口の種類が一致するステージのプレハブを返す</returns>
    private GameObject GetNextSubStagePrefab(GatewayType type)
    {
        List <SubStagePrefabInfo> sameTypePrefabs;

        //次ステージの種類の予約があればそれを採用する
        if (reserveNextStageType.HasValue)
        {
            sameTypePrefabs = subStagePrefabs.FindAll(obj => obj.type == reserveNextStageType.Value && obj.prefab.GetComponent <SubStage>().EntranceType == type);
        }
        else
        {
            sameTypePrefabs = subStagePrefabs.FindAll(obj => obj.type == SubStageShapeType.Straight && obj.prefab.GetComponent <SubStage>().EntranceType == type);
        }

        //その中から適当なプレハブを選ぶ
        int        prefabIndex    = Random.Range(0, sameTypePrefabs.Count());
        GameObject prefab         = sameTypePrefabs.ElementAt(prefabIndex).prefab;
        SubStage   prefabSubStage = prefab.GetComponent <SubStage>();

        return(prefab);
    }
Пример #7
0
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Q))
        {
            Debug.Log(player.transform.position);
        }
        //スタートイベント中だったら
        if (eventManager.StartEventFlag == false)
        {
            return;
        }

        Vector3 scrollDirection = GetForegroundDirection(player.transform.position);

        if (prevScrolledDirection != scrollDirection)
        {
            int index = -1;
            for (int i = 0; i < subStages.Count; i++)
            {
                if (subStages[i].IsInArea(player.transform.position))
                {
                    index = i;
                }
            }
            if (index == -1)
            {
                Debug.LogError("Playerのいるサブステージが取得できませんでした。");
            }

            subStages[index].transform.position = Vector3.zero;
            for (int i = index + 1; i < subStages.Count; i++)
            {
                subStages[i].transform.position = subStages[i - 1].transform.position + SubStageOffset(subStages[i - 1].ExitType);
            }
            for (int i = index - 1; i >= 0; i--)
            {
                subStages[i].transform.position = subStages[i + 1].transform.position + SubStageOffset(subStages[i + 1].EntranceType);
            }
        }

        prevScrolledDirection = scrollDirection;
        scrollDirection       = scrollDirection.normalized;
        float speed = gameSpeed.Speed * Time.deltaTime;

        foreach (var st in subStages)
        {
            st.Move(scrollDirection, speed);
        }

        CalcToNeedNextStageReserve();

        SubStage frontStage = subStages.First();

        if (!frontStage.IsInsideCamera && stageDeletable)
        {
            //プレイヤーより前にいったので範囲外になったため、削除する
            Destroy(frontStage.gameObject);
            subStages.RemoveAt(0);

            //新しく追加する
            SpawnNextSubStage();

            //ゴールの生成する条件を満たしているかどうかの判定式
            System.Func <bool> IsFlaggedGenerateGoal = () =>
            {
                //すでに生成済みなら再度生成はしない
                if (goalGenerated)
                {
                    return(false);
                }
                //プレイモードがエンドレスならゴールは生成されない
                if (GameDataStore.Instance.PlayedMode == PlayMode.Holiday)
                {
                    return(false);
                }
                //生成済みステージ数がゴール生成に必要なウェーブ数と一致しているときに、次のゴールを生成する
                return(spawnedSubStageNum == stageParameter.stageGoalWaveNum);
            };

            if (IsFlaggedGenerateGoal())
            {
                ReserveNextSubstageShapeType(SubStageShapeType.Goal);
            }
        }
    }