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); }
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); } } }
//文字列からマップの生成 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); }
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)); } }