public void Init(int index, Message.DungeonTileType type, Vector2Int position) { this.index = index; this.type = type; this.position = position; gameObject.name = "Tile_" + index.ToString() + "_" + type.ToString(); if (Message.DungeonTileType.Floor == type) { touchInput = gameObject.AddComponent <TouchInput>(); touchInput.on_touch_up = (Vector3 pos) => { Util.EventSystem.Publish <Vector2Int>(EventID.Event_OnTouch, this.position); }; } spriteRenderer = gameObject.AddComponent <SpriteRenderer>(); }
private void Recv_CreateDungeon_Ans(Message.Dungeon.MsgSvrCli_CreateDungeon_Ans ans) { GameManager.Instance.LobbySession.UnregisterHandler <Message.Dungeon.MsgSvrCli_CreateDungeon_Ans>(Recv_CreateDungeon_Ans); if (Message.ErrorCode.Success != ans.error_code) { GameManager.Instance.ui.alert.Open("MsgSvrCli_CreateDungeon_Ans", ans.error_code.ToString() + "(" + ans.error_code.ToString() + ")"); return; } gameObject.SetActive(true); Camera.main.enabled = false; this.width = ans.width; this.height = ans.height; this.tiles = new List <Tile>(new Tile[width * height]); for (int y = 0; y < height; y++) { for (int x = 0; x < width; x++) { if (Message.DungeonTileType.Invalid == ans.tiles[y * width + x]) { continue; } GameObject obj = new GameObject(); obj.transform.SetParent(tile_root, false); obj.transform.localPosition = new Vector3(x, y, 0.0f); obj.SetActive(false); Tile tile = obj.AddComponent <Tile>(); int index = y * width + x; Message.DungeonTileType tileType = ans.tiles[index]; Vector2Int position = new Vector2Int(x, y); tile.Init(index, tileType, position); tiles[y * width + x] = tile; } } Unit player = GameObject.Instantiate <Unit>(player_prefab); player.seq = ans.unit_seq; player.GetComponent <PlayerController>().enabled = true; player.transform.SetParent(unit_root, false); player.position = new Vector2Int(ans.position.x, ans.position.y); units.Add(player.seq, player); foreach (var comrade in ans.comrades) { Unit unit = GameObject.Instantiate <Unit>(player_prefab); unit.seq = comrade.unit_seq; unit.GetComponent <PlayerController>().enabled = false; unit.transform.SetParent(unit_root, false); foreach (UInt32 itemIndex in comrade.equip_items) { Item.Meta meta = Item.Manager.Instance.FindMeta(itemIndex); unit.GetComponent <Player>().OnEquip(meta.equip.part, meta.equip.item_sprite); } unit.position = new Vector2Int(comrade.position.x, comrade.position.y); units.Add(unit.seq, unit); } /* * foreach (var monster in ans.monsters) * { * GameObject obj = new GameObject(); * obj.name = "Monster_" + monster.seq; * Unit unit = obj.AddComponent<Unit>(); * unit.seq = monster.seq; * unit.position = new Vector2Int(monster.position.x, monster.position.y); * //obj.transform.SetParent(GameManager.Instance.scenes.dungeon.transform); * obj.AddComponent<Monster>(); * //GameManager.Instance.scenes.dungeon.monsters[unit.seq] = unit; * } */ }