internal void RegisterPiece() { logger.LogInfo("Registering Seed Totem Piece"); Texture2D iconTexture = AssetUtils.LoadTexture(SeedTotemMod.GetAssetPath(iconPath)); Sprite iconSprite = null; if (iconTexture == null) { logger.LogWarning("Icon missing, should be at " + iconPath + ", using default icon instead "); } else { iconSprite = Sprite.Create(iconTexture, new Rect(0f, 0f, iconTexture.width, iconTexture.height), Vector2.zero); } PieceConfig pieceConfig = new PieceConfig() { PieceTable = configLocation.GetSerializedValue(), Description = "$piece_seed_totem_description", Requirements = LoadJsonFile(SeedTotemMod.GetAssetPath("seed-totem-custom-requirements.json")) }; if (iconSprite) { pieceConfig.Icon = iconSprite; } CustomPiece customPiece = new CustomPiece(Prefab, pieceConfig); PieceManager.Instance.AddPiece(customPiece); }
private static RequirementConfig[] LoadJsonFile(string filename) { RequirementConfig[] defaultRecipe = new RequirementConfig[] { new RequirementConfig() { Item = "FineWood", Amount = 5, Recover = true }, new RequirementConfig() { Item = "GreydwarfEye", Amount = 5, Recover = true }, new RequirementConfig() { Item = "SurtlingCore", Amount = 1, Recover = true }, new RequirementConfig() { Item = "AncientSeed", Amount = 1, Recover = true } }; if (SeedTotem.configCustomRecipe.Value) { string assetPath = SeedTotemMod.GetAssetPath(filename); bool fileFound = string.IsNullOrEmpty(assetPath); if (fileFound) { logger.LogWarning("File not found: " + filename + " using default recipe"); return(defaultRecipe); } Dictionary <string, int> reqDict = ReadDict(assetPath); RequirementConfig[] result = new RequirementConfig[reqDict.Count]; int i = 0; foreach (KeyValuePair <string, int> pair in reqDict) { result[i] = new RequirementConfig() { Item = pair.Key, Amount = pair.Value, Recover = true }; } return(result); } else { return(defaultRecipe); } }