public static GameItemLocalised Localise(this GameItem gameItem, string prefix, int index, Dictionary <string, InventoryDescription> itemNames) { GameItemLocalised blockLocalised = new GameItemLocalised { AppId = $"{prefix}{(index + 1)}", ItemId = gameItem.Uuid, GameName = gameItem.Name, Color = gameItem.Color, Flammable = gameItem.Flammable, Name = itemNames.GetTitle(gameItem.Uuid), Description = itemNames.GetDescription(gameItem.Uuid), PhysicsMaterial = gameItem.PhysicsMaterial, Ratings = gameItem.Ratings, Box = gameItem.Box, Cylinder = gameItem.Cylinder, StackSize = gameItem.StackSize, Edible = gameItem.Edible, }; List <int> boxSizes = GetSizesFromBox(blockLocalised.Box); List <int> hullSizes = GetSizesFromBox(gameItem.Hull); if (hullSizes.Count > boxSizes.Count) { blockLocalised.Box = gameItem.Hull; } return(blockLocalised); }
private void WriteAppFile(string outputFileName, IEnumerable <GameItemLocalised> localisedData, Dictionary <string, List <ILocalised> > lookup, LanguageDetail language, Dictionary <string, InventoryDescription> itemNames) { List <AppGameItemLang> appBlock = new List <AppGameItemLang>(); List <AppGameItemBase> appBlockBaseItems = new List <AppGameItemBase>(); foreach (GameItemLocalised blockLocalised in localisedData) { if (GuidExclusion.All.Any(a => a.Equals(blockLocalised.ItemId))) { continue; } GameItemLocalised relocalised = (language.LanguageType == LanguageType.English) ? blockLocalised : blockLocalised.ReLocalise(itemNames); GameItemFeatures defaultFeatures = new GameItemFeatures { Uuid = blockLocalised.ItemId, Features = null }; GameItemFeatures gameItemFeatures = FeaturesList.Features.FirstOrDefault(u => u.Uuid.Equals(blockLocalised.ItemId, StringComparison.InvariantCultureIgnoreCase)) ?? defaultFeatures; Upgrade gameItemUpgrades = UpgradeList.Upgrades.FirstOrDefault(u => u.Uuid.Equals(blockLocalised.ItemId, StringComparison.InvariantCultureIgnoreCase)); if (gameItemUpgrades != null && lookup.ContainsKey(gameItemUpgrades.TargetUuid)) { List <ILocalised> list = lookup[gameItemUpgrades.TargetUuid]; if (list != null && list.Count > 0) { if (list[0] is GameItemLocalised) { gameItemUpgrades.TargetId = list[0].AppId; } else { gameItemUpgrades = null; } } } AppGameItem full = AppFileBlockMapper.ToAppFile(relocalised, gameItemFeatures.Features, gameItemUpgrades); appBlock.Add(full.ToLang()); string image = GetItemImage(full.AppId); appBlockBaseItems.Add(full.ToBase(image)); } _appFileSysRepo.WriteBackToJsonFile(appBlockBaseItems, outputFileName); _appFileSysRepo.WriteBackToJsonFile(appBlock, GetJsonLang(language.LanguageAppFolder, outputFileName)); }
public static GameItemLocalised Localise(this Blocks block, string prefix, int index, Dictionary <string, InventoryDescription> itemNames) { GameItemLocalised blockLocalised = new GameItemLocalised { AppId = $"{prefix}{(index + 1)}", GameName = block.Name, ItemId = block.Uuid, Color = block.Color, Flammable = block.Flammable, Name = itemNames.GetTitle(block.Uuid), PhysicsMaterial = block.PhysicsMaterial, Ratings = block.Ratings, Box = null, Cylinder = null, }; return(blockLocalised); }
public static GameItemLocalised ReLocalise(this GameItemLocalised gameItem, Dictionary <string, InventoryDescription> itemNames) { string locName = itemNames.GetTitle(gameItem.ItemId); if (!string.IsNullOrEmpty(locName)) { gameItem.Name = locName; } string locDescription = itemNames.GetDescription(gameItem.ItemId); if (!string.IsNullOrEmpty(locDescription)) { gameItem.Description = locDescription; } return(gameItem); }
public static AppGameItem ToAppFile(GameItemLocalised localisedData, List <Feature> features, Upgrade upgrades) { AppGameItem recipe = new AppGameItem { AppId = localisedData.AppId, Flammable = localisedData.Flammable, PhysicsMaterial = localisedData.PhysicsMaterial, Title = localisedData.Name, Color = localisedData.Color, Ratings = localisedData.Ratings, Box = localisedData.Box, Cylinder = localisedData.Cylinder, Features = features, Upgrade = upgrades, Edible = localisedData.Edible, }; return(recipe); }
public void GenerateGameItemIntermediate(string filename, string prefix, string outputFilename, Dictionary <string, InventoryDescription> itemNames) { GameItemlist legacyGameItemList = _legacyShapeSetsFileSysRepo.LoadJsonFile <GameItemlist>(filename); GameItemlist gameItemList = _shapeSetsFileSysRepo.LoadJsonFile <GameItemlist>(filename); Dictionary <string, GameItem> distinctItems = new Dictionary <string, GameItem>(); foreach (GameItem gameItem in gameItemList?.GameItemList ?? new List <GameItem>()) { if (!distinctItems.ContainsKey(gameItem.Uuid)) { distinctItems.Add(gameItem.Uuid, gameItem); } } foreach (GameItem legacyGameItem in legacyGameItemList?.GameItemList ?? new List <GameItem>()) { if (!distinctItems.ContainsKey(legacyGameItem.Uuid)) { distinctItems.Add(legacyGameItem.Uuid, legacyGameItem); } } List <GameItem> all = distinctItems.Values.ToList(); List <GameItemLocalised> fileData = new List <GameItemLocalised>(); for (int gameItemIndex = 0; gameItemIndex < all.Count; gameItemIndex++) { GameItemLocalised locItem = all[gameItemIndex].Localise(prefix, gameItemIndex, itemNames); if (locItem.Name.Contains("obj_")) { continue; } fileData.Add(locItem); } if (fileData.Count < 1) { var k = 1 + 1; } _outputFileSysRepo.WriteBackToJsonFile(fileData, outputFilename); }
public void GenerateCrateRequirementFiles(List <GameItemLocalised> localisedGameItems) { List <AppRecipe> recipes = new List <AppRecipe>(); foreach (PackingStationItem packingStationItem in PackingStationLuaFile.AllItems) { GameItemLocalised outputAppItem = localisedGameItems.FirstOrDefault(g => g.ItemId.Equals(packingStationItem.CrateGuid)); if (outputAppItem == null) { continue; } string ingredientGameId = PackingStationLuaFile.NameToGuidDictionary[packingStationItem.projectileName]; GameItemLocalised ingredientAppItem = localisedGameItems.FirstOrDefault(g => g.ItemId.Equals(ingredientGameId)); if (ingredientAppItem == null) { continue; } recipes.Add(new AppRecipe { AppId = $"packing{recipes.Count + 1}", Output = new AppIngredient { AppId = outputAppItem.AppId, Quantity = 1 }, Inputs = new List <AppIngredient> { new AppIngredient { AppId = ingredientAppItem.AppId, Quantity = packingStationItem.fullAmount } } }); } _appDataSysRepo.WriteBackToJsonFile(recipes.OrderBy(aa => aa.AppId), AppDataFile.PackingStation); }