コード例 #1
0
ファイル: PartPickup.cs プロジェクト: MyEyes/Igorr
 public PartPickup(Body.BodyPart part, IMap map, Rectangle rect, int id)
     : base(map, part, rect, id)
 {
     _bodyPart = part;
     offset.Y = (float)(-8 * (0.5f+0.5f*Math.Sin(_rect.X / 32.0f)));
     Move(offset);
 }
コード例 #2
0
ファイル: Body.cs プロジェクト: MyEyes/Igorr
 public bool CanEquip(int slot, BodyPart part)
 {
     BodyPartType type = part.Type;
     switch (type)
     {
         case BodyPartType.Armor:
             for (int x = 0; x < Armor.Length; x++)
                 if ((Armor[x] == null && (slot < 0 || slot >= Armor.Length)) || x == slot)
                 {
                     return true;
                 }
             break;
         case BodyPartType.Attack:
             for (int x = 0; x < Attacks.Length; x++)
                 if ((Attacks[x] == null && (slot < 0 || slot >= Attacks.Length)) || x == slot)
                 {
                     return true;
                 }
             break;
         case BodyPartType.Movement:
             for (int x = 0; x < Movement.Length; x++)
                 if ((Movement[x] == null && (slot < 0 || slot >= Movement.Length)) || x == slot)
                 {
                     return true;
                 }
             break;
         case BodyPartType.Utility:
             for (int x = 0; x < Utility.Length; x++)
                 if ((Utility[x] == null && (slot < 0 || slot >= Utility.Length)) || x == slot)
                 {
                     return true;
                 }
             break;
         case BodyPartType.BaseBody:
             return true;
     }
     return false;
 }
コード例 #3
0
ファイル: Player.cs プロジェクト: MyEyes/Igorr
 /*
 public void CalculateTotalBonus()
 {
     _completeBody.Clear();
     //_completeBody.jumpBonus = 100f;
     _completeBody.speedBonus = 60f;
     for (int x = 0; x < _bodyParts.Count; x++)
         _completeBody.Add(_bodyParts[x]);
 }
  */
 public void GivePart(BodyPart part, bool autoequip)
 {
     //bool newPart = true;
     /*
     for (int x = 0; x < _bodyParts.Count; x++)
         if (_bodyParts[x].GetID() == part.GetID())
             newPart = false;
     if (newPart)
     {
      */
     if (!autoequip || !_body.TryEquip(-1, part))
         _inventory.Add(part);
     //_bodyParts.Add(part);
     //CalculateTotalBonus();
     //}
 }
コード例 #4
0
ファイル: PartContainer.cs プロジェクト: MyEyes/Igorr
 public PartContainer(IMap map, BodyPart part, Rectangle rect, int id)
     : base(map, part.Texture, rect, id)
 {
     _part = part;
 }
コード例 #5
0
ファイル: Body.cs プロジェクト: MyEyes/Igorr
        public void Unequip(BodyPart part, bool dropped = false)
        {
            changes++;
            if (owner.Map != null && dropped)
            {
                MoveItemMessage mim = (MoveItemMessage)owner.Map.ProtocolHelper.NewMessage(MessageTypes.MoveItem);
                mim.Slot = -1;
                mim.Quantity = 1;
                mim.id = part.GetID();
                mim.From = MoveTarget.Body;
                mim.Encode();
                owner.Map.SendMessage(mim, true);
            }

            for (int x = 0; x < Movement.Length; x++)
            {
                if (part.Equals(Movement[x]))
                {
                    Movement[x] = null;
                    return;
                }
            }

            for (int x = 0; x < Utility.Length; x++)
            {
                if (part.Equals(Utility[x]))
                {
                    Utility[x] = null;
                    return;
                }
            }

            for (int x = 0; x < Armor.Length; x++)
            {
                if (part.Equals(Armor[x]))
                {
                    Armor[x] = null;
                    return;
                }
            }

            for (int x = 0; x < Attacks.Length; x++)
            {
                if (part.Equals(Attacks[x]))
                {
                    Attacks[x] = null;
                    return;
                }
            }
        }
コード例 #6
0
ファイル: Body.cs プロジェクト: MyEyes/Igorr
        public bool TryEquip(int slot, BodyPart part, bool dropped=false)
        {
            changes++;
            if (owner.Map != null && dropped)
            {
                MoveItemMessage mim = (MoveItemMessage)owner.Map.ProtocolHelper.NewMessage(MessageTypes.MoveItem);
                mim.Slot = slot;
                mim.Quantity = 1;
                mim.id = part.GetID();
                mim.To = MoveTarget.Body;
                mim.Encode();
                owner.Map.SendMessage(mim, true);
            }

            BodyPartType type = part.Type;
            switch (type)
            {
                case BodyPartType.Armor:
                    for (int x = 0; x < Armor.Length; x++)
                        if ((Armor[x] == null && (slot < 0 || slot >= Armor.Length)) || x == slot)
                        {
                            if (x == slot && Armor[x] != null && Armor[x] != part)
                                owner.Inventory.Add(Armor[x]);
                            Armor[x] = part as ArmorPart;
                            return true;
                        }
                    break;
                case BodyPartType.Attack:
                    for (int x = 0; x < Attacks.Length; x++)
                        if ((Attacks[x] == null && (slot < 0 || slot >= Attacks.Length)) || x == slot)
                        {
                            if (x == slot && Attacks[x] != null && Attacks[x] != part)
                                owner.Inventory.Add(Attacks[x]);
                            Attacks[x] = part as AttackPart;
                            return true;
                        }
                    break;
                case BodyPartType.Movement:
                    for (int x = 0; x < Movement.Length; x++)
                        if ((Movement[x] == null && (slot < 0 || slot >= Movement.Length)) || x == slot)
                        {
                            if (x == slot && Movement[x] != null && Movement[x] != part)
                                owner.Inventory.Add(Movement[x]);
                            Movement[x] = part as MovementPart;
                            return true;
                        }
                    break;
                case BodyPartType.Utility:
                    for (int x = 0; x < Utility.Length; x++)
                        if ((Utility[x] == null && (slot < 0 ||slot>=Utility.Length)) || x == slot)
                        {
                            if (x == slot && Utility[x]!=null && Utility[x]!=part)
                                owner.Inventory.Add(Utility[x]);
                            Utility[x] = part as UtilityPart;
                            return true;
                        }
                    break;
                case BodyPartType.BaseBody:

                    this.ChangeBaseBody(part as BaseBody);
                    return true;
            }
            return false;
        }