예제 #1
0
    // Use this for initialization
    void Start()
    {
        m_instance = this;
        m_roomTemplateTable = new Dictionary<string, RoomTemplate>();

        if (m_compressedRoomTemplateList != null && m_compressedRoomTemplateList.Length > 0)
        {
            // Build the room template lookup table from the room template list
            foreach (CompressedRoomTemplate compressedRoomTemplate in m_compressedRoomTemplateList)
            {
                m_roomTemplateTable.Add(
                    compressedRoomTemplate.templateName,
                    RoomTemplate.ParseCompressedRoomTemplate(compressedRoomTemplate));
            }

            if (m_debugging)
            {
                Debug.LogWarning("RoomTemplateManager: Dumping " + mapTemplatePath + "/ClientRoomTemplates.txt");
                DumpRoomTemplates();
            }
        }
        else
        {
            Debug.LogError("RoomTemplateManager: Room Templates missing!");
        }
    }
예제 #2
0
 void Start()
 {
     spawnedRoom = false;
     Destroy(gameObject, m_timer);
     template = GameObject.FindGameObjectWithTag("Rooms").GetComponent <RoomTemplateManager>();
     Invoke("SpawnRooms", 0.1f);
 }
예제 #3
0
    public static StaticRoomData FromObject(RoomKey roomKey, JsonData jsonData)
    {
        StaticRoomData staticRoomData = new StaticRoomData();

        // Fill in the room objects
        JsonData roomObjectArray = jsonData["objects"];

        if (roomObjectArray != null)
        {
            for (int roomObjectIndex = 0; roomObjectIndex < roomObjectArray.Count; roomObjectIndex++)
            {
                JsonData   roomObject = roomObjectArray[roomObjectIndex];
                RoomObject room       = RoomObject.FromObject(roomObject);

                staticRoomData.RoomObjects.Add(room);
            }
        }

        // Retrieve the room template by name
        string templateName = (string)jsonData["room_template_name"];

        staticRoomData.RoomTemplate = RoomTemplateManager.GetRoomTemplate(templateName);

        // Copy the nav mesh from the template
        staticRoomData.NavMesh =
            new AsyncRPGSharedLib.Navigation.NavMesh(
                roomKey,
                staticRoomData.RoomTemplate.NavMeshTemplate);

        return(staticRoomData);
    }
    // Use this for initialization
    void Start()
    {
        m_instance          = this;
        m_roomTemplateTable = new Dictionary <string, RoomTemplate>();

        if (m_compressedRoomTemplateList != null && m_compressedRoomTemplateList.Length > 0)
        {
            // Build the room template lookup table from the room template list
            foreach (CompressedRoomTemplate compressedRoomTemplate in m_compressedRoomTemplateList)
            {
                m_roomTemplateTable.Add(
                    compressedRoomTemplate.templateName,
                    RoomTemplate.ParseCompressedRoomTemplate(compressedRoomTemplate));
            }

            if (m_debugging)
            {
                Debug.LogWarning("RoomTemplateManager: Dumping " + mapTemplatePath + "/ClientRoomTemplates.txt");
                DumpRoomTemplates();
            }
        }
        else
        {
            Debug.LogError("RoomTemplateManager: Room Templates missing!");
        }
    }
예제 #5
0
    public static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
    {
        Log("RoomTemplateImporter called");

        foreach (string assetPath in importedAssets)
        {
            Log("RoomTemplateImporter: " + assetPath);
            if (assetPath.EndsWith("RoomTemplates.prefab"))
            {
                Log("Found RoomTempaltes Asset: " + assetPath);
                GameObject          assetGameObject     = Resources.Load <GameObject>("RoomTemplates");
                RoomTemplateManager roomTemplateManager = assetGameObject.GetComponent <RoomTemplateManager>();

                if (roomTemplateManager != null)
                {
                    if (RoomTemplateImporter.ParseRoomTemplates(roomTemplateManager))
                    {
                        Log("RoomTemplateManager: has RoomTemplateManager component!");
                    }
                    else
                    {
                        Debug.LogError("RoomTemplateManager: Failed to import room templates");
                    }
                }
                else
                {
                    Debug.LogError("RoomTemplateManager: Asset missing RoomTemplateManager component!");
                }

                AssetDatabase.Refresh(ImportAssetOptions.Default);
            }
        }
    }
