示例#1
0
    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;
        }
    }
示例#2
0
    /// <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;
        }
    }
示例#3
0
    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;
    }
示例#5
0
 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();
    }
示例#11
0
    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;
        }
    }
示例#12
0
 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();
 }
示例#13
0
    //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;
        }
    }
示例#14
0
 /// <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;
     }
 }
示例#15
0
        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();
        }
示例#16
0
        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();
        }
示例#17
0
    /*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();
        }
    }
示例#21
0
        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;
        }
示例#22
0
 /// <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;
     }
 }
示例#23
0
    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);
        }
示例#25
0
    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;
        }
    }
示例#26
0
 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;
 }
示例#27
0
    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");
    }
示例#28
0
    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();
        }
    }