private void SyncStage(PlantSpriteStage newStage) { if (newStage == plantSyncStage) { return; } plantSyncStage = newStage; switch (plantSyncStage) { case PlantSpriteStage.None: plantSprite.PushClear(); break; case PlantSpriteStage.FullyGrown: plantSprite.spriteData = SpriteFunctions.SetupSingleSprite(plantData.FullyGrownSprite); plantSprite.PushTexture(); break; case PlantSpriteStage.Dead: plantSprite.spriteData = SpriteFunctions.SetupSingleSprite(plantData.DeadSprite); plantSprite.PushTexture(); break; case PlantSpriteStage.Growing: plantSprite.spriteData = SpriteFunctions.SetupSingleSprite(plantData.GrowthSprites[growingPlantStage]); plantSprite.PushTexture(); break; } }
/// <summary> /// Checks plant state and updates to correct sprite /// </summary> private void UpdateSprite() { if (plantData == null) { plantSprite.PushClear(); return; } switch (plantCurrentStage) { case PlantSpriteStage.None: plantSprite.PushClear(); break; case PlantSpriteStage.FullyGrown: plantSprite.spriteData = SpriteFunctions.SetupSingleSprite(plantData.FullyGrownSprite); plantSprite.PushTexture(); break; case PlantSpriteStage.Dead: plantSprite.spriteData = SpriteFunctions.SetupSingleSprite(plantData.DeadSprite); plantSprite.PushTexture(); break; case PlantSpriteStage.Growing: if (growingPlantStage >= plantData.GrowthSprites.Count) { Logger.Log($"Plant data does not contain growthsprites for index: {growingPlantStage} in plantData.GrowthSprites. Plant: {plantData.Plantname}"); return; } plantSprite.spriteData = SpriteFunctions.SetupSingleSprite(plantData.GrowthSprites[growingPlantStage]); plantSprite.PushTexture(); break; } }
private SpriteData SetUpSheetForClothingData(ClothingData clothingData) { var SpriteInfos = new SpriteData(); SpriteInfos.List = new List <List <List <SpriteHandler.SpriteInfo> > >(); int c = 0; SpriteInfos.List.Add(SpriteFunctions.CompleteSpriteSetup(clothingData.Base.Equipped)); variantStore[ClothingVariantType.Default] = c; c++; if (clothingData.Base_Adjusted.Equipped.Texture != null) { SpriteInfos.List.Add(SpriteFunctions.CompleteSpriteSetup(clothingData.Base_Adjusted.Equipped)); variantStore[ClothingVariantType.Tucked] = c; c++; } if (clothingData.DressVariant.Equipped.Texture != null) { SpriteInfos.List.Add(SpriteFunctions.CompleteSpriteSetup(clothingData.DressVariant.Equipped)); variantStore[ClothingVariantType.Skirt] = c; c++; } if (clothingData.Variants.Count > 0) { foreach (var Variant in clothingData.Variants) { SpriteInfos.List.Add(SpriteFunctions.CompleteSpriteSetup(Variant.Equipped)); variantStore[ClothingVariantType.Skirt] = c; c++; } } return(SpriteInfos); }
IEnumerator Animator() { isAnimating = true; if (screenGlow != null) { screenGlow.SetActive(true); } while (isOn) { if (sprites.Count == 0) { if (onSprites.Texture != null) { sprites = SpriteFunctions.CompleteSpriteSetup(onSprites); } } spriteRenderer.sprite = sprites[0][sIndex].sprite; Delay = sprites[0][sIndex].waitTime; sIndex++; if (sIndex == sprites[0].Count) { sIndex = 0; } yield return(WaitFor.Seconds(Delay)); } isAnimating = false; }
public void SetUpFood() { SyncPlant(null, plantData.Name); SpriteHandler.spriteData = SpriteFunctions.SetupSingleSprite(plantData.ProduceSprite); SpriteHandler.PushTexture(); SetupChemicalContents(); SyncSize(SizeScale, 0.5f + (plantData.Potency / 100f)); }
public void SetupCustomisations() { if (ThisCharacter.UnderwearName != "None") { clothes["underwear"].spriteHandler.spriteData = new SpriteData(); clothes["underwear"].spriteHandler.spriteData.List.Add(SpriteFunctions.CompleteSpriteSetup( PlayerCustomisationDataSOs.Instance.Get( CustomisationType.Underwear, ThisCharacter.Gender, ThisCharacter.UnderwearName ).Equipped)); clothes["underwear"].spriteHandler.PushTexture(); } if (ThisCharacter.SocksName != "None") { clothes["socks"].spriteHandler.spriteData = new SpriteData(); clothes["socks"].spriteHandler.spriteData.List.Add(SpriteFunctions.CompleteSpriteSetup( PlayerCustomisationDataSOs.Instance.Get( CustomisationType.Socks, ThisCharacter.Gender, ThisCharacter.SocksName ).Equipped)); clothes["socks"].spriteHandler.PushTexture(); } if (ThisCharacter.FacialHairName != "None") { ColorUtility.TryParseHtmlString(ThisCharacter.FacialHairColor, out var newColor); clothes["beard"].spriteHandler.spriteData = new SpriteData(); clothes["beard"].spriteHandler.spriteData.List.Add(SpriteFunctions.CompleteSpriteSetup( PlayerCustomisationDataSOs.Instance.Get( CustomisationType.FacialHair, ThisCharacter.Gender, ThisCharacter.FacialHairName ).Equipped)); clothes["beard"].spriteHandler.SetColor(newColor); clothes["beard"].spriteHandler.PushTexture(); } if (ThisCharacter.HairStyleName != "None") { ColorUtility.TryParseHtmlString(ThisCharacter.HairColor, out var newColor); clothes["Hair"].spriteHandler.spriteData = new SpriteData(); clothes["Hair"].spriteHandler.spriteData.List.Add(SpriteFunctions.CompleteSpriteSetup( PlayerCustomisationDataSOs.Instance.Get( CustomisationType.HairStyle, ThisCharacter.Gender, ThisCharacter.HairStyleName ).Equipped)); clothes["Hair"].spriteHandler.SetColor(newColor); clothes["Hair"].spriteHandler.PushTexture(); } }
private void RefreshUnderwear() { var pcd = PlayerCustomisationDataSOs.Instance.Get( CustomisationType.Underwear, currentCharacter.UnderwearName ); underwearSpriteController.sprites = SpriteFunctions.CompleteSpriteSetup(pcd); underwearSpriteController.UpdateSprite(); }
private void RefreshSocks() { var pcd = PlayerCustomisationDataSOs.Instance.Get( CustomisationType.Socks, currentCharacter.SocksName ); socksSpriteController.sprites = SpriteFunctions.CompleteSpriteSetup(pcd); socksSpriteController.UpdateSprite(); }
private void AddSprites() { foreach (var Data in Sprites) { if (spriteData.List == null) { spriteData.List = new List <List <List <SpriteInfo> > >(); } spriteData.List.Add(SpriteFunctions.CompleteSpriteSetup(Data)); } }
private void SetupSprite(SpriteSheetAndData spriteSheetAndData, string clothesDictKey, Color?color = null) { clothes[clothesDictKey].spriteHandler.spriteData = new SpriteData(); clothes[clothesDictKey].spriteHandler.spriteData.List.Add(SpriteFunctions.CompleteSpriteSetup(spriteSheetAndData)); if (color != null) { clothes[clothesDictKey].spriteHandler.SetColor(color.Value); } clothes[clothesDictKey].spriteHandler.PushTexture(); }
public void ReceiveMessage(string plantString, int growingStage, PlantSpriteStage spriteStage, bool harvestSync, bool weedSync, bool waterSync, bool nutrimentSync) { plantSyncString = plantString; SyncHarvest(harvestSync); SyncWeed(weedSync); SyncWater(waterSync); SyncNutriment(nutrimentSync); if (DefaultPlantData.PlantDictionary.ContainsKey(plantSyncString)) { plantData = DefaultPlantData.PlantDictionary[plantSyncString].plantData; } growingPlantStage = growingStage; plantSyncStage = spriteStage; if (plantData == null) { //FIXME "BOD PLZ FIX BOTANY PLANT DATA IS NULL!" return; } switch (plantSyncStage) { case PlantSpriteStage.None: plantSprite.PushClear(); break; case PlantSpriteStage.FullyGrown: plantSprite.spriteData = SpriteFunctions.SetupSingleSprite(plantData.FullyGrownSprite); plantSprite.PushTexture(); break; case PlantSpriteStage.Dead: plantSprite.spriteData = SpriteFunctions.SetupSingleSprite(plantData.DeadSprite); plantSprite.PushTexture(); break; case PlantSpriteStage.Growing: if (growingPlantStage >= plantData.GrowthSprites.Count) { Logger.Log($"Plant data does not contain growthsprites for index: {growingPlantStage} in plantData.GrowthSprites. Plant: {plantData.Plantname}"); return; } plantSprite.spriteData = SpriteFunctions.SetupSingleSprite(plantData.GrowthSprites[growingPlantStage]); plantSprite.PushTexture(); break; } }
public void SyncPlant(string _PlantSyncString) { PlantSyncString = _PlantSyncString; if (!isServer) { if (DefaultPlantData.PlantDictionary.ContainsKey(PlantSyncString)) { plantData = DefaultPlantData.PlantDictionary[PlantSyncString].plantData; } } Sprite.spriteData = SpriteFunctions.SetupSingleSprite(plantData.PacketsSprite); Sprite.PushTexture(); }
//set up the sprites / config of this instance using the cloth data private void TryInit() { if (clothData is ClothingData clothingData) { var item = GetComponent <ItemAttributesV2>(); spriteInfo = SetUpSheetForClothingData(clothingData); SetUpFromClothingData(clothingData.Base); switch (variantType) { case ClothingVariantType.Default: if (variantIndex > -1) { if (!(clothingData.Variants.Count >= variantIndex)) { SetUpFromClothingData(clothingData.Variants[variantIndex]); } } break; case ClothingVariantType.Skirt: SetUpFromClothingData(clothingData.DressVariant); break; case ClothingVariantType.Tucked: SetUpFromClothingData(clothingData.Base_Adjusted); break; } } else if (clothData is ContainerData containerData) { var Item = GetComponent <ItemAttributesV2>(); this.spriteInfo = SpriteFunctions.SetupSingleSprite(containerData.Sprites.Equipped); SetUpFromClothingData(containerData.Sprites); } else if (clothData is BeltData beltData) { var Item = GetComponent <ItemAttributesV2>(); this.spriteInfo = SpriteFunctions.SetupSingleSprite(beltData.sprites.Equipped); SetUpFromClothingData(beltData.sprites); } else if (clothData is HeadsetData headsetData) { var Item = GetComponent <ItemAttributesV2>(); var Headset = GetComponent <Headset>(); this.spriteInfo = SpriteFunctions.SetupSingleSprite(headsetData.Sprites.Equipped); SetUpFromClothingData(headsetData.Sprites); Headset.EncryptionKey = headsetData.Key.EncryptionKey; } }
/// <summary> /// Used to Set sprite handlers internal buffer to the single Texture specified and set Sprite /// </summary> /// <param name="_SpriteSheetAndData">specified Texture.</param> /// <param name="_variantIndex">Variant index.</param> public void SetSprite(SpriteSheetAndData _SpriteSheetAndData, int _variantIndex = 0) { spriteData.List.Clear(); spriteData.List.Add(SpriteFunctions.CompleteSpriteSetup(_SpriteSheetAndData)); variantIndex = _variantIndex; if (Initialised) { PushTexture(); } else { SetSpriteOnStartUp = true; } }
private void RefreshSocks() { if (playerCustomisationData[PlayerCustomisation.Socks].ContainsKey(currentCharacter.socksName)) { socksSpriteController.sprites = SpriteFunctions.CompleteSpriteSetup(playerCustomisationData[PlayerCustomisation.Socks][currentCharacter.socksName].Equipped); } else { socksSpriteController.sprites = null; } socksSpriteController.UpdateSprite(); }
private void RefreshUnderwear() { if (playerCustomisationData[PlayerCustomisation.Underwear].ContainsKey(currentCharacter.underwearName)) { underwearSpriteController.sprites = SpriteFunctions.CompleteSpriteSetup(playerCustomisationData[PlayerCustomisation.Underwear][currentCharacter.underwearName].Equipped); } else { underwearSpriteController.sprites = null; } underwearSpriteController.UpdateSprite(); }
/*public static SeedPacket CreateSeedPacketInstance(SeedPacket seedPacket) * { * return new SeedPacket * { * name = seedPacket.name, * Sprite = seedPacket.Sprite, * plantData = PlantData.CreateNewPlant(seedPacket.plantData), * defaultPlantData = seedPacket.defaultPlantData, * PlantSyncString = seedPacket.plantData.Name * }; * }*/ public void SyncPlant(string _OldPlantSyncString, string _PlantSyncString) { //EnsureInit(); PlantSyncString = _PlantSyncString; /*if (!isServer) * { * if (DefaultPlantData.PlantDictionary.ContainsKey(PlantSyncString)) * { * plantData = DefaultPlantData.PlantDictionary[PlantSyncString].plantData; * } * }*/ Sprite.spriteData = SpriteFunctions.SetupSingleSprite(plantData.PacketsSprite); Sprite.PushTexture(); }
private void RefreshHair() { var pcd = PlayerCustomisationDataSOs.Instance.Get( CustomisationType.HairStyle, currentCharacter.HairStyleName ); hairSpriteController.sprites = SpriteFunctions.CompleteSpriteSetup(pcd); hairSpriteController.UpdateSprite(); Color setColor = Color.black; ColorUtility.TryParseHtmlString(currentCharacter.HairColor, out setColor); hairSpriteController.image.color = setColor; hairColor.color = setColor; }
private void RefreshGender() { genderText.text = currentCharacter.Gender.ToString(); if (currentCharacter.Gender == Gender.Female) { headSpriteController.sprites = SpriteFunctions.CompleteSpriteSetup(playerTextureData.Female.Head); torsoSpriteController.sprites = SpriteFunctions.CompleteSpriteSetup(playerTextureData.Female.Torso); } else { headSpriteController.sprites = SpriteFunctions.CompleteSpriteSetup(playerTextureData.Male.Head); torsoSpriteController.sprites = SpriteFunctions.CompleteSpriteSetup(playerTextureData.Male.Torso); } headSpriteController.UpdateSprite(); torsoSpriteController.UpdateSprite(); }
private void SyncStage(PlantSpriteStage newStage) { if (newStage == plantSyncStage) { return; } plantSyncStage = newStage; if (plantData == null) { //FIXME: BOD PLZ FIX BOTANY PLANT DATA IS NULL! return; } switch (plantSyncStage) { case PlantSpriteStage.None: plantSprite.PushClear(); break; case PlantSpriteStage.FullyGrown: plantSprite.spriteData = SpriteFunctions.SetupSingleSprite(plantData.FullyGrownSprite); plantSprite.PushTexture(); break; case PlantSpriteStage.Dead: plantSprite.spriteData = SpriteFunctions.SetupSingleSprite(plantData.DeadSprite); plantSprite.PushTexture(); break; case PlantSpriteStage.Growing: if (growingPlantStage >= plantData.GrowthSprites.Count) { Logger.Log($"Plant data does not contain growthsprites for index: {growingPlantStage} in plantData.GrowthSprites. Plant: {plantData.Plantname}"); return; } plantSprite.spriteData = SpriteFunctions.SetupSingleSprite(plantData.GrowthSprites[growingPlantStage]); plantSprite.PushTexture(); break; } //Force a refresh on nearby clients if (isServer) { SendUpdateToNearbyPlayers(); } }
private void RefreshFacialHair() { if (playerCustomisationData[PlayerCustomisation.FacialHair].ContainsKey(currentCharacter.facialHairName)) { facialHairSpriteController.sprites = SpriteFunctions.CompleteSpriteSetup(playerCustomisationData[PlayerCustomisation.FacialHair][currentCharacter.facialHairName].Equipped); } else { facialHairSpriteController.sprites = null; } facialHairSpriteController.UpdateSprite(); Color setColor = Color.black; ColorUtility.TryParseHtmlString(currentCharacter.facialHairColor, out setColor); facialHairSpriteController.image.color = setColor; facialColor.color = setColor; }
/// <summary> /// Set this sprite handler to be capable of displaying the elements defined in _Info and sets it to display as the element in _Info indicated by _spriteIndex and _variantIndex /// </summary> /// <param name="_Info">The list of sprites</param> /// <param name="_spriteIndex">Initial Sprite index.</param> /// <param name="_variantIndex">Initial Variant index.</param> public void SetInfo(List <SpriteSheetAndData> _Info, int _spriteIndex = 0, int _variantIndex = 0) { spriteIndex = _spriteIndex; variantIndex = _variantIndex; spriteData.List = new List <List <List <SpriteInfo> > >(); foreach (var Data in _Info) { spriteData.List.Add(SpriteFunctions.CompleteSpriteSetup(Data)); } if (Initialised) { PushTexture(); } else { SetSpriteOnStartUp = true; } }
public void SetupCustomisations() { if (ThisCharacter.underwearName != "None") { clothes["underwear"].spriteHandler.spriteData = new SpriteData(); clothes["underwear"].spriteHandler.spriteData.List.Add(SpriteFunctions.CompleteSpriteSetup( Spawn.PlayerCustomisationData[ PlayerCustomisation.Underwear][ThisCharacter.underwearName].Equipped)); clothes["underwear"].spriteHandler.PushTexture(); } if (ThisCharacter.socksName != "None") { clothes["socks"].spriteHandler.spriteData = new SpriteData(); clothes["socks"].spriteHandler.spriteData.List.Add(SpriteFunctions.CompleteSpriteSetup( Spawn.PlayerCustomisationData[ PlayerCustomisation.Socks][ThisCharacter.socksName].Equipped)); clothes["socks"].spriteHandler.PushTexture(); } if (ThisCharacter.facialHairName != "None") { ColorUtility.TryParseHtmlString(ThisCharacter.facialHairColor, out var newColor); clothes["beard"].spriteHandler.spriteData = new SpriteData(); clothes["beard"].spriteHandler.spriteData.List.Add(SpriteFunctions.CompleteSpriteSetup( Spawn.PlayerCustomisationData[ PlayerCustomisation.FacialHair][ThisCharacter.facialHairName].Equipped)); clothes["beard"].spriteHandler.SetColor(newColor); clothes["beard"].spriteHandler.PushTexture(); } if (ThisCharacter.hairStyleName != "None") { ColorUtility.TryParseHtmlString(ThisCharacter.hairColor, out var newColor); clothes["Hair"].spriteHandler.spriteData = new SpriteData(); clothes["Hair"].spriteHandler.spriteData.List.Add(SpriteFunctions.CompleteSpriteSetup( Spawn.PlayerCustomisationData[ PlayerCustomisation.HairStyle][ThisCharacter.hairStyleName].Equipped)); clothes["Hair"].spriteHandler.SetColor(newColor); clothes["Hair"].spriteHandler.PushTexture(); } }
void OnEnable() { LoadSettings(); colorPicker.gameObject.SetActive(false); colorPicker.onValueChanged.AddListener(OnColorChange); var copyStr = JsonUtility.ToJson(currentCharacter); lastSettings = JsonUtility.FromJson <CharacterSettings>(copyStr); DisplayErrorText(""); torsoSpriteController.sprites = SpriteFunctions.CompleteSpriteSetup(playerTextureData.Base.Torso); headSpriteController.sprites = SpriteFunctions.CompleteSpriteSetup(playerTextureData.Base.Head); RarmSpriteController.sprites = SpriteFunctions.CompleteSpriteSetup(playerTextureData.Base.ArmRight); LarmSpriteController.sprites = SpriteFunctions.CompleteSpriteSetup(playerTextureData.Base.ArmLeft); RlegSpriteController.sprites = SpriteFunctions.CompleteSpriteSetup(playerTextureData.Base.LegRight); LlegSpriteController.sprites = SpriteFunctions.CompleteSpriteSetup(playerTextureData.Base.LegLeft); RHandSpriteController.sprites = SpriteFunctions.CompleteSpriteSetup(playerTextureData.Base.HandRight); LHandSpriteController.sprites = SpriteFunctions.CompleteSpriteSetup(playerTextureData.Base.HandLeft); eyesSpriteController.sprites = SpriteFunctions.CompleteSpriteSetup(playerTextureData.Base.Eyes); }
public void ReceiveMessage(string plantString, int growingStage, PlantSpriteStage spriteStage, bool harvestSync, bool weedSync, bool waterSync, bool nutrimentSync) { plantSyncString = plantString; SyncHarvest(harvestSync); SyncWeed(weedSync); SyncWater(waterSync); SyncNutriment(nutrimentSync); if (DefaultPlantData.PlantDictionary.ContainsKey(plantSyncString)) { plantData = DefaultPlantData.PlantDictionary[plantSyncString].plantData; } growingPlantStage = growingStage; plantSyncStage = spriteStage; switch (plantSyncStage) { case PlantSpriteStage.None: plantSprite.PushClear(); break; case PlantSpriteStage.FullyGrown: plantSprite.spriteData = SpriteFunctions.SetupSingleSprite(plantData.FullyGrownSprite); plantSprite.PushTexture(); break; case PlantSpriteStage.Dead: plantSprite.spriteData = SpriteFunctions.SetupSingleSprite(plantData.DeadSprite); plantSprite.PushTexture(); break; case PlantSpriteStage.Growing: plantSprite.spriteData = SpriteFunctions.SetupSingleSprite(plantData.GrowthSprites[growingPlantStage]); plantSprite.PushTexture(); break; } }
public void SyncPlant(string _OldPlantSyncString, string _PlantSyncString) { PlantSyncString = _PlantSyncString; if (!isServer) { if (DefaultPlantData.PlantDictionary.ContainsKey(PlantSyncString)) { plantData = DefaultPlantData.PlantDictionary[PlantSyncString].plantData; } } SpriteHandler.spriteData = SpriteFunctions.SetupSingleSprite(plantData.ProduceSprite); SpriteHandler.PushTexture(); if (ItemAttributesV2 == null) { ItemAttributesV2 = this.GetComponent <ItemAttributesV2>(); } if (isServer && ItemAttributesV2 != null) { ItemAttributesV2.ServerSetArticleDescription(plantData.Description); ItemAttributesV2.ServerSetArticleName(plantData.Plantname); } this.name = plantData.Plantname; }
public static void Generate() { float progressbarStep; float progressbarState; DirectoryInfo d = new DirectoryInfo(Application.dataPath + @"\Textures\objects\hydroponics\growing"); FileInfo[] Files = d.GetFiles("*.png"); // \\Getting Text files var ListFiles = new List <string>(); dictonaryErrors = new Dictionary <string, string>(); var PlantDictionary = new Dictionary <string, DefaultPlantData>(); var PlantDictionaryObject = new Dictionary <string, System.Object>(); foreach (FileInfo file in Files) { ListFiles.Add(file.Name); } var food = (Resources.Load(@"Prefabs\Items\Botany\food") as GameObject); var json = (Resources.Load(@"Metadata\plants") as TextAsset).ToString(); var plats = JsonConvert.DeserializeObject <List <Dictionary <string, object> > >(json); progressbarStep = 1f / (plats.Count * ListFiles.Count); progressbarState = 0; foreach (var plat in plats) { EditorUtility.DisplayProgressBar("Step 1/3 Setting Sprites", "Loading plant: " + plat["name"], progressbarState); //\\foreach (var Datapiece in plat) //\\{ //\\ Logger.Log(Datapiece.Key); //\\} var plantdata = PlantData.CreateNewPlant((PlantData)null); plantdata.ProduceObject = food; plantdata.Name = plat["name"] as string; if (plat.ContainsKey("plantname")) { plantdata.Plantname = plat["plantname"] as string; } plantdata.Description = plat["Description"] as string; var species = ""; if (plat.ContainsKey("species")) { species = (plat["species"] as string); } else { Debug.Log($"Unable to find 'species' tag for plant {plantdata.Name}, using 'seed_packet' instead"); species = (plat["seed_packet"] as string); if (species.Contains("seed-")) { species = species.Replace("seed-", ""); } else if (species.Contains("mycelium-")) { species = species.Replace("mycelium-", ""); } }; plantdata.PacketsSprite = new SpriteSheetAndData(); plantdata.PacketsSprite.Texture = (AssetDatabase.LoadAssetAtPath(@"Assets\textures\objects\hydroponics\seeds\" + (plat["seed_packet"] as string) + ".png", typeof(Texture2D)) as Texture2D); plantdata.PacketsSprite.setSprites(); SpriteSheetAndData produceSprite = new SpriteSheetAndData(); produceSprite.Texture = (AssetDatabase.LoadAssetAtPath(@"Assets\textures\objects\hydroponics\harvest\" + species + ".png", typeof(Texture2D)) as Texture2D); if (produceSprite.Texture == null) { produceSprite = new SpriteSheetAndData(); produceSprite.Texture = (AssetDatabase.LoadAssetAtPath(@"Assets\textures\objects\hydroponics\harvest\" + species + "pile.png", typeof(Texture2D)) as Texture2D); } if (produceSprite.Texture == null) { produceSprite = new SpriteSheetAndData(); produceSprite.Texture = (AssetDatabase.LoadAssetAtPath(@"Assets\textures\objects\hydroponics\harvest\" + species + "_leaves.png", typeof(Texture2D)) as Texture2D); } if (produceSprite.Texture == null) { produceSprite = new SpriteSheetAndData(); produceSprite.Texture = (AssetDatabase.LoadAssetAtPath(@"Assets\textures\objects\hydroponics\harvest\" + species + "pod.png", typeof(Texture2D)) as Texture2D); } if (produceSprite.Texture == null) { produceSprite = new SpriteSheetAndData(); produceSprite.Texture = (AssetDatabase.LoadAssetAtPath(@"Assets\textures\objects\hydroponics\harvest\" + species + "s.png", typeof(Texture2D)) as Texture2D); } if (produceSprite.Texture == null) { produceSprite = new SpriteSheetAndData(); produceSprite.Texture = (AssetDatabase.LoadAssetAtPath(@"Assets\textures\objects\hydroponics\harvest\" + species + "pepper.png", typeof(Texture2D)) as Texture2D); } produceSprite.setSprites(); var dead_sprite = (plat.ContainsKey("dead_Sprite")) ? (plat["dead_Sprite"] as string) : species + "-dead"; plantdata.DeadSprite = new SpriteSheetAndData(); plantdata.DeadSprite.Texture = (AssetDatabase.LoadAssetAtPath(@"Assets\textures\objects\hydroponics\growing\" + dead_sprite + ".png", typeof(Texture2D)) as Texture2D); plantdata.DeadSprite.setSprites(); plantdata.GrowthSprites = new List <SpriteSheetAndData>(); foreach (var ListFile in ListFiles) { if (ListFile.Contains(species)) { var Namecheck = ListFile; /*Namecheck = Namecheck.Replace("growing_flowers_", ""); * Namecheck = Namecheck.Replace("growing_fruits_", ""); * Namecheck = Namecheck.Replace("growing_mushrooms_", ""); * Namecheck = Namecheck.Replace("growing_vegetables_", ""); * Namecheck = Namecheck.Replace("growing_", "");*/ Namecheck = Namecheck.Split('-')[0]; if (Namecheck == species) { EditorUtility.DisplayProgressBar("Step 1/3 Setting Sprites", $"Loading sprite '{ListFile}' for plant {plantdata.Name}", progressbarState); if (!ListFile.Contains("-dead")) { if (!ListFile.Contains("-harvest")) { //\Assets\Resources\textures\objects\hydroponics\growing\growing_ambrosia_gaia-grow6.png var _SpriteSheetAndData = new SpriteSheetAndData(); _SpriteSheetAndData.Texture = (AssetDatabase.LoadAssetAtPath(@"Assets\textures\objects\hydroponics\growing\" + ListFile, typeof(Texture2D)) as Texture2D); _SpriteSheetAndData.setSprites(); plantdata.GrowthSprites.Add(_SpriteSheetAndData); //If not found do at end } else { var _SpriteSheetAndData = new SpriteSheetAndData(); _SpriteSheetAndData.Texture = (AssetDatabase.LoadAssetAtPath(@"Assets\textures\objects\hydroponics\growing\" + ListFile, typeof(Texture2D)) as Texture2D); _SpriteSheetAndData.setSprites(); plantdata.FullyGrownSprite = _SpriteSheetAndData; } } } } if (plantdata.FullyGrownSprite == null) { if (plantdata.GrowthSprites.Count > 0) { //This seems to be normal plantdata.FullyGrownSprite = plantdata.GrowthSprites[plantdata.GrowthSprites.Count - 1]; } } progressbarState += progressbarStep; } //check if sprites are missing if (plantdata.PacketsSprite.Texture == null) { AppendError(plantdata.Name, $"Unable to find seed packet sprite for plant {plantdata.Name}"); } //if (plantdata.ProduceSprite.Texture == null) { } if (plantdata.DeadSprite.Texture == null) { AppendError(plantdata.Name, $"Unable to find dead sprite"); } if (plantdata.GrowthSprites.Count == 0) { AppendError(plantdata.Name, $"Unable to find growth sprites for plant {plantdata.Name}"); } if (plantdata.FullyGrownSprite == null) { AppendError(plantdata.Name, $"Unable to find fully grown sprite"); } plantdata.WeedResistance = int.Parse(plat["weed_resistance"].ToString()); plantdata.WeedGrowthRate = int.Parse(plat["weed_growth_rate"].ToString()); plantdata.Potency = int.Parse(plat["potency"].ToString()); plantdata.Endurance = int.Parse(plat["endurance"].ToString()); plantdata.Yield = int.Parse(plat["plant_yield"].ToString()); plantdata.Lifespan = int.Parse(plat["lifespan"].ToString()); plantdata.GrowthSpeed = int.Parse(plat["production"].ToString()); if (plat.ContainsKey("genes")) { var genes = JsonConvert.DeserializeObject <List <string> >(plat["genes"].ToString()); foreach (var gene in genes) { if (gene == "Perennial_Growth") { plantdata.PlantTrays.Add(PlantTrays.Perennial_Growth); } else if (gene == "Fungal Vitality") { plantdata.PlantTrays.Add(PlantTrays.Fungal_Vitality); } else if (gene == "Liquid Contents") { plantdata.PlantTrays.Add(PlantTrays.Liquid_Content); } else if (gene == "Slippery Skin") { plantdata.PlantTrays.Add(PlantTrays.Slippery_Skin); } else if (gene == "Bluespace Activity") { plantdata.PlantTrays.Add(PlantTrays.Bluespace_Activity); } else if (gene == "Densified Chemicals") { plantdata.PlantTrays.Add(PlantTrays.Densified_Chemicals); } else if (gene == "Capacitive Cell Production") { plantdata.PlantTrays.Add(PlantTrays.Capacitive_Cell_Production); } else if (gene == "Weed Adaptation") { plantdata.PlantTrays.Add(PlantTrays.Weed_Adaptation); } else if (gene == "Hypodermic Prickles") { plantdata.PlantTrays.Add(PlantTrays.Hypodermic_Needles); } else if (gene == "Shadow Emission") { plantdata.PlantTrays.Add(PlantTrays.Shadow_Emission); } else if (gene == "Red Electrical Glow") { plantdata.PlantTrays.Add(PlantTrays.Red_Electrical_Glow); } else if (gene == "Electrical Activity") { plantdata.PlantTrays.Add(PlantTrays.Electrical_Activity); } else if (gene == "Strong Bioluminescence") { plantdata.PlantTrays.Add(PlantTrays.Strong_Bioluminescence); } else if (gene == "Bioluminescence") { plantdata.PlantTrays.Add(PlantTrays.Bioluminescence); } else if (gene == "Separated Chemicals") { plantdata.PlantTrays.Add(PlantTrays.Separated_Chemicals); } } } //Creating/updating food prefabs if (plat.ContainsKey("produce_name")) { //load existing prefab variant if possible GameObject prefabVariant = (GameObject)AssetDatabase.LoadAssetAtPath(@"Assets/Resources/Prefabs/Items/Botany/" + plantdata.Name + ".prefab", typeof(GameObject)); if (prefabVariant == null) { GameObject originalPrefab = (GameObject)AssetDatabase.LoadAssetAtPath(@"Assets/Resources/Prefabs/Items/Botany/food.prefab", typeof(GameObject)); prefabVariant = PrefabUtility.InstantiatePrefab(originalPrefab) as GameObject; } else { prefabVariant = PrefabUtility.InstantiatePrefab(prefabVariant) as GameObject; } var itemAttr = prefabVariant.GetComponent <ItemAttributesV2>(); //Commented since this are normally private //itemAttr.initialName = plat["produce_name"] as string; //itemAttr.initialDescription = plat["description"] as string; //itemAttr.itemSprites = (new ItemsSprites() { InventoryIcon = produceSprite }); //add sprite to food var spriteRenderer = prefabVariant.GetComponentInChildren <SpriteRenderer>(); spriteRenderer.sprite = SpriteFunctions.SetupSingleSprite(produceSprite).ReturnFirstSprite(); var newFood = prefabVariant.GetComponent <GrownFood>(); //Set plant data for food newFood.plantData = plantdata; var newReagents = prefabVariant.GetComponent <ReagentContainer>(); //add reagents to food if (plat.ContainsKey("reagents_add")) { var Chemicals = JsonConvert.DeserializeObject <Dictionary <string, float> >(plat["reagents_add"].ToString()); var reagents = new List <string>(); var amounts = new List <float>(); foreach (var Chemical in Chemicals) { //ChemicalDictionary[Chemical.Key] = (((int)(Chemical.Value * 100)) * (plantdata.Potency / 100f)); reagents.Add(Chemical.Key); amounts.Add(((int)(Chemical.Value * 100)) * (plantdata.Potency / 100f)); } //newReagents.Reagents = reagents; //newReagents.Amounts = amounts; } plantdata.ProduceObject = PrefabUtility.SaveAsPrefabAsset(prefabVariant, @"Assets/Resources/Prefabs/Items/Botany/" + plantdata.Name + ".prefab"); } else { plantdata.ProduceObject = null; } var DefaultPlantData = ScriptableObject.CreateInstance <DefaultPlantData>(); DefaultPlantData.plantData = plantdata; //\\ Creates the folder path //\\ Creates the file in the folder path Logger.Log(plantdata.Name + " < PlantDictionary"); PlantDictionary[plantdata.Name] = DefaultPlantData; if (plat.ContainsKey("mutates_into")) { PlantDictionaryObject[plantdata.Name] = plat["mutates_into"]; } //\\Logger.Log(plantdata.GrowthSprites.Count.ToString()); } progressbarStep = 1f / PlantDictionary.Count; progressbarState = 0; var mutationNameList = new List <string>(); foreach (var pant in PlantDictionary) { EditorUtility.DisplayProgressBar("Step 2/3 Setting Mutations", "Loading mutations for: " + pant.Value.plantData.Name, progressbarState += progressbarStep); if (PlantDictionaryObject.ContainsKey(pant.Value.plantData.Name)) { var Mutations = JsonConvert.DeserializeObject <List <string> >(PlantDictionaryObject[pant.Value.plantData.Name].ToString()); foreach (var Mutation in Mutations) { if (!mutationNameList.Contains(Mutation)) { mutationNameList.Add(Mutation); } if (Mutation.Length != 0) { if (PlantDictionary.ContainsKey(Mutation)) { MutationComparison(pant.Value, PlantDictionary[Mutation]); pant.Value.plantData.MutatesInTo.Add((DefaultPlantData)AssetDatabase.LoadAssetAtPath(@"Assets\Resources\ScriptableObjects\Plant default\" + PlantDictionary[Mutation].plantData.Name + ".asset", typeof(DefaultPlantData))); if (PlantDictionary[Mutation].plantData.DeadSprite?.Texture == null) { if (pant.Value.plantData.DeadSprite?.Texture != null) { PlantDictionary[Mutation].plantData.DeadSprite = new SpriteSheetAndData(); PlantDictionary[Mutation].plantData.DeadSprite.Texture = pant.Value.plantData.DeadSprite.Texture; PlantDictionary[Mutation].plantData.DeadSprite.setSprites(); } } if (PlantDictionary[Mutation].plantData.GrowthSprites.Count == 0) { PlantDictionary[Mutation].plantData.GrowthSprites = pant.Value.plantData.GrowthSprites; } } } } } } progressbarStep = 1f / PlantDictionary.Count; progressbarState = 0; foreach (var pant in PlantDictionary) { DefaultPlantData defaultPlant = AssetDatabase.LoadMainAssetAtPath(@"Assets\Resources\ScriptableObjects\Plant default\" + pant.Value.plantData.Name + ".asset") as DefaultPlantData; if (defaultPlant != null) { EditorUtility.DisplayProgressBar("Step 3/3 Saving ScriptObjects", "Updating asset: " + pant.Value.plantData.Name, progressbarState += progressbarStep); EditorUtility.CopySerialized(pant.Value, defaultPlant); AssetDatabase.SaveAssets(); } else { EditorUtility.DisplayProgressBar("Step 3/3 Saving ScriptObjects", "Creating asset: " + pant.Value.plantData.Name, progressbarState += progressbarStep); defaultPlant = ScriptableObject.CreateInstance <DefaultPlantData>(); EditorUtility.CopySerialized(pant.Value, defaultPlant); AssetDatabase.CreateAsset(pant.Value, @"Assets\Resources\ScriptableObjects\Plant default\" + pant.Value.plantData.Name + ".asset"); } if (dictonaryErrors.ContainsKey(pant.Value.plantData.Name)) { if (mutationNameList.Contains(pant.Value.plantData.Name)) { dictonaryErrors[pant.Value.plantData.Name] = $"Mutation {pant.Value.plantData.Name} has some missing sprites\n{dictonaryErrors[pant.Value.plantData.Name]}"; Debug.LogWarning(dictonaryErrors[pant.Value.plantData.Name]); } else { dictonaryErrors[pant.Value.plantData.Name] = $"Plant {pant.Value.plantData.Name} has some missing sprites\n{dictonaryErrors[pant.Value.plantData.Name]}"; Debug.LogError(dictonaryErrors[pant.Value.plantData.Name]); } } } EditorUtility.ClearProgressBar(); EditorUtility.DisplayDialog("Complete", "Generating default plant ScriptObjects complete", "Close"); }
public void SexSetupBodySprites(RaceVariantTextureData Variant) { ColorUtility.TryParseHtmlString(ThisCharacter.SkinTone, out var newColor); if (Variant.Torso.Texture != null) { clothes["body_torso"].spriteHandler.spriteData = new SpriteData(); clothes["body_torso"].spriteHandler.spriteData.List.Add(SpriteFunctions.CompleteSpriteSetup(Variant.Torso)); clothes["body_torso"].spriteHandler.SetColor(newColor); clothes["body_torso"].spriteHandler.PushTexture(); } if (Variant.LegRight.Texture != null) { clothes["body_rightleg"].spriteHandler.spriteData = new SpriteData(); clothes["body_rightleg"].spriteHandler.spriteData.List .Add(SpriteFunctions.CompleteSpriteSetup(Variant.LegRight)); clothes["body_rightleg"].spriteHandler.SetColor(newColor); clothes["body_rightleg"].spriteHandler.PushTexture(); } if (Variant.LegLeft.Texture != null) { clothes["body_leftleg"].spriteHandler.spriteData = new SpriteData(); clothes["body_leftleg"].spriteHandler.spriteData.List .Add(SpriteFunctions.CompleteSpriteSetup(Variant.LegLeft)); clothes["body_leftleg"].spriteHandler.SetColor(newColor); clothes["body_leftleg"].spriteHandler.PushTexture(); } if (Variant.ArmRight.Texture != null) { clothes["body_rightarm"].spriteHandler.spriteData = new SpriteData(); clothes["body_rightarm"].spriteHandler.spriteData.List .Add(SpriteFunctions.CompleteSpriteSetup(Variant.ArmRight)); clothes["body_rightarm"].spriteHandler.SetColor(newColor); clothes["body_rightarm"].spriteHandler.PushTexture(); } if (Variant.ArmLeft.Texture != null) { clothes["body_leftarm"].spriteHandler.spriteData = new SpriteData(); clothes["body_leftarm"].spriteHandler.spriteData.List .Add(SpriteFunctions.CompleteSpriteSetup(Variant.ArmLeft)); clothes["body_leftarm"].spriteHandler.SetColor(newColor); clothes["body_leftarm"].spriteHandler.PushTexture(); } if (Variant.Head.Texture != null) { clothes["body_head"].spriteHandler.spriteData = new SpriteData(); clothes["body_head"].spriteHandler.spriteData.List.Add(SpriteFunctions.CompleteSpriteSetup(Variant.Head)); clothes["body_head"].spriteHandler.SetColor(newColor); clothes["body_head"].spriteHandler.PushTexture(); } if (Variant.HandRight.Texture != null) { clothes["body_right_hand"].spriteHandler.spriteData = new SpriteData(); clothes["body_right_hand"].spriteHandler.spriteData.List .Add(SpriteFunctions.CompleteSpriteSetup(Variant.HandRight)); clothes["body_right_hand"].spriteHandler.SetColor(newColor); clothes["body_right_hand"].spriteHandler.PushTexture(); } if (Variant.HandLeft.Texture != null) { clothes["body_left_hand"].spriteHandler.spriteData = new SpriteData(); clothes["body_left_hand"].spriteHandler.spriteData.List .Add(SpriteFunctions.CompleteSpriteSetup(Variant.HandLeft)); clothes["body_left_hand"].spriteHandler.SetColor(newColor); clothes["body_left_hand"].spriteHandler.PushTexture(); } ColorUtility.TryParseHtmlString(ThisCharacter.EyeColor, out newColor); if (Variant.Eyes.Texture != null) { clothes["eyes"].spriteHandler.spriteData = new SpriteData(); clothes["eyes"].spriteHandler.spriteData.List.Add(SpriteFunctions.CompleteSpriteSetup(Variant.Eyes)); clothes["eyes"].spriteHandler.SetColor(newColor); clothes["eyes"].spriteHandler.PushTexture(); } }