Exemplo n.º 1
0
        public GameObject Open <T>(string dialogID, T vo)
        {
            PrefabMap map = Array.Find(DialogPrefabs.Prefabs, p => p.ID == dialogID);

            if (default(PrefabMap).Equals(map))
            {
                return(null);                                            //Early out
            }
            GameObject dialog = Instantiate <GameObject>(map.Prefab, this.gameObject.transform);

            if (dialog != null)
            {
                DialogView cmp = dialog.GetComponent <DialogView>();
                if (cmp != null)
                {
                    cmp.Manager = this;
                    cmp.ID      = dialogID;
                    if (cmp is IInitializable <T> )
                    {
                        (cmp as IInitializable <T>).Initialize(vo);
                    }
                    cmp.OnOpen();
                }
                _dialogs.Add(dialog, dialogID);
                dialog.transform.SetParent(transform, false);
                dialog.GetComponent <RectTransform>().SetAsLastSibling();
                transform.SetAsLastSibling();
                gameObject.SetActive(true);
            }
            return(dialog);
        }
Exemplo n.º 2
0
        private void Awake()
        {
            PartyModel model = AmbitionApp.GetModel <PartyModel>();

            if (Map == null)
            {
                Map = model.LoadMap(transform.transform);
            }
            if (Map == null)
            {
                PrefabMap prefab = Array.Find(Maps, m => m.ID.ToLower() == model.Party.Faction.ToString().ToLower());
                if (prefab.Prefab == null)
                {
                    prefab = RNG.TakeRandom(Maps);
                }
                GameObject obj = Instantiate <GameObject>(prefab.Prefab, transform.transform);
                Map = obj.GetComponent <MapView>();
            }
            if (Map != null)
            {
                _rooms         = Map.GetComponentsInChildren <RoomView>();
                model.NumRooms = _rooms.Length;
                AmbitionApp.Subscribe <IncidentVO[]>(PartyMessages.SELECT_INCIDENTS, HandleIncidents);
                if (!string.IsNullOrEmpty(Map.Music.Name))
                {
                    AmbitionApp.SendMessage(AudioMessages.PLAY_MUSIC, Map.Music.Name);
                }
            }
        }
Exemplo n.º 3
0
    //文字列からマップの生成
    public PrefabMap LoadMap(string mapData, Vector2Int createPos)
    {
        int[][] intData = LoadMap(MapData(mapData));

        GameObject parent    = new GameObject();
        PrefabMap  prefabMap = new PrefabMap(intData, parent);

        parent.transform.position = (Vector2)createPos + new Vector2Int(0, prefabMap.leftTop);

        CreateMap(intData, parent);

        return(prefabMap);
    }
Exemplo n.º 4
0
        private void HandleScene(string sceneID)
        {
            if (_sceneID == sceneID)
            {
                return;
            }
            PrefabMap map = Array.Find(Scenes, s => s.ID == sceneID);

            if (map.Prefab != null)
            {
                StopAllCoroutines();
                _sceneID = sceneID;
                foreach (Transform child in transform)
                {
                    Destroy(child.gameObject);
                }

                GameObject scene = Instantiate(map.Prefab, transform);
                StartCoroutine(ReadyCheck(scene));
            }
        }