/////////////////////////////////////////////////// // Member Functions /////////////////////////////////////////////////// /// <summary> /// Loads all game assets /// </summary> public bool load(CfgInfo zoneConf, string configFilename) { _singleton = this; _assetList = new List <AssetInfo>(); //Add the game config addAssetData(AssetFileFactory.CreateFromFile <AssetFile>(configFilename)); //Load shit up ItemFile itms = AssetFileFactory.CreateFromFile <ItemFile>(zoneConf.level.itmFile); LioFile lios = AssetFileFactory.CreateFromFile <LioFile>(zoneConf.level.lioFile); SkillFile rpgs = AssetFileFactory.CreateFromFile <SkillFile>(zoneConf.level.rpgFile); VehicleFile vehs = AssetFileFactory.CreateFromFile <VehicleFile>(zoneConf.level.vehFile); LevelFile lvl = AssetFileFactory.CreateFromFile <LevelFile>(zoneConf.level.lvlFile); if (itms == null || lios == null || rpgs == null || vehs == null || lvl == null) { //Missing a core file foreach (string missing in AssetFileFactory._missingFiles) { Log.write(TLog.Error, "Missing file: {0}", missing); } return(false); } Level = lvl.Data; //Save checksums to send to clients addAssetData(itms); addAssetData(lios); addAssetData(rpgs); addAssetData(vehs); addAssetData(lvl); //Make item maps _idToItem = new SortedDictionary <int, ItemInfo>(); _nameToItem = new SortedDictionary <string, ItemInfo>(); foreach (ItemInfo it in itms.Data) { _idToItem.Add(it.id, it); } foreach (ItemInfo it in itms.Data) { if (!_nameToItem.ContainsKey(it.name.ToLower())) { _nameToItem.Add(it.name.ToLower(), it); } } //Make skill maps _idToSkill = new SortedDictionary <int, SkillInfo>(); _nameToSkill = new SortedDictionary <string, SkillInfo>(); foreach (SkillInfo it in rpgs.Data) { _idToSkill.Add(it.SkillId, it); } foreach (SkillInfo it in rpgs.Data) { if (!_nameToSkill.ContainsKey(it.Name.ToLower())) { _nameToSkill.Add(it.Name.ToLower(), it); } } //Make lio map _idToLio = new SortedDictionary <int, LioInfo>(); foreach (LioInfo it in lios.Data) { _idToLio.Add(it.GeneralData.Id, it); } //Load blo files _bloList = new List <string>(); foreach (string file in ItemInfo.BlobsToLoad) { loadBloFile(file + ".blo"); } foreach (string file in CfgInfo.BlobsToLoad) { loadBloFile(file + ".blo"); } foreach (string file in LioInfo.BlobsToLoad) { loadBloFile(file + ".blo"); } foreach (string file in SkillInfo.BlobsToLoad) { loadBloFile(file + ".blo"); } foreach (LvlInfo.BlobReference blob in Level.ObjectBlobs) { loadBloFile(blob.FileName); } foreach (LvlInfo.BlobReference blob in Level.FloorBlobs) { loadBloFile(blob.FileName); } //Make vehicle map _idToVehicle = new SortedDictionary <int, VehInfo>(); foreach (VehInfo it in vehs.Data) { _idToVehicle.Add(it.Id, it); foreach (string blo in it.blofiles) { loadBloFile(blo + ".blo"); } } foreach (string blo in _bloList) { //Attempt to load it BloFile blof = AssetFileFactory.LoadBlobFromFile <BloFile>(blo); if (blof != null) { addAssetData(blof); } } //For debugging _bloList.Sort(); _bloListFileName = "bloList_" + configFilename + ".txt"; System.IO.File.WriteAllLines(string.Format("{0}/{1}", Environment.CurrentDirectory, _bloListFileName), _bloList); //Update our asset server sendDataToDirectory(); //Initialize our lio data Lios = new Lio(this); //Load news file AssetFile nws = AssetFileFactory.CreateFromFile <AssetFile>(zoneConf.level.nwsFile); if (nws != null) { addAssetData(nws); } //Load the helpMenu files for (int i = 0; i <= zoneConf.helpMenu.links.Count - 1; i++) { AssetFile helpMenu = AssetFileFactory.CreateFromFile <AssetFile>(zoneConf.helpMenu.links[i].name); if (helpMenu != null) { addAssetData(helpMenu); } } //Load everything else loadAdditionalAssets(); //Are we missing files? if (AssetFileFactory.IsIncomplete) { //Missing a core file foreach (string missing in AssetFileFactory._missingFiles) { Log.write(TLog.Error, "Missing file: {0}", missing); } return(false); } //Cache all our assets AssetCache = new Cache(this); AssetCache.prepareCache(_assetList); return(true); }