コード例 #1
0
ファイル: NPC.cs プロジェクト: KianBennett/Lordship
    // Assign random attributes
    public void Randomise()
    {
        Appearance.Randomise(false, false);
        Movement.LookDir = new Vector3(Random.Range(-1f, 1f), 0, Random.Range(-1f, 1f));

        charName    = AssetManager.instance.GetUniqueNpcName();
        age         = (CharacterAge)Random.Range(0, System.Enum.GetNames(typeof(CharacterAge)).Length);
        occupation  = (CharacterOccupation)Random.Range(0, System.Enum.GetNames(typeof(CharacterOccupation)).Length - 1); // -1 to not include politician
        wealth      = (CharacterWealth)Random.Range(0, System.Enum.GetNames(typeof(CharacterWealth)).Length);
        disposition = Random.Range(40, 60);

        // If poor then high chance of wearing rags and fingerless gloves
        if (wealth == CharacterWealth.Poor && Random.value > 0.2f)
        {
            Appearance.hands = 2;
            Appearance.body  = 3;
        }
        if (occupation == CharacterOccupation.Monk)
        {
            // Monk hairstyle
            Appearance.hair = 2;
            Appearance.hat  = 0;
        }
        if (occupation == CharacterOccupation.Knight)
        {
            // Helmet and armour
            Appearance.hat  = 5;
            Appearance.body = 2;
            Appearance.hair = 0; // Bald head so hair doesn't clip through helmet
        }

        // Randomise colours AFTER setting body parts so it picks colours from the new palettes
        Appearance.RandomiseColours();
        Appearance.ApplyAll();
    }
コード例 #2
0
 public string GetRandomFlattery(CharacterAge age)
 {
     if (_flatteryAge.ContainsKey(age))
     {
         return(_flatteryAge.GetValue(age).RandomText);
     }
     return("");
 }
コード例 #3
0
 public string GetRandomThreaten(CharacterAge age)
 {
     if (_threatenAge.ContainsKey(age))
     {
         return(_threatenAge.GetValue(age).RandomText);
     }
     return("");
 }
コード例 #4
0
        public bool Matches(CharacterAge g1, CharacterAge g2)
        {
            var hashSet = m_matchingRules[g1];

            if (hashSet == null)
            {
                return(true);
            }
            return(hashSet.Contains(g2));
        }
コード例 #5
0
        public void GetAgeMatchQuality_CloseAdult(ActorAge actorAge, CharacterAge characterAge)
        {
            var actor = new Glyssen.VoiceActor.VoiceActor {
                Age = actorAge
            };
            var matchQuality = actor.GetAgeMatchQuality(new CharacterDetail {
                Age = characterAge
            });

            Assert.AreEqual(MatchLevel.Acceptable, matchQuality);
        }
コード例 #6
0
        public void GetAgeMatchQuality_AdultVsChild(ActorAge actorAge, CharacterAge characterAge)
        {
            var actor = new Glyssen.VoiceActor.VoiceActor {
                Age = actorAge
            };
            var matchQuality = actor.GetAgeMatchQuality(new CharacterDetail {
                Age = characterAge
            });

            Assert.AreEqual(AgeMatchQuality.AdultVsChild, matchQuality);
        }
コード例 #7
0
 public void AddRule(CharacterAge age, IEnumerable <CharacterAge> matchingAges)
 {
     if (matchingAges == null)
     {
         m_matchingRules.Add(age, null);
     }
     else
     {
         m_matchingRules.Add(age, new HashSet <CharacterAge>(matchingAges));
     }
 }
コード例 #8
0
        public void GetAgeMatchQuality_Mismatch(ActorAge actorAge, CharacterAge characterAge)
        {
            var actor = new Glyssen.VoiceActor.VoiceActor {
                Age = actorAge
            };
            var matchQuality = actor.GetAgeMatchQuality(new CharacterDetail {
                Age = characterAge
            });

            Assert.AreEqual(MatchLevel.Mismatch, matchQuality);
        }
