public static Game FromXml(XElement xml) { Game g = new Game(); Editor.MainViewModel mvm = Editor.MainViewModel.FromXML(xml); g.Settings = mvm.Settings; foreach (var zone in mvm.Zones) { g.Zones.Add(zone.ZoneId, new ZoneWrapper(zone)); foreach (var room in zone.Rooms) { var roomWrapper = new RoomWrapper(room); g.Rooms.Add(room.RoomID, roomWrapper); } } foreach (var v in mvm.Variables) { var wrapper = new VariableWrapper(v); g.VarById[v.Id] = wrapper; g.VarByName[v.Name] = wrapper; } foreach (var stat in mvm.Settings.PlayerStatistics) { g.Statistics.Add(new PlayerStatisticWrapper(stat)); } foreach (var a in mvm.Settings.EquipmentSlots) { g.EquippedItems.Add(a, null); } foreach (var a in mvm.Arrays) { g.ArraysById.Add(a.Id, new List <object>()); } return(g); }
// 룸정보를 json 데이터로 보낸다.. public void RoomSendData() { socket = new UdpClient(); IPEndPoint ep = new IPEndPoint(IPAddress.Parse(host), port); socket.Connect(ep); // json 데이터의 포장지 느낌 RoomWrapper wrapper = new RoomWrapper(); wrapper.roomData = roomData; string room = JsonUtility.ToJson(wrapper, true); System.IO.File.WriteAllText(roomPath, room); // json 파일에 작성 //string s = System.IO.File.ReadAllText(roomPath); //// Json 데이터 보내기 //MemoryStream memoryStream = new MemoryStream(); ////.NET 객체를 JSON으로 변환하고 다시 복원할때 사용한다. //DataContractJsonSerializer serRoom = new DataContractJsonSerializer(typeof(RoomWrapper)); //serRoom.WriteObject(memoryStream, wrapper); //memoryStream.Position = 0; //StreamReader sr = new StreamReader(memoryStream); var data = Encoding.UTF8.GetBytes(room); // Debug.Log("b" + data.ToString()); socket.Send(data, data.Length); }
void Start() { float height = 2.0f * Camera.main.orthographicSize; screenWidthInPoints = height * Camera.main.aspect; if (currentRooms == null) { currentRooms = new List <GameObject>(); AddRoom(); } if (currentObjects == null) { currentObjects = new List <GameObject>(); AddObject(); } currentRooms = currentRooms.OrderBy(room => room.transform.position.x).ToList(); currentObjects = currentObjects.OrderBy(room => room.transform.position.x).ToList(); nearestRoom = new RoomWrapper(currentRooms[0]); farthestRoom = new RoomWrapper(currentRooms[currentRooms.Count - 1]); nearestObject = new ObjectWrapper(currentObjects[0]); farthestObject = new ObjectWrapper(currentObjects[currentObjects.Count - 1]); }
public override void Initializing() { id = totalID++; // Debug.Log("Initialzing door " + this.gameObject.name); int wall = -1; if (room1 == null) { throw new System.Exception("Room1 is required"); } if (room2 == null) { wall = GetContactWall(room1); } else { wall = room1.GetContactEdge(room2); } source = new RoomWrapper(room1, wall, this.Position); target = new RoomWrapper(room2, (wall + 2) % 4, this.Position); this.gameObject.layer = LayerMask.NameToLayer("Door"); }
//jsondata 저장 하기 public void RoomSaveData() { // json 데이터의 포장지 느낌 RoomWrapper wrapper = new RoomWrapper(); wrapper.roomData = roomData; string room = JsonUtility.ToJson(wrapper, true); System.IO.File.WriteAllText(roomPath, room); // json 파일에 작성 }
public async Task <Room> CreateNewRoom(string discovererId, Direction fromDir, int?fromRoomId) { // Initial create of room RoomWrapper wrapper = await _roomsClient.PostCreateRoom(discovererId, fromDir, fromRoomId); Room room = wrapper.Room; //Check whether monster needed to be created if (wrapper.IsMonsterNeeded) { // Create monster and recieve it's id int monsterId = await _monstersClient.PostCreateMonster(); // Put monsterId at room room = await _roomsClient.PatchPutMonster(room.RoomId, monsterId); } return(room); }
public GameState(GraphicsDeviceManager graphics, SpriteBatch spriteBatch, Game game, int levelNum) : base(graphics, spriteBatch, game) { _rw = new RoomWrapper(levelNum, this); }
/// <summary> /// Serializes rooms. /// </summary> /// <param name="tilemaps">Tilemaps from a single room. They should be ordered from bottom to top in layers.</param> /// <param name="FileName">Name of the serialized data file that will be saved.</param> public void SerializeRoom(Tilemap[] tilemaps, int[] layerNumbers, String FileName) { FileName = "PremadeRooms/" + FileName; List <TilemapWrapper> tilemapWrappers = new List <TilemapWrapper>(); _stream = File.Open(Path.Combine(Application.dataPath, FileName), FileMode.OpenOrCreate); Vector3Int[] positions = new Vector3Int[tilemaps.Length]; // HARDCODED TO 0.5, because unity treats it as half, it will always be half Vector2 halfPivot = new Vector2(0.5f, 0.5f); TilemapWrapper?tilemapFlag = null; int sizeOfTilemaps = 0; int iterator = 0; foreach (Tilemap tilemap in tilemaps) { tilemap.CompressBounds(); List <SerializableVector3Int> tilePositionsInTilemap = new List <SerializableVector3Int>(); List <string> namesInTilemap = new List <string>(); List <float> xmins = new List <float>(); List <float> ymins = new List <float>(); List <float> widths = new List <float>(); List <float> heights = new List <float>(); float pixelsPerUnit = 0; int layerNumber = layerNumbers[iterator]; foreach (Vector3Int tilePosition in tilemap.cellBounds.allPositionsWithin) { if (tilemap.GetTile(tilePosition) != null) { tilePositionsInTilemap.Add(tilePosition); Sprite sprite = tilemap.GetSprite(tilePosition); namesInTilemap.Add(sprite.texture.name); var rect = sprite.rect; xmins.Add(rect.xMin); ymins.Add(rect.yMin); widths.Add(rect.width); heights.Add(rect.height); pixelsPerUnit = sprite.pixelsPerUnit; } } if (tilemap.gameObject.tag == "Flag") { tilemapFlag = new TilemapWrapper(tilePositionsInTilemap.ToArray(), namesInTilemap.ToArray(), xmins.ToArray(), ymins.ToArray(), widths.ToArray(), heights.ToArray(), halfPivot, pixelsPerUnit, layerNumber); } else { tilemapWrappers.Add(new TilemapWrapper(tilePositionsInTilemap.ToArray(), namesInTilemap.ToArray(), xmins.ToArray(), ymins.ToArray(), widths.ToArray(), heights.ToArray(), halfPivot, pixelsPerUnit, layerNumber)); } iterator++; } // if we didnt manage to find the tileflag throw a warning if (tilemapFlag != null) { RoomWrapper roomWrapper = new RoomWrapper(tilemapWrappers.ToArray(), tilemapFlag.Value); _formatter.Serialize(_stream, roomWrapper); } else { Debug.LogError("No tilemap flag was added, make sure this is intentional." + "Object: " + FileName); } _stream.Close(); }
public GameObject DeserializeAndCreateRoom(String FileName) { GameObject gridObject = GameObject.FindWithTag("Grid"); FileName = "PremadeRooms/" + FileName; _stream = File.Open(Path.Combine(Application.dataPath, FileName), FileMode.Open); RoomWrapper roomWrapper = (RoomWrapper)_formatter.Deserialize(_stream); TilemapWrapper[] tilemapWrappers = roomWrapper.tilemapLayers; TilemapWrapper? tilemapFlag = roomWrapper.tilemapFlag; GameObject roomObject = new GameObject(FileName); roomObject.transform.SetParent(gridObject.transform); int layerIndexer = 0; foreach (var tilemapWrapper in tilemapWrappers) { GameObject layerObject = new GameObject(layerIndexer.ToString()); layerObject.transform.SetParent(roomObject.transform); Tilemap objectTilemap = layerObject.AddComponent <Tilemap>(); layerObject.AddComponent <TilemapRenderer>().sortingOrder = tilemapWrappers[layerIndexer].layerNumber; int tileIndexer = 0; Tile[] singleLayerTiles = new Tile[tilemapWrapper.tilePositions.Length]; foreach (var tilePosition in tilemapWrapper.tilePositions) { Rect rect = new Rect(tilemapWrapper.m_XMins[tileIndexer], tilemapWrapper.m_YMins[tileIndexer], tilemapWrapper.m_Widths[tileIndexer], tilemapWrapper.m_Heights[tileIndexer]); Tile createdTile = ScriptableObject.CreateInstance <Tile>(); Texture2D texture2D = Resources.Load <Texture2D>(tilemapWrapper.textureNames[tileIndexer]); Sprite recreatedSprite = Sprite.Create(texture2D, rect, tilemapWrapper.pivot, tilemapWrapper.pixelPerUnit); createdTile.sprite = recreatedSprite; objectTilemap.SetTile(tilePosition, createdTile); tileIndexer++; } layerIndexer++; } // we deal with the flagtile differently if (tilemapFlag != null) { //we know the flag is there so we get rid of the nullable TilemapWrapper tilemapFlagValue = tilemapFlag.Value; GameObject layerObject = new GameObject(layerIndexer.ToString()); layerObject.transform.SetParent(roomObject.transform); Tilemap objectTilemap = layerObject.AddComponent <Tilemap>(); //just for debugging layerObject.AddComponent <TilemapRenderer>().enabled = false; layerObject.tag = "Flag"; int tileIndexer = 0; Tile[] singleLayerTiles = new Tile[tilemapFlagValue.tilePositions.Length]; foreach (var tilePosition in tilemapFlagValue.tilePositions) { Rect rect = new Rect(tilemapFlagValue.m_XMins[tileIndexer], tilemapFlagValue.m_YMins[tileIndexer], tilemapFlagValue.m_Widths[tileIndexer], tilemapFlagValue.m_Heights[tileIndexer]); Tile createdTile = ScriptableObject.CreateInstance <Tile>(); Texture2D texture2D = Resources.Load <Texture2D>(tilemapFlagValue.textureNames[tileIndexer]); Sprite recreatedSprite = Sprite.Create(texture2D, rect, tilemapFlagValue.pivot, tilemapFlagValue.pixelPerUnit); createdTile.sprite = recreatedSprite; objectTilemap.SetTile(tilePosition, createdTile); tileIndexer++; } } _stream.Close(); return(roomObject); }
public bool Equals(RoomWrapper other) { return(Id == other.Id); }