private Level DeserializeLevel(LevelData levelData) { Level level = new Level(levelData.width, levelData.height, levelData.length); level.InitializeLevel(); int x, y, z; Node.Direction facing = Node.Direction.FORWARD; Node.Direction upDirection = Node.Direction.UP; for (int i = 0; i < levelData.nodeDataList.Count; i++) { NodeData nodeData = levelData.nodeDataList[i]; x = nodeData.x; y = nodeData.y; z = nodeData.z; if (nodeData.facing != "" && nodeData.upDirection != "") { facing = (Node.Direction) int.Parse(nodeData.facing); upDirection = (Node.Direction) int.Parse(nodeData.upDirection); } level.SetNode(x, y, z, nodeData.id, facing, upDirection); } for (int i = 0; i < levelData.nodeMemberDataList.Count; i++) { NodeMemberData nodeMemberData = levelData.nodeMemberDataList[i]; x = nodeMemberData.x; y = nodeMemberData.y; z = nodeMemberData.z; if (nodeMemberData.facing != "" && nodeMemberData.upDirection != "") { facing = (Node.Direction) int.Parse(nodeMemberData.facing); upDirection = (Node.Direction) int.Parse(nodeMemberData.upDirection); } level.AddNodeMember(x, y, z, nodeMemberData.id, facing, upDirection); } for (int i = 0; i < levelData.nodeConnections.Count; i++) { level.NodeConnections.Add(levelData.nodeConnections[i]); } return(level); }
private LevelData SerializeLevel(Level level) { LevelData levelData = new LevelData(level.Width, level.Height, level.Length); for (int x = 0; x < level.Width; x++) { for (int y = 0; y < level.Height; y++) { for (int z = 0; z < level.Length; z++) { if (level.NodeMap[x, y, z].Id != 0) { NodeData nodeData = new NodeData(level.NodeMap[x, y, z]); levelData.nodeDataList.Add(nodeData); } if (level.NodeMap[x, y, z].NodeMember != null) { if (level.NodeMap[x, y, z].NodeMember.Id != 0) { NodeMemberData nodeMemberData = new NodeMemberData(level.NodeMap[x, y, z].NodeMember, x, y, z); levelData.nodeMemberDataList.Add(nodeMemberData); } } } } } for (int i = 0; i < level.NodeTogglers.Count; i++) { NodeToggler t = level.NodeTogglers[i]; Vector3 tPos = t.GetPos(); Vector3 rPos = t.GetConnectNodePosition(); NodeConnection connection = new NodeConnection((int)tPos.x, (int)tPos.y, (int)tPos.z, (int)rPos.x, (int)rPos.y, (int)rPos.z); levelData.nodeConnections.Add(connection); } return(levelData); }