Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
    // 룸정보를 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);
    }
Ejemplo n.º 3
0
    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]);
    }
Ejemplo n.º 4
0
    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");
    }
Ejemplo n.º 5
0
    //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 파일에 작성
    }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
 public GameState(GraphicsDeviceManager graphics, SpriteBatch spriteBatch, Game game, int levelNum) : base(graphics, spriteBatch, game)
 {
     _rw = new RoomWrapper(levelNum, this);
 }
Ejemplo n.º 8
0
    /// <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();
    }
Ejemplo n.º 9
0
    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);
    }
Ejemplo n.º 10
0
 public bool Equals(RoomWrapper other)
 {
     return(Id == other.Id);
 }