Ejemplo n.º 1
0
        public void SetupSprites()
        {
            CustomisationStorage customisationStorage = null;

            if (ThisCharacter.SerialisedBodyPartCustom == null)
            {
                //TODO : (Max) - Fix SerialisedBodyPartCustom being null on Dummy players
                Logger.LogWarning($"{gameObject} has spawned with null bodyPart customizations. This error should only appear for Dummy players only.");
                return;
            }

            foreach (var Custom in ThisCharacter.SerialisedBodyPartCustom)
            {
                if (livingHealthMasterBase.name == Custom.path)
                {
                    customisationStorage = Custom;
                    break;
                }
            }

            if (customisationStorage != null)
            {
                BodyPartDropDownOrgans.PlayerBodyDeserialise(null, customisationStorage.Data, livingHealthMasterBase);
            }

            foreach (var bodyPart in livingHealthMasterBase.BodyPartList)
            {
                SubSetBodyPart(bodyPart, "");
            }

            PlayerHealthData SetRace = null;

            foreach (var Race in RaceSOSingleton.Instance.Races)
            {
                if (Race.name == ThisCharacter.Species)
                {
                    SetRace = Race;
                }
            }

            List <IntName> ToClient = new List <IntName>();

            foreach (var Customisation in SetRace.Base.CustomisationSettings)
            {
                ExternalCustomisation externalCustomisation = null;
                foreach (var EC in ThisCharacter.SerialisedExternalCustom)
                {
                    if (EC.Key == Customisation.CustomisationGroup.name)
                    {
                        externalCustomisation = EC;
                    }
                }

                if (externalCustomisation == null)
                {
                    continue;
                }


                var Net = SpriteHandlerManager.GetRecursivelyANetworkBehaviour(this.gameObject);
                var SpriteHandlerNorder = Instantiate(ToInstantiateSpriteCustomisation.gameObject, CustomisationSprites.transform)
                                          .GetComponent <SpriteHandlerNorder>();
                SpriteHandlerManager.UnRegisterHandler(Net, SpriteHandlerNorder.SpriteHandler);

                SpriteHandlerNorder.transform.localPosition = Vector3.zero;
                SpriteHandlerNorder.name = Customisation.CustomisationGroup.ThisType.ToString();
                SpriteHandlerManager.RegisterHandler(Net, SpriteHandlerNorder.SpriteHandler);

                var newone = new IntName();
                newone.Int =
                    CustomNetworkManager.Instance.IndexLookupSpawnablePrefabs[ToInstantiateSpriteCustomisation.gameObject];

                newone.Name = Customisation.CustomisationGroup.ThisType.ToString();
                ToClient.Add(newone);

                OpenSprites.Add(SpriteHandlerNorder);
                //SubSetBodyPart
                foreach (var Sprite_s in Customisation.CustomisationGroup.PlayerCustomisations)
                {
                    if (Sprite_s.Name == externalCustomisation.SerialisedValue.SelectedName)
                    {
                        SpriteHandlerNorder.SpriteHandler.SetSpriteSO(Sprite_s.SpriteEquipped);
                        SpriteHandlerNorder.SetSpriteOrder(new SpriteOrder(Customisation.CustomisationGroup.SpriteOrder));
                        newone.Data = JsonConvert.SerializeObject(new SpriteOrder(SpriteHandlerNorder.SpriteOrder));
                        Color setColor = Color.black;
                        ColorUtility.TryParseHtmlString(externalCustomisation.SerialisedValue.Colour, out setColor);
                        setColor.a = 1;
                        SpriteHandlerNorder.SpriteHandler.SetColor(setColor);
                    }
                }
            }
            GetComponent <RootBodyPartController>().PlayerSpritesData = JsonConvert.SerializeObject(ToClient);

            SetSurfaceColour();
            OnDirectionChange(directional.CurrentDirection);
        }
Ejemplo n.º 2
0
    public void SetupSprites()
    {
        CustomisationStorage customisationStorage = null;

        foreach (var Custom in ThisCharacter.SerialisedBodyPartCustom)
        {
            if (livingHealthMasterBase.name == Custom.path)
            {
                customisationStorage = Custom;
                break;
            }
        }

        if (customisationStorage != null)
        {
            BodyPartDropDownOrgans.OnPlayerBodyDeserialise(null, customisationStorage.Data, livingHealthMasterBase);
        }


        foreach (var bodyPart in livingHealthMasterBase.BodyPartList)
        {
            SubSetBodyPart(bodyPart, "");

            //TODO: horrible, remove -- organ prefabs have bodyparts
            foreach (var organ in bodyPart.OrganList)
            {
                var bodyPartOrgan = organ.GetComponent <BodyPart>();
                SubSetBodyPart(bodyPartOrgan, $"/{bodyPart.name}");
            }
        }

        PlayerHealthData SetRace = null;

        foreach (var Race in RaceSOSingleton.Instance.Races)
        {
            if (Race.name == ThisCharacter.Species)
            {
                SetRace = Race;
            }
        }

        List <IntName> ToClient = new List <IntName>();

        foreach (var Customisation in SetRace.Base.CustomisationSettings)
        {
            ExternalCustomisation externalCustomisation = null;
            foreach (var EC in ThisCharacter.SerialisedExternalCustom)
            {
                if (EC.Key == Customisation.CustomisationGroup.name)
                {
                    externalCustomisation = EC;
                }
            }

            if (externalCustomisation == null)
            {
                continue;
            }

            var SpriteHandlerNorder = Spawn.ServerPrefab(ToInstantiateSpriteCustomisation.gameObject, null, CustomisationSprites.transform)
                                      .GameObject.GetComponent <SpriteHandlerNorder>();
            SpriteHandlerNorder.transform.localPosition = Vector3.zero;
            SpriteHandlerNorder.name = Customisation.CustomisationGroup.ThisType.ToString();

            var newone = new IntName();
            newone.Int =
                CustomNetworkManager.Instance.IndexLookupSpawnablePrefabs[ToInstantiateSpriteCustomisation.gameObject];

            newone.Name = Customisation.CustomisationGroup.ThisType.ToString();
            ToClient.Add(newone);

            OpenSprites.Add(SpriteHandlerNorder);
            //SubSetBodyPart
            foreach (var Sprite_s in Customisation.CustomisationGroup.PlayerCustomisations)
            {
                if (Sprite_s.Name == externalCustomisation.SerialisedValue.SelectedName)
                {
                    SpriteHandlerNorder.SpriteHandler.SetSpriteSO(Sprite_s.SpriteEquipped);
                    SpriteHandlerNorder.SetSpriteOrder(new SpriteOrder(Customisation.CustomisationGroup.SpriteOrder));
                    newone.Data = JsonConvert.SerializeObject(new SpriteOrder(SpriteHandlerNorder.SpriteOrder));
                    Color setColor = Color.black;
                    ColorUtility.TryParseHtmlString(externalCustomisation.SerialisedValue.Colour, out setColor);
                    setColor.a = 1;
                    SpriteHandlerNorder.SpriteHandler.SetColor(setColor);
                }
            }
        }
        GetComponent <RootBodyPartController>().PlayerSpritesData = JsonConvert.SerializeObject(ToClient);

        SetSurfaceColour();
        OnDirectionChange(directional.CurrentDirection);
    }