コード例 #9
0
        public void StoreCharacterDetail(string characterId, CharacterGender gender, CharacterAge age)
        {
            if (m_project.AllCharacterDetailDictionary.ContainsKey(characterId))
            {
                throw new ArgumentException("Project already contains a character with ID " + characterId);
            }
            var detail = new CharacterDetail {
                CharacterId = characterId, Gender = gender, Age = age, MaxSpeakers = 1
            };

            m_pendingCharacterDetails[characterId] = detail;
        }
コード例 #10
0
        private static string GetUiStringForCharacterAge(CharacterAge characterAge)
        {
            switch (characterAge)
            {
            case CharacterAge.Child: return(LocalizationManager.GetString("DialogBoxes.NewCharacterDlg.CharacterAge.Child", "Child"));

            case CharacterAge.Elder: return(LocalizationManager.GetString("DialogBoxes.NewCharacterDlg.CharacterAge.Elder", "Elder"));

            case CharacterAge.YoungAdult: return(LocalizationManager.GetString("DialogBoxes.NewCharacterDlg.CharacterAge.YoungAdult", "Young Adult"));

            default: return(LocalizationManager.GetString("DialogBoxes.NewCharacterDlg.CharacterAge.Adult", "Adult"));
            }
        }
コード例 #11
0
        private static string GetUiStringForCharacterAge(CharacterAge characterAge)
        {
            switch (characterAge)
            {
            case CharacterAge.Child: return(LocalizationManager.GetString("DialogBoxes.VoiceActorAssignmentDlg.CharacterAge.Child", "Child"));

            case CharacterAge.Elder: return(LocalizationManager.GetString("DialogBoxes.VoiceActorAssignmentDlg.CharacterAge.Elder", "Elder"));

            case CharacterAge.YoungAdult: return(LocalizationManager.GetString("DialogBoxes.VoiceActorAssignmentDlg.CharacterAge.YoungAdult", "Young Adult"));

            default: return(string.Empty);
            }
        }
コード例 #12
0
 public PersonalInformation(CharacterName characterName, CharacterSex characterSex,
                            CharacterRace characterRace, CharacterBackground characterBackground, CharacterAge characterAge,
                            CharacterHeight characterHeight, CharacterWeight characterWeight, CharacterHairStyle hairStyle)
 {
     cName       = characterName;
     cRace       = characterRace;
     cSex        = characterSex;
     cBackground = characterBackground;
     cHeight     = characterHeight;
     cWeight     = characterWeight;
     cAge        = characterAge;
     cHair       = hairStyle;
 }
コード例 #13
0
        private static string GetUiStringForCharacterAge(CharacterAge characterAge)
        {
            switch (characterAge)
            {
            case CharacterAge.Child: return("Kiddo");

            case CharacterAge.Elder: return("Geezer");

            case CharacterAge.YoungAdult: return("Whippersnapper");

            default: return(string.Empty);
            }
        }
コード例 #14
0
        public bool ContainsCharacterWithAge(CharacterAge age)
        {
            var characterDetails = m_project.AllCharacterDetailDictionary;

            return(CharacterIds.Any(c =>
            {
                if (CharacterVerseData.IsCharacterStandard(c))
                {
                    return age == CharacterAge.Adult;
                }

                return characterDetails[c].Age == age;
            }));
        }
コード例 #15
0
    public void ChangeAge(CharacterAge newAge, CharacterAge previousAge)
    {
        if (IsInteracting()){
            CloseInteraction();
        }
        if (currentState.GetType() == typeof(MoveState)) {
            EnterState(new IdleState(this));
        }

        ChangeAnimation(newAge.boneAnimation);
        AgeSwapMover.instance.ChangeAgePosition(newAge, previousAge);
        DebugManager.instance.Log("Transition to: " + newAge.stateName + ", from " + previousAge.stateName, "Player");
        //ChangeHitBox(newAge, previousAge);
        Inventory.SwapItemWithCurrentAge(newAge.boneAnimation);
    }
