예제 #1
0
        private ArmorParams GetArmorParams(PreCharParams arg)
        {
            var csv = new List <string>();

            if (arg.Armors.ContainsKey(SINGULAR))
            {
                csv = GetEquipmentCSV(arg.Armors[SINGULAR]);
            }
            if (csv != null && csv.Count >= 3)
            {
                try
                {
                    var key   = csv[PredefinedEquipmentXMLIndexes.NAME] + "_" + csv[PredefinedEquipmentXMLIndexes.TIER];
                    var armor = ArmorParamTable.Instance.Table[key];
                    armor.Sprites = EquipmentSpritesTable.Instance.Table[key];
                    return(armor);
                }
                catch (KeyNotFoundException e)
                {
                    var key = csv[PredefinedEquipmentXMLIndexes.NAME] + "_" + csv[PredefinedEquipmentXMLIndexes.TIER];
                    Debug.LogError(key + " was not found");
                    Debug.LogError(e.Message);
                    return(null);
                }
            }
            else
            {
                return(null);
            }
        }
예제 #2
0
        private WeaponParams GetWpnParams(PreCharParams arg, Dictionary <string, List <List <string> > > table)
        {
            var csv = new List <string>();

            if (table.ContainsKey(SINGULAR))
            {
                csv = GetEquipmentCSV(table[SINGULAR]);
            }
            if (csv != null && csv.Count >= 3)
            {
                var key = csv[PredefinedEquipmentXMLIndexes.NAME] + "_" + csv[PredefinedEquipmentXMLIndexes.TIER];
                if (WeaponParamTable.Instance.Table.ContainsKey(key))
                {
                    var weapon = WeaponParamTable.Instance.Table[key];
                    weapon.Sprites = EquipmentSpritesTable.Instance.Table[key];
                    return(weapon);
                }
                else
                {
                    return(null);
                }
            }
            else
            {
                return(null);
            }
        }
예제 #3
0
        private MChar BuildHelper(PreCharParams preCharParams)
        {
            var character = new MChar(preCharParams.Race);

            if (preCharParams.Race != ERace.Critter && preCharParams.Race != ERace.None)
            {
                var racialPerks = RaceParamsTable.Instance.Table[preCharParams.Race].DefaultPerks;
                PerkMediator.Instance.SetCharacterPerks(character, racialPerks);
            }
            PerkMediator.Instance.SetCharacterPerks(character, preCharParams.Perks);
            this.BuildBaseClassHelper(preCharParams, character);
            this.BuildAbilities(preCharParams, character);
            this.BuildCharStats(preCharParams, character);
            this.BuildClassPrimaryStats(character);
            var secondary = GetSecondaryStats(character.GetBaseStats().GetPrimaryStats());

            character.GetBaseStats().SetSecondaryStats(secondary);
            this.BuildClassSecondaryStats(character);
            this.BuildCurStats(character);
            this.BuildCurPoints(character);
            character.SetType(preCharParams.Type);
            character.SetParams(preCharParams);
            this.BuildCharMount(preCharParams, character);
            character.SetAIRole(preCharParams.AIRole);
            return(character);
        }
예제 #4
0
        private VChar GetRandomCritter(PreCharParams c)
        {
            var p = new VChar();

            p.Sprites = CharSpriteLoader.Instance.GetCritterSprites(c);
            return(p);
        }
예제 #5
0
 private PStats GetRaceStats(PreCharParams c)
 {
     if (RaceParamsTable.Instance.Table.ContainsKey(c.Race))
     {
         return(RaceParamsTable.Instance.Table[c.Race].PrimaryStats.Clone());
     }
     else
     {
         return(null);
     }
 }
예제 #6
0
        private void BuildBaseClassHelper(PreCharParams p, MChar c)
        {
            var builder = new ClassBuilder();

            foreach (var kvp in p.Classes)
            {
                var toAdd = builder.Build(kvp.Key);
                toAdd.Level = kvp.Value;
                c.GetBaseClasses().Add(kvp.Key, toAdd);
            }
        }
예제 #7
0
        public VChar GetRandomizedCharacterSprites(PreCharParams c)
        {
            var random = new VChar();

            switch (c.Type)
            {
            case (ECharType.Critter): { random = GetRandomCritter(c); } break;

            case (ECharType.Humanoid): { random = GetRandomHumanoid(c); } break;
            }
            return(random);
        }
예제 #8
0
        private void BuildCharStats(PreCharParams preCharParams, MChar character)
        {
            var raceStats = this.GetRaceStats(preCharParams);

            if (raceStats == null)
            {
                var specificStats = PredefinedCharTable.Instance.Table[preCharParams.Name];
                character.GetBaseStats().SetPrimaryStats(specificStats.Stats);
            }
            else
            {
                character.GetBaseStats().SetPrimaryStats(raceStats);
            }
        }
예제 #9
0
 private void BuildCharMount(PreCharParams preCharParams, MChar character)
 {
     if (preCharParams.Type == Enum.ECharType.Humanoid)
     {
         var builder = new MountBuilder();
         this.BuildArmorHelper(character, preCharParams);
         this.BuildWeaponHelper(character, preCharParams);
         var mountParams = this.GetMountParams(preCharParams);
         if (mountParams != null)
         {
             character.SetMount(builder.Build(mountParams));
         }
     }
 }
