Example #1
0
 public void Copy(StgStageJsonEnemyItemDropDatas source)
 {
     // データの中身をコピーする
     Initialize();
     foreach (StgStageJsonEnemyItemDropData data in source.dropList)
     {
         AddData(data);
     }
 }
Example #2
0
    public override GameObject Create(StgEnemyConstant.Type type, StgStageJsonEnemyItemDropDatas itemDropDatas)
    {
        NormalEnemy normalEnemy = null;

        if (type == StgEnemyConstant.Type.kEnemyNormal)
        {
            GameObject enemy = (GameObject)Resources.Load(SceneShare.Instance.GetGameResourcePathData().Get(GameResourcePathDefine.Type.kNormalEnemyPrefab));
            MhCommon.Assert(enemy != null, "StgEnemyFactory::Create() kEnemyNormal null");
            enemy = Object.Instantiate(enemy);

            normalEnemy = enemy.GetComponent <NormalEnemy>();
            StgItemMultiDropper dropper = new StgItemMultiDropper();
            for (int i = 0; i < itemDropDatas.GetCount(); ++i)
            {
                StgStageJsonEnemyItemDropData dropData = itemDropDatas.Get(i);
                dropper.SetParameter(dropData.Offset, dropData.Type);
            }
            dropper.Print();
            normalEnemy.SetItemDropper(dropper);

            /*
             *              NormalEnemy enemyBase = enemy.GetComponent<NormalEnemy>();
             *              StgItemMultiDropper dropper = new StgItemMultiDropper();
             *              for (int i = 0; i < launchData.enemyItemDropDatas.GetCount(); ++i) {
             *                      StgStageJsonEnemyItemDropData dropData = launchData.enemyItemDropDatas.Get(i);
             *                      dropper.SetParameter(dropData.Offset, dropData.Type);
             *              }
             *              dropper.Print();
             *              enemyBase.SetItemDropper(dropper);
             *
             */

            return(enemy);
        }
        else if (type == StgEnemyConstant.Type.kStraightMoveEnemy)
        {
            GameObject enemy = (GameObject)Resources.Load(SceneShare.Instance.GetGameResourcePathData().Get(GameResourcePathDefine.Type.kStraightMoveEnemyPrefab));
            MhCommon.Assert(enemy != null, "StgEnemyFactory::Create() kNormalEnemyPrefab null");
            enemy = Object.Instantiate(enemy);
            return(enemy);
        }
        else
        {
            MhCommon.Assert(false, "StgEnemyFactory::Create() StgEnemyConstant.Type invalid type=" + type);
            return(null);
        }
    }
Example #3
0
    public void Initialize(string resourcePath)
    {
        LoadTextAsset textAsset = new LoadTextAsset();

        textAsset.SetResourcePath(resourcePath);
        bool result = textAsset.Load(true);

        if (result)
        {
            // テキストデータ取得
            var data = textAsset.Get();
            // jsonパース
            var json2 = Utf8Json.JsonSerializer.Deserialize <dynamic>(data);
            System.Collections.Generic.Dictionary <string, object> json3 = json2["stage_data"];

            // 読み込んだjsonデータを敵の出撃データとしてリストに保持する
            foreach (KeyValuePair <string, object> stageDatas in json3)
            {
                Dictionary <string, object> stageParameters = (Dictionary <string, object>)stageDatas.Value;
                StgStageJsonEnemyLaunchData launchData      = new StgStageJsonEnemyLaunchData();
                foreach (KeyValuePair <string, object> stageData in stageParameters)
                {
                    var    key = stageData.Key;
                    string val = stageData.Value as string;
                    if (val != null)
                    {
                        // 値がstringへ変換できた
                        switch (key)
                        {
                        case "enemy_type":
                            launchData.enemy_type = val as string;
                            break;

                        case "time":
                            launchData.time = float.Parse(val);
                            break;

                        case "x":
                            launchData.x = float.Parse(val);
                            break;

                        case "y":
                            launchData.y = float.Parse(val);
                            break;

                        case "z":
                            launchData.z = float.Parse(val);
                            break;

                        default:
                            break;
                        }
                    }
                    else
                    {
                        StgStageJsonEnemyItemDropDatas itemDropDatas = new StgStageJsonEnemyItemDropDatas();
                        // key,value形式
                        switch (key)
                        {
                        case "item_drop_data":

                            List <object> itemDropList = stageData.Value as List <object>;
                            foreach (object test in itemDropList)
                            {
                                Dictionary <string, object>   items        = test as Dictionary <string, object>;
                                StgStageJsonEnemyItemDropData itemDropData = new StgStageJsonEnemyItemDropData();
                                foreach (KeyValuePair <string, object> item in items)
                                {
                                    string itemValue = item.Value as string;
                                    switch (item.Key)
                                    {
                                    case "type":
                                        itemDropData.Type = StgItemConstant.GetStringToType(itemValue);
                                        break;

                                    case "offset_x":
                                    {
                                        Vector3 offset = itemDropData.Offset;
                                        offset.x            = float.Parse(itemValue);
                                        itemDropData.Offset = offset;
                                    }
                                    break;

                                    case "offset_y":
                                    {
                                        Vector3 offset = itemDropData.Offset;
                                        offset.y            = float.Parse(itemValue);
                                        itemDropData.Offset = offset;
                                    }
                                    break;

                                    case "offset_z":
                                    {
                                        Vector3 offset = itemDropData.Offset;
                                        offset.z            = float.Parse(itemValue);
                                        itemDropData.Offset = offset;
                                    }
                                    break;

                                    default:
                                        break;
                                    }
                                }
                                itemDropDatas.AddData(itemDropData);
                            }
                            launchData.enemyItemDropDatas.Copy(itemDropDatas);
                            break;

                        default:
                            break;
                        }
                    }
                }
                launchDatas.AddData(launchData);
            }
            launchDatas.Print();
        }
        else
        {
            launchDatas.Initialize();
            throw new System.ArgumentException(string.Format("resource={0} json parse failure", resourcePath));
        }
    }
Example #4
0
 public abstract GameObject Create(StgEnemyConstant.Type type, StgStageJsonEnemyItemDropDatas itemDropDatas);