Пример #1
0
    public void OnCharacterSettingsChange(CharacterSettings characterSettings)
    {
        if (RootBodyPartsLoaded == false)
        {
            RootBodyPartsLoaded = true;
            if (characterSettings == null)
            {
                characterSettings = new CharacterSettings();
            }

            ThisCharacter = characterSettings;

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


            SetUpCharacter(characterSettings);
            livingHealthMasterBase.CirculatorySystem.SetBloodType(RaceBodyparts.Base.BloodType);
            SetupCharacterData(characterSettings);
        }
    }
Пример #2
0
        public void OnCharacterSettingsChange(CharacterSettings characterSettings)
        {
            if (RootBodyPartsLoaded == false)
            {
                RootBodyPartsLoaded = true;
                if (characterSettings == null)
                {
                    characterSettings = new CharacterSettings();
                }

                ThisCharacter = characterSettings;

                foreach (var Race in RaceSOSingleton.Instance.Races)
                {
                    if (Race.name == ThisCharacter.Species)
                    {
                        RaceBodyparts = Race;
                        break;
                    }
                }
                SetUpCharacter();
                SetupSprites();
                livingHealthMasterBase.CirculatorySystem.SetBloodType(RaceBodyparts.Base.BloodType);
                livingHealthMasterBase.InitialiseHunger(RaceBodyparts.Base.NumberOfMinutesBeforeStarving);
            }
        }
        public PlayerData(PlayerController playerController)
        {
            PlayerHealthManager playerHealthManager = playerController.GetComponent <PlayerHealthManager>();

            playerControllerData = new PlayerControllerData(playerController);
            playerHealthData     = new PlayerHealthData(playerHealthManager);
        }
        public void InitiateFresh(PlayerHealthData SetRace)
        {
            Cleanup();
            //SelectedSpecies
            SelectedSpecies = 0;
            foreach (var Species in RaceSOSingleton.Instance.Races)
            {
                if (Species == SetRace)
                {
                    break;
                }

                SelectedSpecies++;
            }

            AvailableBodyTypes = SetRace.Base.bodyTypeSettings.AvailableBodyTypes;
            ThisSetRace        = SetRace;

            availableSkinColors = SetRace.Base.SkinColours;

            PlayerManager.CurrentCharacterSettings = currentCharacter;
            SetUpSpeciesBody(SetRace);
            PopulateAllDropdowns(SetRace);
            RefreshAll();
            DoInitChecks();
        }
        private void LoadSettings(CharacterSettings inCharacterSettings)
        {
            Cleanup();
            currentCharacter = inCharacterSettings;
            //If we are playing locally offline, init character settings if they're null
            if (currentCharacter == null)
            {
                currentCharacter = new CharacterSettings();
                PlayerManager.CurrentCharacterSettings = currentCharacter;
            }

            PlayerHealthData SetRace = null;

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

            if (SetRace == null)
            {
                SetRace = RaceSOSingleton.Instance.Races.First();
            }

            InitiateFresh(SetRace);
            currentCharacter.SkinTone = inCharacterSettings.SkinTone;
        }
Пример #6
0
 public void SetUpSpeciesBody(PlayerHealthData Race)
 {
     BasedBodyPart(Race.Base.Torso);
     BasedBodyPart(Race.Base.Head);
     BasedBodyPart(Race.Base.ArmLeft);
     BasedBodyPart(Race.Base.ArmRight);
     BasedBodyPart(Race.Base.LegLeft);
     BasedBodyPart(Race.Base.LegRight);
 }
Пример #7
0
    void LoadData()
    {
        // check if we have any saved data
        PlayerHealthData data = SaveLoadManager.GetInstance.saveData.healthData;

        if (data != null)
        {
            _numUpgrades = data.numHealthUpgrades;
            print("NUM HEALTH UPPGRADES : " + _numUpgrades);
        }
    }
Пример #8
0
 private void PopulateAllDropdowns(PlayerHealthData Race)
 {
     //Checks what customisation settings the player's race has avaliable
     //Then spawns customisation dropdowns for cloth and other stuff.
     foreach (var customisation in Race.Base.CustomisationSettings)
     {
         var Customisation = Instantiate(customisationSubPart, ScrollList.transform);
         OpenCustomisation.Add(Customisation);
         Customisation.Setup(customisation.CustomisationGroup, this,
                             customisation.CustomisationGroup.SpriteOrder);
     }
 }
        private void RefreshRace()
        {
            raceText.text = currentCharacter.Species.ToString();

            foreach (var Race in RaceSOSingleton.Instance.Races)
            {
                if (Race.name == currentCharacter.Species)
                {
                    ThisSetRace = Race;
                }
            }
        }
Пример #10
0
    /// <summary>
    /// Validates that the player's skintone.
    /// </summary>
    /// <param name="settings">The character sheet used to check what race the player is.</param>
    /// <returns>True if illegal.</returns>
    public static bool HasIllegalSkinTone(CharacterSettings settings)
    {
        PlayerHealthData SetRace           = null;
        bool             skinToneIsIllegal = false;

        foreach (var Race in RaceSOSingleton.Instance.Races)
        {
            if (Race.name == settings.Species)
            {
                SetRace = Race;
            }
        }
        List <Color> availableSkinColors = SetRace.Base.SkinColours;
        Color        currentSkinColor;

        ColorUtility.TryParseHtmlString(settings.SkinTone, out currentSkinColor);
        if (availableSkinColors.Count > 0)
        {
            foreach (var skinColour in availableSkinColors)
            {
                if (Math.Abs(skinColour.a - currentSkinColor.a) < 0.01f &&
                    Math.Abs(skinColour.r - currentSkinColor.r) < 0.01f &&
                    Math.Abs(skinColour.g - currentSkinColor.g) < 0.01f &&
                    Math.Abs(skinColour.b - currentSkinColor.b) < 0.01f)
                {
                    skinToneIsIllegal = false;
                    break;
                }
                else
                {
                    skinToneIsIllegal = true;
                }
            }
        }
        else
        {
            return(false);
        }
        if (skinToneIsIllegal == false)
        {
            if (currentSkinColor.a <= 0.99f)
            {
                skinToneIsIllegal = true;
            }
        }

        return(skinToneIsIllegal);
    }