예제 #10
0
 private MountParams GetMountParams(PreCharParams arg)
 {
     if (arg.Mount != EMount.None)
     {
         var mount   = new MountParams();
         var mParams = MountsTable.Instance.Table[arg.Mount];
         mount.Type = arg.Mount;
         return(mount);
     }
     else
     {
         return(null);
     }
 }
예제 #11
0
        private void BuildAbilities(PreCharParams p, MChar c)
        {
            foreach (var kvp in p.AbilityEffectDict)
            {
                var ability = AbilityFactory.Instance.CreateNewObject(kvp.Key);
                ability.Data.Effects.AddRange(kvp.Value);
                c.GetAbilitiesContainer().AddAbility(ability);
            }
            var wpnAbs = WeaponAbilityFactory.Instance.CreateNewObject(p.WpnAbilities);

            foreach (var v in wpnAbs)
            {
                c.GetAbilitiesContainer().AddAbility(v);
            }
        }
예제 #12
0
        private VChar GetRandomHumanoid(PreCharParams c)
        {
            var p     = new VChar();
            var table = RaceParamsTable.Instance.Table;

            p.Face = ListUtil <int> .GetRandomElement(table[c.Race].Sprites.Face);

            if (table[c.Race].Sprites.HeadDeco1.Count > 0)
            {
                p.HeadDeco1 = ListUtil <int> .GetRandomElement(table[c.Race].Sprites.HeadDeco1);
            }
            else
            {
                p.HeadDeco1 = -1;
            }
            if (table[c.Race].Sprites.HeadDeco2.Count > 0)
            {
                p.HeadDeco2 = ListUtil <int> .GetRandomElement(table[c.Race].Sprites.HeadDeco2);
            }
            else
            {
                p.HeadDeco2 = -1;
            }
            if (table[c.Race].Sprites.TorsoDeco1.Count > 0)
            {
                p.TorsoDeco1 = ListUtil <int> .GetRandomElement(table[c.Race].Sprites.TorsoDeco1);
            }
            else
            {
                p.TorsoDeco1 = -1;
            }
            if (table[c.Race].Sprites.TorsoDeco2.Count > 0)
            {
                p.TorsoDeco2 = ListUtil <int> .GetRandomElement(table[c.Race].Sprites.TorsoDeco2);
            }
            else
            {
                p.TorsoDeco2 = -1;
            }
            p.Torso = ListUtil <int> .GetRandomElement(table[c.Race].Sprites.Torso);

            p.Head    = p.Torso - TORSO_OFFSET;
            p.Sprites = CharSpriteLoader.Instance.GetCharacterSprites(c);

            return(p);
        }
예제 #13
0
        private ArmorParams GetHelmParams(PreCharParams arg)
        {
            var csv = new List <string>();

            if (arg.Helms.ContainsKey(SINGULAR))
            {
                csv = GetEquipmentCSV(arg.Helms[SINGULAR]);
            }
            if (csv != null && csv.Count >= 3)
            {
                var key  = csv[PredefinedEquipmentXMLIndexes.NAME] + "_" + csv[PredefinedEquipmentXMLIndexes.TIER];
                var helm = ArmorParamTable.Instance.Table[key];
                helm.Sprites = EquipmentSpritesTable.Instance.Table[key];
                return(helm);
            }
            else
            {
                return(null);
            }
        }
예제 #14
0
        private void BuildWeaponHelper(MChar c, PreCharParams p)
        {
            var rWpnParams = this.GetWpnParams(p, p.RWeapons);
            var lWpnParams = this.GetWpnParams(p, p.LWeapons);

            if (rWpnParams != null)
            {
                var weapon = WeaponFactory.Instance.CreateNewObject(
                    rWpnParams.Name,
                    rWpnParams.Tier);
                c.GetEquipment().AddWeapon(weapon, false);
            }
            if (lWpnParams != null)
            {
                var weapon = WeaponFactory.Instance.CreateNewObject(
                    lWpnParams.Name,
                    lWpnParams.Tier);
                c.GetEquipment().AddWeapon(weapon, true);
            }
        }
예제 #15
0
        private void BuildArmorHelper(MChar c, PreCharParams p)
        {
            var armorParams = this.GetArmorParams(p);

            if (armorParams != null)
            {
                var armor = ArmorFactory.Instance.CreateNewObject(
                    armorParams.Name,
                    armorParams.Tier);
                c.GetEquipment().AddArmor(armor);
            }
            var helmParams = this.GetHelmParams(p);

            if (helmParams != null)
            {
                var helm = HelmFactory.Instance.CreateNewObject(
                    helmParams.Name,
                    helmParams.Tier);
                c.GetEquipment().AddHelm(helm);
            }
        }
예제 #16
0
 public void SetParams(PreCharParams p)
 {
     this._params = p;
 }
예제 #17
0
        public Sprite[] GetCritterSprites(PreCharParams c)
        {
            var path = StringUtil.PathBuilder(CRITTER_PATH, c.Name, EXTENSION);

            return(GetSprites(path));
        }
예제 #18
0
        public Sprite[] GetCharacterSprites(PreCharParams c)
        {
            var path = StringUtil.PathBuilder(CHARACTER_PATH, c.Race.ToString(), EXTENSION);

            return(GetSprites(path));
        }
예제 #19
0
 public MChar CreateNewCharacter(PreCharParams arg)
 {
     return(this._charBuilder.Build(arg));
 }
예제 #20
0
 public MChar Build(PreCharParams arg)
 {
     return(BuildHelper(arg));
 }