コード例 #16
0
        /// <summary>
        /// We used to use this in character group generation. We no longer use it, but since there are a lot of tests for it and it might
        /// be useful in the future, we'll keep it around for now.
        /// </summary>
        public bool Matches(CharacterDetail character, CharacterGenderMatchingOptions genderMatchingOptions, CharacterAgeMatchingOptions ageMatchingOptions)
        {
            if (!CharacterIds.Any())
            {
                return(false);                // Probably a group set aside for a special purpose in the group generator (e.g., narrator)
            }
            if (CharacterVerseData.IsCharacterStandard(character.CharacterId))
            {
                switch (CharacterVerseData.GetStandardCharacterType(character.CharacterId))
                {
                case CharacterVerseData.StandardCharacter.Narrator:
                    return(CharacterIds.All(i => CharacterVerseData.GetStandardCharacterType(i) == CharacterVerseData.StandardCharacter.Narrator));

                default:
                    return(CharacterIds.All(i =>
                    {
                        var type = CharacterVerseData.GetStandardCharacterType(i);
                        return type != CharacterVerseData.StandardCharacter.Narrator && type != CharacterVerseData.StandardCharacter.NonStandard;
                    }));
                }
            }
            if (CharacterIds.Any(i => CharacterVerseData.IsCharacterStandard(i)))
            {
                return(false);
            }

            bool result = true;

            var characterDetails = m_project.AllCharacterDetailDictionary;

            result &= CharacterIds.All(i =>
            {
                CharacterGender gender = characterDetails[i].Gender;
                return(genderMatchingOptions.Matches(character.Gender, gender));
            });

            result &= CharacterIds.All(i =>
            {
                CharacterAge age = characterDetails[i].Age;
                return(ageMatchingOptions.Matches(character.Age, age));
            });

            return(result);
        }
コード例 #17
0
        public bool ContainsOnlyCharactersWithAge(CharacterAge age)
        {
            var characterDetails = m_project.AllCharacterDetailDictionary;

            return(CharacterIds.All(c =>
            {
                if (CharacterVerseData.IsCharacterStandard(c))
                {
                    return age == CharacterAge.Adult;
                }

                CharacterDetail characterDetail;
                if (!characterDetails.TryGetValue(c, out characterDetail))
                {
                    return false;
                }
                return characterDetail.Age == age;
            }));
        }
コード例 #18
0
 private static void Transition(CharacterAge previousAge, CharacterAge newAge)
 {
     UpdatePlayer(previousAge);
 }
コード例 #19
0
 public static void UpdatePlayer(CharacterAge previousAge)
 {
     playerCharacter.ChangeAge(GetCurrentAge(), previousAge);
 }
コード例 #20
0
    private void ChangeHitBox(CharacterAge newAge, CharacterAge previousAge)
    {
        CharacterController charControl = GetComponent<CharacterController>();
        charControl.radius = newAge.capsule.radius;
        charControl.height = newAge.capsule.height;
        charControl.center = newAge.capsule.center;

        if(previousAge.stateName == CharacterAgeState.YOUNG){
            if(newAge.stateName == CharacterAgeState.MIDDLE || newAge.stateName == CharacterAgeState.OLD){
                transform.position = new Vector3(transform.position.x, transform.position.y + newAge.capsule.height/2, + transform.position.z);
            }
        }
    }
コード例 #21
0
        public void AddCharacterDetailToProject(string characterId, CharacterGender gender, CharacterAge age)
        {
            var detail = new CharacterDetail {
                CharacterId = characterId, Gender = gender, Age = age, MaxSpeakers = 1
            };

            m_project.AddProjectCharacterDetail(detail);
            m_project.SaveProjectCharacterDetailData();
        }