Beispiel #1
0
        public void getXP(long addXP)
        {
            var levelCounter = ExperienceHelper.getLevelUpCounter(level, xp, addXP);

            if (levelCounter > 0)
            {
                level        += levelCounter;
                talentPoints += levelCounter;
                statPoints   += levelCounter;
            }
            this.xp += addXP;
        }
        public static GameCharacter getGameCharacterFromGameCharacterData(GameCharacterData data, GameDataSet gameDataSet)
        {
            GameCharacter character = new GameCharacter()
            {
                level  = data.level,
                ac     = data.ac,
                ap     = data.ap,
                attack = data.attack,
                characterSpriteIndex     = data.characterSpriteIndex,
                characterSpritesheetName = data.characterSpritesheetName,
                hp                      = data.hp,
                displayChar             = data.displayChar,
                name                    = data.name,
                portraitSpriteIndex     = data.portraitSpriteIndex,
                portraitSpritesheetName = data.portraitSpritesheetName,
                totalAP                 = data.ap,
                totalHP                 = data.hp,
                type                    = data.type,
                x            = 0,
                y            = 0,
                strength     = data.strength,
                agility      = data.agility,
                endurance    = data.endurance,
                spirit       = data.spirit,
                xp           = ExperienceHelper.getXPAtLevel(data.level),
                talentPoints = 0,
                statPoints   = 0
            };

            if (data.abilityList.Count > 0)
            {
                List <Ability> abilityList = new List <Ability>();
                foreach (var l in data.abilityList)
                {
                    if (gameDataSet.abilityDataDictionary.ContainsKey(l))
                    {
                        abilityList.Add(AbilityFactory.getAbilityFromAbilityData(gameDataSet.abilityDataDictionary[l], gameDataSet.effectDataDictionary));
                    }
                }
                character.abilityList = abilityList;
            }

            if (data.inventory.Count > 0)
            {
                List <Item> itemList = new List <Item>();
                foreach (var i in data.inventory)
                {
                    Item tempItem = ItemFactory.getItemFromIndex(i, gameDataSet);
                    if (tempItem != null)
                    {
                        if (tempItem.type == ItemType.Ammo)
                        {
                            character.inventory.Add(tempItem);
                            character.Ammo = ItemHelper.getItemSet(character.inventory, tempItem);
                        }
                        else
                        {
                            itemList.Add(tempItem);
                        }
                    }
                }

                character.usableItemList = itemList;

                //character.inventory = itemList;
            }

            if (data.equippedArmor.Count > 0)
            {
                List <Armor> armorList = new List <Armor>();
                foreach (var a in data.equippedArmor)
                {
                    if (gameDataSet.armorDataDictionary.ContainsKey(a))
                    {
                        armorList.Add(ItemFactory.getArmorFromArmorData(gameDataSet.armorDataDictionary[a], gameDataSet.abilityDataDictionary, gameDataSet.effectDataDictionary));
                    }
                }
                character.equippedArmor = armorList;
            }

            if (data.weapon > 0)
            {
                Item i = ItemFactory.getItemFromIndex(data.weapon, gameDataSet);

                Weapon w = (Weapon)ItemFactory.getItemFromIndex(data.weapon, gameDataSet);

                if (w.weaponType == WeaponType.OneHandRanged || w.weaponType == WeaponType.TwoHandRanged)
                {
                    w = (RangedWeapon)w;
                }


                character.weapon = w;
            }

            if (data.activeEffects.Count > 0)
            {
                List <ActiveEffect> aeList = new List <ActiveEffect>();

                foreach (long l in data.activeEffects)
                {
                    if (gameDataSet.effectDataDictionary.ContainsKey(l))
                    {
                        aeList.Add(AbilityFactory.getActiveEffectFromEffectData(gameDataSet.effectDataDictionary[l]));
                    }
                }
                character.activeEffects = aeList;
            }

            if (data.passiveEffects.Count > 0)
            {
                List <PassiveEffect> peList = new List <PassiveEffect>();

                foreach (long l in data.passiveEffects)
                {
                    if (gameDataSet.effectDataDictionary.ContainsKey(l))
                    {
                        peList.Add(AbilityFactory.getPassiveEffectFromEffectData(gameDataSet.effectDataDictionary[l]));
                    }
                }
                character.passiveEffects = peList;
            }


            if (data.type == CharacterType.Enemy)
            {
                character = getEnemyFromGameCharacter(character, data.enemyType);
            }

            return(character);
        }