예제 #6
0
    // Use this for initialization
    void Start()
    {
        Screen.SetResolution(GameConstants.GAME_SCREEN_PIXEL_WIDTH, GameConstants.GAME_SCREEN_PIXEL_HEIGHT, false);

        m_gameManager = this.gameObject.AddComponent("GameManager") as GameManager;
        m_gameManager.SetTargetGameState("LoginScreen");

        m_roomTemplateManager=
            (GameObject.Instantiate(Resources.Load("RoomTemplates")) as GameObject).GetComponent<RoomTemplateManager>();

        m_mobTypeManager =
            (GameObject.Instantiate(Resources.Load("MobTypes")) as GameObject).GetComponent<MobTypeManager>();
    }
예제 #7
0
    // Use this for initialization
    void Start()
    {
        Screen.SetResolution(GameConstants.GAME_SCREEN_PIXEL_WIDTH, GameConstants.GAME_SCREEN_PIXEL_HEIGHT, false);

        m_gameManager = this.gameObject.AddComponent("GameManager") as GameManager;
        m_gameManager.SetTargetGameState("LoginScreen");

        m_roomTemplateManager =
            (GameObject.Instantiate(Resources.Load("RoomTemplates")) as GameObject).GetComponent <RoomTemplateManager>();

        m_mobTypeManager =
            (GameObject.Instantiate(Resources.Load("MobTypes")) as GameObject).GetComponent <MobTypeManager>();
    }
예제 #8
0
 public void OnDestroy()
 {
     m_instance = null;
 }
 public void OnDestroy()
 {
     m_instance = null;
 }
예제 #10
0
    private static bool ParseRoomTemplates(RoomTemplateManager roomTemplateManager)
    {
        bool success = true;
        string template_path = roomTemplateManager.mapTemplatePath;
        string[] templateFiles = null;
        List<CompressedRoomTemplate> compressedRoomTemplates = new List<CompressedRoomTemplate>();

        try
        {
            templateFiles = Directory.GetFiles(template_path, "*.oel");

        }
        catch (System.Exception ex)
        {
            Debug.LogError("RoomTemplateParser: ERROR: Invalid template folder directory: "+template_path);
            Debug.LogException(ex);
            success = false;
        }

        if (success)
        {
            if (templateFiles != null && templateFiles.Length > 0)
            {
                foreach (string templateFile in templateFiles)
                {
                    string templateName = Path.GetFileNameWithoutExtension(templateFile);

                    try
                    {
                        RoomTemplate roomTemplate = null;
                        byte[] compressedNavCells = null;
                        byte[] compressedPVS = null;

                        // Parse the XML template from the file
                        XmlDocument doc = new XmlDocument();
                        doc.Load(templateFile);

                        try
                        {
                            // Parse the room template xml into a room template object
                            roomTemplate = RoomTemplate.ParseXML(templateName, doc);

                            // Extract the nav-mesh and visibility data in compressed form to save into the DB
                            roomTemplate.NavMeshTemplate.ToCompressedData(out compressedNavCells, out compressedPVS);

                            // Remove everything from the template XML that we wont care about at runtime
                            RemoveXmlNodeByXPath(doc, "/level/NavMesh");
                            RemoveXmlNodeByXPath(doc, "/level/Entities");
                        }
                        catch (System.Exception ex)
                        {
                            Debug.LogError("RoomTemplateParser: ERROR: Problem(s) parsing room template:"+templateFile);
                            Debug.LogException(ex);
                            roomTemplate = null;
                            success = false;
                        }

                        if (roomTemplate != null &&
                            ValidateRoomTemplate(
                                templateName,
                                roomTemplate,
                                compressedNavCells,
                                compressedPVS))
                        {
                            // Save the XML back into string
                            StringWriter stringWriter = new StringWriter();
                            XmlTextWriter xmlWriter = new XmlTextWriter(stringWriter);
                            doc.WriteTo(xmlWriter);

                            compressedRoomTemplates.Add(
                                new CompressedRoomTemplate
                                {
                                    templateName = templateName,
                                    xml = stringWriter.ToString(),
                                    compressedNavCells = compressedNavCells,
                                    compressedVisibility = compressedPVS
                                });

                            Debug.Log("RoomTemplateParser: Added Room Template: " + templateName);
                        }
                        else
                        {
                            Debug.LogError("RoomTemplateParser: ERROR: Problem(s) validating room template: "+templateFile);
                            success = false;
                        }
                    }
                    catch (XmlException ex)
                    {
                        Debug.LogError("RoomTemplateParser: ERROR: Unable to parse XML: " + templateFile);
                        Debug.LogException(ex);
                        success = false;
                    }
                    catch (Exception ex)
                    {
                        Debug.LogError("RoomTemplateParser: ERROR: Unknown error parsing template file: "+templateFile);
                        Debug.LogException(ex);
                        success = false;
                    }
                }
            }
            else
            {
                Debug.LogError("RoomTemplateParser: ERROR: No room template files (*.oel) found in directory:" + template_path);
                success = false;
            }
        }

        // Store the compressed templates into the room template manager
        if (success)
        {
            Log(string.Format("RoomTemplateParser: Caching {0} compressed template(s) in room template manager.", compressedRoomTemplates.Count));
            roomTemplateManager.CacheCompressedRoomTemplates(compressedRoomTemplates.ToArray());
        }

        return success;
    }
