예제 #1
0
 private static List<EffectivePoint> CalculateAndFilterTargetablePoints(Weapon weapon, Point wielderPosition, int wielderVision)
 {
     List<EffectivePoint> pointList = weapon.CalculateTargetablePoints(wielderPosition);
     CoreGameEngine.Instance.FilterNotTargetablePointsFromList(pointList, wielderPosition, wielderVision, true);
     CoreGameEngine.Instance.FilterNotVisibleBothWaysFromList(wielderPosition, pointList, Point.Invalid);
     return pointList;
 }
예제 #2
0
 private static bool IsPositionInTargetablePoints(Weapon weapon, Point wielderPosition, int wielderVision, Point pointOfInterest)
 {
     foreach (EffectivePoint e in CalculateAndFilterTargetablePoints(weapon, wielderPosition, wielderVision))
     {
         if (e.Position == pointOfInterest)
             return true;
     }
     return false;
 }
예제 #3
0
 private static float EffectiveStrengthAtPoint(Weapon weapon, Point wielderPosition, int wielderVision, Point pointOfInterest)
 {
     foreach (EffectivePoint e in CalculateAndFilterTargetablePoints(weapon, wielderPosition, wielderVision))
     {
         if (e.Position == pointOfInterest)
             return e.EffectiveStrength;
     }
     return 0;
 }
예제 #4
0
파일: Player.cs 프로젝트: donblas/magecrawl
 private void WriteWeaponToSave(XmlWriter writer, Weapon weapon)
 {
     Item.WriteXmlEntireNode(weapon, "EquipedWeapon", writer);
 }
예제 #5
0
 public static List<EffectivePoint> CalculateTargetablePointsForEquippedWeapon(Weapon weapon, Point wielderPosition, int wielderVision)
 {
     return CalculateAndFilterTargetablePoints(weapon, wielderPosition, wielderVision);
 }
예제 #6
0
파일: Player.cs 프로젝트: donblas/magecrawl
        public override void ReadXml(XmlReader reader)
        {
            reader.ReadStartElement();
            base.ReadXml(reader);

            m_equipedWeapon = ReadWeaponFromSave(reader);
            m_secondaryWeapon = ReadWeaponFromSave(reader);

            m_currentHealth = reader.ReadElementContentAsInt();
            m_baseMaxHealth = reader.ReadElementContentAsInt();

            m_currentStamina = reader.ReadElementContentAsInt();
            m_baseMaxStamina = reader.ReadElementContentAsInt();

            m_baseCurrentMP = reader.ReadElementContentAsInt();
            m_baseMaxMP = reader.ReadElementContentAsInt();

            SkillPoints = reader.ReadElementContentAsInt();

            LastTurnSeenAMonster = reader.ReadElementContentAsInt();

            ChestArmor = (IArmor)Item.ReadXmlEntireNode(reader);
            Headpiece = (IArmor)Item.ReadXmlEntireNode(reader);
            Gloves = (IArmor)Item.ReadXmlEntireNode(reader);
            Boots = (IArmor)Item.ReadXmlEntireNode(reader);

            m_itemList = new List<Item>();
            ReadListFromXMLCore readItemDelegate = new ReadListFromXMLCore(delegate
            {
                string typeString = reader.ReadElementContentAsString();
                Item newItem = ItemFactory.Instance.CreateBaseItem(typeString); 
                newItem.ReadXml(reader);
                m_itemList.Add(newItem);
            });
            ListSerialization.ReadListFromXML(reader, readItemDelegate);

            m_skills = new List<Skill>();
            ReadListFromXMLCore readSkillDelegate = new ReadListFromXMLCore(delegate
            {
                string skillName = reader.ReadElementContentAsString();
                m_skills.Add(SkillFactory.Instance.CreateSkill(skillName));
            });
            ListSerialization.ReadListFromXML(reader, readSkillDelegate);
            reader.ReadEndElement();
        }
예제 #7
0
파일: Player.cs 프로젝트: donblas/magecrawl
 public IWeapon UnequipSecondaryWeapon()
 {
     if (m_secondaryWeapon == null)
         return null;
     Weapon oldWeapon = (Weapon)m_secondaryWeapon;
     m_secondaryWeapon = null;
     return oldWeapon;
 }
예제 #8
0
파일: Player.cs 프로젝트: donblas/magecrawl
        internal IWeapon EquipSecondaryWeapon(IWeapon weapon)
        {
            if (weapon == null)
                throw new System.ArgumentException("EquipSecondaryWeapon - Null weapon");

            IWeapon oldWeapon = UnequipSecondaryWeapon();

            m_secondaryWeapon = (Weapon)weapon;
            if (m_secondaryWeapon.IsRanged)
                m_secondaryWeapon.LoadWeapon();

            return oldWeapon;
        }
예제 #9
0
파일: Player.cs 프로젝트: donblas/magecrawl
        private Weapon UnequipWeapon()
        {
            if (m_equipedWeapon == null)
                return null;

            Weapon oldWeapon = (Weapon)m_equipedWeapon;
            m_equipedWeapon = null;
            return oldWeapon;
        }
예제 #10
0
파일: Player.cs 프로젝트: donblas/magecrawl
        private IWeapon EquipWeapon(IWeapon weapon)
        {
            if (weapon == null)
                throw new System.ArgumentException("EquipWeapon - Null weapon");

            Weapon oldWeapon = UnequipWeapon();

            m_equipedWeapon = (Weapon)weapon;
            if (m_equipedWeapon.IsRanged)
                m_equipedWeapon.LoadWeapon();

            return oldWeapon;
        }