Пример #11
0
        private void LoadSettings(CharacterSettings inCharacterSettings)
        {
            currentCharacter = inCharacterSettings;
            //If we are playing locally offline, init character settings if they're null
            if (currentCharacter == null)
            {
                currentCharacter = new CharacterSettings();
                PlayerManager.CurrentCharacterSettings = currentCharacter;
            }

            PlayerHealthData SetRace = null;

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

            if (SetRace == null)
            {
                SetRace = RaceSOSingleton.Instance.Races.First();
            }

            //SelectedSpecies
            SelectedSpecies = 0;
            foreach (var Species in RaceSOSingleton.Instance.Races)
            {
                if (Species == SetRace)
                {
                    break;
                }

                SelectedSpecies++;
            }

            AvailableBodyTypes = SetRace.Base.bodyTypeSettings.AvailableBodyTypes;
            ThisSetRace        = SetRace;

            availableSkinColors       = SetRace.Base.SkinColours;
            currentCharacter.SkinTone = inCharacterSettings.SkinTone;
            SetUpSpeciesBody(SetRace);
            PopulateAllDropdowns(SetRace);
            DoInitChecks();
        }
Пример #12
0
    public void OnCharacterSettingsChange(CharacterSettings characterSettings)
    {
        if (RootBodyPartsLoaded == false)
        {
            RootBodyPartsLoaded = true;
            if (characterSettings == null)
            {
                characterSettings = new CharacterSettings();
            }

            ThisCharacter = characterSettings;

            foreach (var Race in RaceSOSingleton.Instance.Races)
            {
                if (Race.name == ThisCharacter.Species)
                {
                    RaceBodyparts = Race;
                }
            }
            SetupCharacterData(characterSettings);
        }
    }
Пример #13
0
    public void SetupsSprites()
    {
        foreach (var Root in livingHealthMasterBase.RootBodyPartContainers)
        {
            CustomisationStorage customisationStorage = null;
            foreach (var Custom in ThisCharacter.SerialisedBodyPartCustom)
            {
                if (Root.name == Custom.path)
                {
                    customisationStorage = Custom;
                    break;
                }
            }

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

            foreach (var Limb in Root.ContainsLimbs)
            {
                SubSetBodyPart(Limb, "");
            }
        }

        PlayerHealthData SetRace = null;

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

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

        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;
            ToClient.Add(SpriteHandlerNorder.GetComponent <NetworkIdentity>().netId);
            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));
                    Color setColor = Color.black;
                    ColorUtility.TryParseHtmlString(externalCustomisation.SerialisedValue.Colour, out setColor);
                    SpriteHandlerNorder.SpriteHandler.SetColor(setColor);
                }
            }
        }

        this.GetComponent <RootBodyPartController>().UpdateCustomisations("", JsonConvert.SerializeObject(ToClient));

        //TODOH

        //Fetch Race Health Pack
        // if(Character.Race == Race.Human)
        // {
        //
        // }

        //this is Target zone

        //Instantiates Sprites
        //TODOH
        //Race data contain sprites order
        //healing/Damage splits across body parts
        //needs a generate sprites dynamically


        //RaceBodyparts.Base.LegLeft.GetComponent<ItemStorage>()


        //RaceTexture = Spawn.RaceData["human"];

        //Loop through dimrphic body parts
        //SetupBodySpritesByGender();
        SetSurfaceColour();
        OnDirectionChange(directional.CurrentDirection);
    }
Пример #14
0
 public PlayerHealthController(PlayerHealthData playerHealthData)
 {
     _playerHealthData = playerHealthData;
 }
Пример #15
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);
        }
Пример #16
0
 //This is (going to be) a pretty long constructor, but it works
 public SaveData(LevelData levelData, PlayerHealthData playerHealthData)
 {
     this.levelData        = levelData;
     this.playerHealthData = playerHealthData;
 }
Пример #17
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);
    }
Пример #18
0
 public void UpdateImage(PlayerHealthData data)
 {
     healthBar.fillAmount = data.totalHealth;
 }
Пример #19
0
    public void SetupsSprites()
    {
        foreach (var Root in livingHealthMasterBase.RootBodyPartContainers)
        {
            CustomisationStorage customisationStorage = null;
            foreach (var Custom in ThisCharacter.SerialisedBodyPartCustom)
            {
                if (Root.name == Custom.path)
                {
                    customisationStorage = Custom;
                    break;
                }
            }

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

            foreach (var Limb in Root.ContainsLimbs)
            {
                SubSetBodyPart(Limb, "");
            }
        }

        PlayerHealthData SetRace = null;

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

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

        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;
            ToClient.Add(SpriteHandlerNorder.GetComponent <NetworkIdentity>().netId);
            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));
                    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);
    }