예제 #11
0
    private static bool ParseRoomTemplates(RoomTemplateManager roomTemplateManager)
    {
        bool   success       = true;
        string template_path = roomTemplateManager.mapTemplatePath;

        string[] templateFiles = null;
        List <CompressedRoomTemplate> compressedRoomTemplates = new List <CompressedRoomTemplate>();

        try
        {
            templateFiles = Directory.GetFiles(template_path, "*.oel");
        }
        catch (System.Exception ex)
        {
            Debug.LogError("RoomTemplateParser: ERROR: Invalid template folder directory: " + template_path);
            Debug.LogException(ex);
            success = false;
        }

        if (success)
        {
            if (templateFiles != null && templateFiles.Length > 0)
            {
                foreach (string templateFile in templateFiles)
                {
                    string templateName = Path.GetFileNameWithoutExtension(templateFile);

                    try
                    {
                        RoomTemplate roomTemplate       = null;
                        byte[]       compressedNavCells = null;
                        byte[]       compressedPVS      = null;

                        // Parse the XML template from the file
                        XmlDocument doc = new XmlDocument();
                        doc.Load(templateFile);

                        try
                        {
                            // Parse the room template xml into a room template object
                            roomTemplate = RoomTemplate.ParseXML(templateName, doc);

                            // Extract the nav-mesh and visibility data in compressed form to save into the DB
                            roomTemplate.NavMeshTemplate.ToCompressedData(out compressedNavCells, out compressedPVS);

                            // Remove everything from the template XML that we wont care about at runtime
                            RemoveXmlNodeByXPath(doc, "/level/NavMesh");
                            RemoveXmlNodeByXPath(doc, "/level/Entities");
                        }
                        catch (System.Exception ex)
                        {
                            Debug.LogError("RoomTemplateParser: ERROR: Problem(s) parsing room template:" + templateFile);
                            Debug.LogException(ex);
                            roomTemplate = null;
                            success      = false;
                        }

                        if (roomTemplate != null &&
                            ValidateRoomTemplate(
                                templateName,
                                roomTemplate,
                                compressedNavCells,
                                compressedPVS))
                        {
                            // Save the XML back into string
                            StringWriter  stringWriter = new StringWriter();
                            XmlTextWriter xmlWriter    = new XmlTextWriter(stringWriter);
                            doc.WriteTo(xmlWriter);

                            compressedRoomTemplates.Add(
                                new CompressedRoomTemplate
                            {
                                templateName         = templateName,
                                xml                  = stringWriter.ToString(),
                                compressedNavCells   = compressedNavCells,
                                compressedVisibility = compressedPVS
                            });

                            Debug.Log("RoomTemplateParser: Added Room Template: " + templateName);
                        }
                        else
                        {
                            Debug.LogError("RoomTemplateParser: ERROR: Problem(s) validating room template: " + templateFile);
                            success = false;
                        }
                    }
                    catch (XmlException ex)
                    {
                        Debug.LogError("RoomTemplateParser: ERROR: Unable to parse XML: " + templateFile);
                        Debug.LogException(ex);
                        success = false;
                    }
                    catch (Exception ex)
                    {
                        Debug.LogError("RoomTemplateParser: ERROR: Unknown error parsing template file: " + templateFile);
                        Debug.LogException(ex);
                        success = false;
                    }
                }
            }
            else
            {
                Debug.LogError("RoomTemplateParser: ERROR: No room template files (*.oel) found in directory:" + template_path);
                success = false;
            }
        }

        // Store the compressed templates into the room template manager
        if (success)
        {
            Log(string.Format("RoomTemplateParser: Caching {0} compressed template(s) in room template manager.", compressedRoomTemplates.Count));
            roomTemplateManager.CacheCompressedRoomTemplates(compressedRoomTemplates.ToArray());
        }

        return(success);
    }