public GameNPCAsset(NPCCharacter character, EGameAssetOrigin origin) : base(Guid.Parse(character.GUID), origin) { this.id = character.ID; this.name = character.EditorName; this.character = character; }
public GameAsset(Guid guid, EGameAssetOrigin origin) { this.name = guid.ToString("N"); this.id = 0; this.type = string.Empty; this.guid = guid; this.origin = origin; }
public GameAsset(string name, ushort id, Guid guid, string type, EGameAssetOrigin origin) { this.name = name; this.id = id; this.guid = guid; this.type = type; this.origin = origin; }
private static Tuple <bool, GameAsset> TryReadAssetFile(string fileName, EGameAssetOrigin origin) { using (StreamReader sr = new StreamReader(fileName)) { IFileReader formattedFileReader = null; try { formattedFileReader = new KVTableReader(sr); } catch { return(new Tuple <bool, GameAsset>(false, null)); } IFileReader formattedFileReader2 = formattedFileReader.readObject("Metadata"); Guid gUID = formattedFileReader2.readValue <Guid>("GUID"); Type type = formattedFileReader2.readValue <Type>("Type"); if (type == null) { return(new Tuple <bool, GameAsset>(false, null)); } try { GameAsset asset = Activator.CreateInstance(type, gUID, origin) as GameAsset; if (asset != null) { asset.guid = gUID; formattedFileReader.readKey("Asset"); asset.read(formattedFileReader); asset.name = Path.GetFileNameWithoutExtension(fileName); return(new Tuple <bool, GameAsset>(true, asset)); } } catch (Exception ex) { App.Logger.LogException($"Could not create instance of {type.Name}", ex: ex); } } return(new Tuple <bool, GameAsset>(false, null)); }
public GameCurrencyAsset(CurrencyAsset asset, EGameAssetOrigin origin) : base(asset.ValueFormat, 0, Guid.Parse(asset.GUID), "currency", origin) { valueFormat = asset.ValueFormat; entries = asset.Entries.ToArray(); }
public static bool TryGetAsset <T>(ushort id, EGameAssetOrigin origin, out T result) where T : GameAsset { return(TryGetAsset((k) => k.id == id && origin.HasFlag(k.origin), out result)); }
public static async Task Import(string directory, EGameAssetOrigin origin, Action <int, int> fileLoadedCallback = null, CancellationTokenSource tokenSource = null) { if (!Directory.Exists(directory)) { await App.Logger.Log($"Cancelled import from '{directory}'. Directory does not exist.", Logging.ELogLevel.WARNING); return; } Queue <ScannedFileInfo> files = new Queue <ScannedFileInfo>(); HashSet <string> ignoreFileNames = new HashSet <string>(); foreach (object langValue in Enum.GetValues(typeof(ELanguage))) { ignoreFileNames.Add(langValue + ".dat"); } foreach (FileInfo file in new DirectoryInfo(directory).GetFiles("*.dat", SearchOption.AllDirectories)) { if (ignoreFileNames.Contains(file.Name)) { continue; } files.Enqueue(new LegacyFileInfo(file)); } foreach (FileInfo file in new DirectoryInfo(directory).GetFiles("*.asset", SearchOption.AllDirectories)) { files.Enqueue(new AssetFileInfo(file)); } int index = -1; int total = files.Count; foreach (var fi in files) { if (tokenSource != null && tokenSource.IsCancellationRequested) { await App.Logger.Log("Cancelled import", Logging.ELogLevel.TRACE); break; } index++; try { if (fi is LegacyFileInfo) { var res = await TryReadLegacyAssetFile(fi.Info.FullName, origin); if (res.Item1) { _assets.Add(res.Item2); ImportedAssetCount++; } } else if (fi is AssetFileInfo) { var res = TryReadAssetFile(fi.Info.FullName, origin); if (res.Item1) { _assets.Add(res.Item2); ImportedAssetCount++; } } } catch (Exception ex) { await App.Logger.LogException($"Could not import asset '{fi.Info.FullName}'", ex : ex); } fileLoadedCallback?.Invoke(index, total); } }
public GameSpawnAsset(Guid guid, EGameAssetOrigin origin) : base(guid, origin) { }
public GameSpawnAsset(DataReader data, string name, ushort id, Guid guid, string type, EGameAssetOrigin origin) : base(name, id, guid, type, origin) { int num = data.ReadInt32("Roots"); insertRoots = new List <SpawnTable>(num); for (int i = 0; i < num; i++) { SpawnTable spawnTable = new SpawnTable(); spawnTable.spawnID = data.ReadUInt16($"Root_{i}_Spawn_ID", 0); spawnTable.isOverride = data.Has($"Root_{i}_Override"); spawnTable.weight = data.ReadInt32($"Root_{i}_Weight", spawnTable.isOverride ? 1 : 0); spawnTable.chance = 0f; insertRoots.Add(spawnTable); } _roots = new List <SpawnTable>(num); int num2 = data.ReadInt32("Tables"); _tables = new List <SpawnTable>(num2); for (int j = 0; j < num2; j++) { SpawnTable spawnTable2 = new SpawnTable { assetID = data.ReadUInt16($"Table_{j}_Asset_ID", 0), spawnID = data.ReadUInt16($"Table_{j}_Spawn_ID", 0), weight = data.ReadInt32($"Table_{j}_Weight"), chance = 0f }; tables.Add(spawnTable2); } areTablesDirty = true; }
public GameItemClothingAsset(DataReader data, DataReader local, string dirName, string name, ushort id, Guid guid, string type, EGameAssetOrigin origin) : base(data, local, dirName, name, id, guid, type, origin) { if (isPro) { armor = 1f; explosionArmor = 1f; } else { armor = data.ReadSingle("Armor", 1f); explosionArmor = data.ReadSingle("Armor_Explosion", armor); proofWater = data.Has("Proof_Water"); proofFire = data.Has("Proof_Fire"); } hairVisible = data.ReadBoolean("Hair_Visible", true); beardVisible = data.ReadBoolean("Beard_Visible", true); }
public GameObjectAsset(Guid guid, EGameAssetOrigin origin) : base(guid, origin) { }
public GameWeatherAsset(string name, ushort id, Guid guid, string type, EGameAssetOrigin origin) : base(name, id, guid, type, origin) { }
public GameDialogueAsset(DataReader data, DataReader local, string name, ushort id, Guid guid, string type, EGameAssetOrigin origin) : base(name, id, guid, type, origin) { dialogue = new Parsing.ParseTool(data, local).ParseDialogue(); }
public GameItemGunAsset(DataReader data, DataReader local, string dirName, string name, ushort id, Guid guid, string type, EGameAssetOrigin origin) : base(data, local, dirName, name, id, guid, type, origin) { hasSight = data.Has("Hook_Sight"); hasTactical = data.Has("Hook_Tactical"); hasGrip = data.Has("Hook_Grip"); hasBarrel = data.Has("Hook_Barrel"); int num2 = data.ReadInt32("Magazine_Calibers", 0); if (num2 > 0) { magazineCalibers = new ushort[num2]; for (int j = 0; j < num2; j++) { magazineCalibers[j] = data.ReadUInt16($"Magazine_Caliber_{j}", 0); } int num3 = data.ReadInt32("Attachment_Calibers"); if (num3 > 0) { attachmentCalibers = new ushort[num3]; for (int k = 0; k < num3; k++) { attachmentCalibers[k] = data.ReadUInt16($"Attachment_Caliber_{k}", 0); } } else { attachmentCalibers = magazineCalibers; } } else { magazineCalibers = new ushort[1]; magazineCalibers[0] = data.ReadUInt16("Caliber", 0); attachmentCalibers = magazineCalibers; } }
private static async Task <Tuple <bool, GameAsset> > TryReadLegacyAssetFile(string fileName, EGameAssetOrigin origin) { string drContent; using (StreamReader sr = new StreamReader(fileName)) { drContent = await sr.ReadToEndAsync(); } DataReader dr = new DataReader(drContent); DataReader local = null; var t = dr.ReadString("Type"); if (string.IsNullOrEmpty(t)) { return(new Tuple <bool, GameAsset>(false, null)); } string dir = Path.GetDirectoryName(fileName); string shortDir = new DirectoryInfo(dir).Name; string name; string localPath = Path.Combine(dir, "English.dat"); if (File.Exists(localPath)) { string locContent; using (StreamReader sr = new StreamReader(localPath)) { locContent = await sr.ReadToEndAsync(); } local = new DataReader(locContent); name = local.ReadString("Name", shortDir); } else { name = shortDir; } if (!dr.Has("ID") || !dr.Has("GUID")) { return(new Tuple <bool, GameAsset>(false, null)); } ushort id = dr.ReadUInt16("ID"); Guid guid = dr.ReadGUID("GUID"); var vt = t.ToLowerInvariant(); switch (vt) { case "item": case "food": case "water": case "medical": case "melee": case "fuel": case "tool": case "barricade": case "storage": case "beacon": case "farm": case "trap": case "structure": case "supply": case "throwable": case "grower": case "optic": case "refill": case "fisher": case "cloud": case "map": case "key": case "box": case "arrest_start": case "arrest_end": case "tank": case "generator": case "detonator": case "charge": case "library": case "filter": case "sentry": case "vehicle_repair_tool": case "tire": case "compass": case "oil_pump": return(new Tuple <bool, GameAsset>(true, new GameItemAsset(dr, local, shortDir, name, id, guid, vt, origin))); case "hat": return(new Tuple <bool, GameAsset>(true, new GameItemHatAsset(dr, local, shortDir, name, id, guid, vt, origin))); case "pants": return(new Tuple <bool, GameAsset>(true, new GameItemPantsAsset(dr, local, shortDir, name, id, guid, vt, origin))); case "sight": return(new Tuple <bool, GameAsset>(true, new GameItemSightAsset(dr, local, shortDir, name, id, guid, vt, origin))); case "barrel": return(new Tuple <bool, GameAsset>(true, new GameItemBarrelAsset(dr, local, shortDir, name, id, guid, vt, origin))); case "tactical": return(new Tuple <bool, GameAsset>(true, new GameItemTacticalAsset(dr, local, shortDir, name, id, guid, vt, origin))); case "magazine": return(new Tuple <bool, GameAsset>(true, new GameItemMagazineAsset(dr, local, shortDir, name, id, guid, vt, origin))); case "grip": return(new Tuple <bool, GameAsset>(true, new GameItemGripAsset(dr, local, shortDir, name, id, guid, vt, origin))); case "shirt": return(new Tuple <bool, GameAsset>(true, new GameItemShirtAsset(dr, local, shortDir, name, id, guid, vt, origin))); case "glasses": return(new Tuple <bool, GameAsset>(true, new GameItemGlassesAsset(dr, local, shortDir, name, id, guid, vt, origin))); case "mask": return(new Tuple <bool, GameAsset>(true, new GameItemMaskAsset(dr, local, shortDir, name, id, guid, vt, origin))); case "backpack": return(new Tuple <bool, GameAsset>(true, new GameItemBackpackAsset(dr, local, shortDir, name, id, guid, vt, origin))); case "vest": return(new Tuple <bool, GameAsset>(true, new GameItemVestAsset(dr, local, shortDir, name, id, guid, vt, origin))); case "npc": return(new Tuple <bool, GameAsset>(true, new GameNPCAsset(dr, local, name, id, guid, vt, origin))); case "dialogue": return(new Tuple <bool, GameAsset>(true, new GameDialogueAsset(dr, local, name, id, guid, vt, origin))); case "quest": return(new Tuple <bool, GameAsset>(true, new GameQuestAsset(dr, local, name, id, guid, vt, origin))); case "vendor": return(new Tuple <bool, GameAsset>(true, new GameVendorAsset(dr, local, name, id, guid, vt, origin))); case "vehicle": return(new Tuple <bool, GameAsset>(true, new GameVehicleAsset(dr, name, id, guid, vt, origin))); case "animal": return(new Tuple <bool, GameAsset>(true, new GameAnimalAsset(dr, name, id, guid, vt, origin))); case "large": case "medium": case "small": return(new Tuple <bool, GameAsset>(true, new GameObjectAsset(dr, name, id, guid, vt, origin))); case "spawn": return(new Tuple <bool, GameAsset>(true, new GameSpawnAsset(dr, name, id, guid, vt, origin))); case "resource": return(new Tuple <bool, GameAsset>(true, new GameResourceAsset(dr, name, id, guid, vt, origin))); case "gun": return(new Tuple <bool, GameAsset>(true, new GameItemGunAsset(dr, local, shortDir, name, id, guid, vt, origin))); default: return(new Tuple <bool, GameAsset>(true, new GameAsset(name, id, guid, vt, origin))); } }
public GameItemBagAsset(DataReader data, DataReader local, string dirName, string name, ushort id, Guid guid, string type, EGameAssetOrigin origin) : base(data, local, dirName, name, id, guid, type, origin) { width = data.ReadByte("Width", 0); height = data.ReadByte("Height", 0); }
public GameItemGearAsset(DataReader data, DataReader local, string dirName, string name, ushort id, Guid guid, string type, EGameAssetOrigin origin) : base(data, local, dirName, name, id, guid, type, origin) { base.hairVisible = data.Has("Hair"); base.beardVisible = data.Has("Beard"); }
public GameVendorAsset(NPCVendor vendor, EGameAssetOrigin origin) : base(vendor.Title, vendor.ID, Guid.Parse(vendor.GUID), "Vendor", origin) { this.vendor = vendor; }
public GameNPCAsset(DataReader data, DataReader local, string name, ushort id, Guid guid, string type, EGameAssetOrigin origin) : base(data, name, id, guid, type, origin) { character = new Parsing.ParseTool(data, local).ParseCharacter(); }
public GameDialogueAsset(NPCDialogue dialogue, EGameAssetOrigin origin) : base($"Asset_{dialogue.ID}", dialogue.ID, Guid.Parse(dialogue.GUID), "Dialogue", origin) { this.dialogue = dialogue; }
public GameWeatherAsset(Guid guid, EGameAssetOrigin origin) : base(guid, origin) { }
public GameCurrencyAsset(Guid guid, EGameAssetOrigin origin) : base(guid, origin) { }
public GameQuestAsset(DataReader data, DataReader local, string name, ushort id, Guid guid, string type, EGameAssetOrigin origin) : base(name, id, guid, type, origin) { quest = new Parsing.ParseTool(data, local).ParseQuest(); }
public GameQuestAsset(NPCQuest quest, EGameAssetOrigin origin) : base(quest.Title, quest.ID, Guid.Parse(quest.GUID), "Quest", origin) { this.quest = quest; }
public GameItemGripAsset(DataReader data, DataReader local, string dirName, string name, ushort id, Guid guid, string type, EGameAssetOrigin origin) : base(data, local, dirName, name, id, guid, type, origin) { }
public GameItemAsset(DataReader data, DataReader local, string dirName, string name, ushort id, Guid guid, string type, EGameAssetOrigin origin) : base(name, id, guid, type, origin) { this.dirName = dirName; if (local != null) { itemDescription = local.ReadString("Description", string.Empty); } else { itemDescription = string.Empty; } isPro = data.Has("Pro"); rarity = data.ReadEnum("Rarity", EGameItemRarity.Common); sizeX = data.ReadByte("Size_X", 0); if (sizeX < 1) { sizeX = 1; } sizeY = data.ReadByte("Size_Y", 0); if (sizeY < 1) { sizeY = 1; } useable = data.ReadString("Useable"); canPlayerEquip = data.ReadBoolean("Can_Player_Equip", !string.IsNullOrEmpty(useable)); slot = data.ReadEnum("Slot", Equip_Type.None); }
public GameResourceAsset(DataReader data, string name, ushort id, Guid guid, string type, EGameAssetOrigin origin) : base(name, id, guid, type, origin) { }
public GameItemCaliberAsset(DataReader data, DataReader local, string dirName, string name, ushort id, Guid guid, string type, EGameAssetOrigin origin) : base(data, local, dirName, name, id, guid, type, origin) { calibers = new ushort[data.ReadByte("Calibers", 0)]; for (int i = 0; i < calibers.Length; i++) { calibers[i] = data.ReadUInt16($"Caliber_{i}", 0); } }