//check if item can be equipped
    public bool CanEquipItem(EItemKey itemKey, EUnitEqupmentSlot slotKey)
    {
        BaseItem item = ItemsConfig.Instance.GetItem(itemKey);

        //check item data found
        if (item == null)
        {
            return(false);
        }

        //check slot is correct
        if (!_slotsConfig.ContainsKey(slotKey))
        {
            return(false);
        }

        //no slot restrictions
        if (_slotsConfig[slotKey].Length == 0)
        {
            return(true);
        }

        //check item fits to slot
        for (int i = 0; i < _slotsConfig[slotKey].Length; i++)
        {
            if (_slotsConfig[slotKey][i] == item.Type)
            {
                return(true);
            }
        }

        return(false);
    }
    //equip item
    public void Equip(int slotId, EItemKey itemKey)
    {
        //check slotId
        if (slotId < 0 || _equipment.Length - 1 < slotId)
        {
            EventsAggregator.Items.Broadcast <int>(EItemEvent.WrongSlotId, slotId);
            return;
        }

        if (!CanEquipItem(itemKey, _equipment[slotId].SlotName))
        {
            EventsAggregator.Items.Broadcast <int>(EItemEvent.WrongItem, slotId);
            return;
        }

        BaseItem item = ItemsConfig.Instance.GetItem(itemKey);

        EItemKey oldItemKey = GetItemInSlot(slotId);

        _equipment[slotId].ItemKey = item.Key;

        if (_onEquipmentUpdate != null)
        {
            _onEquipmentUpdate(_equipment[slotId].SlotName, oldItemKey, itemKey);
        }
    }
    public virtual void SetWeaponType(EItemKey weaponRKey, EItemKey weaponLKey)
    {
        if (weaponRKey != EItemKey.None && weaponLKey != EItemKey.None)
        {
            //TODO: setup dual animation
        }
        else
        {
            EItemType weaponType = ItemsConfig.Instance.GetItem(weaponRKey != EItemKey.None ? weaponRKey : weaponLKey).Type;
            switch (weaponType)
            {
            case EItemType.W_Gun:
                _animRun            = EUnitAnimationState.Run_Gun;
                _animAttack         = EUnitAnimationState.Strike_Gun;
                _weaponStanceOffset = _gunStanceOffset;
                break;

            case EItemType.W_Rifle:
                _animRun            = EUnitAnimationState.Run_Rifle;
                _animAttack         = EUnitAnimationState.Strike_Rifle;
                _weaponStanceOffset = _rifleStanceOffset;
                break;
            }
        }
    }
Exemple #4
0
 public bool IsWeaponRanged(EItemKey itemKey)
 {
     if (IsWeapon(itemKey))
     {
         return(itemKey == EItemKey.W_Gun || itemKey == EItemKey.W_Rifle);
     }
     return(false);
 }
	public PlayerItem GetItem(EItemKey itemKey) {
		for (int i = 0; i < _items.Count; i++) {
			if (_items[i].ItemData.Key == itemKey) {
				return _items[i];
			}
		}
		return null;
	}
Exemple #6
0
    private string GetItemResourcePath(EItemKey itemKey)
    {
        BaseItem itemData = ItemsConfig.Instance.GetItem(itemKey);

        if (itemData != null && !itemData.PrefabName.Equals(string.Empty))
        {
            return(itemData.PrefabName);
        }

        return(itemKey.ToString());
    }
 public PlayerItem GetItem(EItemKey itemKey)
 {
     for (int i = 0; i < _items.Count; i++)
     {
         if (_items[i].ItemData.Key == itemKey)
         {
             return(_items[i]);
         }
     }
     return(null);
 }
Exemple #8
0
    public BaseItem GetItem(EItemKey itemKey)
    {
        for (int i = 0; i < _data.Length; i++)
        {
            if (_data[i].Key == itemKey)
            {
                return(_data[i]);
            }
        }

        return(null);
    }
	private void OnItemEquip(BaseUnit unit, EUnitEqupmentSlot slot, EItemKey oldItemKey, EItemKey newItemKey) {
		if (UnitsConfig.Instance.IsHero(unit.Data.Key) && Global.Instance.Player.Heroes.HaveHero(unit.Data.Key)) {
			PlayerItem oldItem = GetItem(oldItemKey);
			if (oldItem != null) {
				oldItem.ItemCarrier = EUnitKey.Idle;
				oldItem.ItemSlot = EUnitEqupmentSlot.None;
			}

			PlayerItem newItem = GetItem(newItemKey);
			if (newItem != null) {
				newItem.ItemCarrier = unit.Data.Key;
				newItem.ItemSlot = slot;
			}
		}
	}
    private void OnItemEquip(BaseUnit unit, EUnitEqupmentSlot slot, EItemKey oldItemKey, EItemKey newItemKey)
    {
        if (UnitsConfig.Instance.IsHero(unit.Data.Key) && Global.Instance.Player.Heroes.HaveHero(unit.Data.Key))
        {
            PlayerItem oldItem = GetItem(oldItemKey);
            if (oldItem != null)
            {
                oldItem.ItemCarrier = EUnitKey.Idle;
                oldItem.ItemSlot    = EUnitEqupmentSlot.None;
            }

            PlayerItem newItem = GetItem(newItemKey);
            if (newItem != null)
            {
                newItem.ItemCarrier = unit.Data.Key;
                newItem.ItemSlot    = slot;
            }
        }
    }
	//equip item
	public void Equip(int slotId, EItemKey itemKey) {
		//check slotId
		if (slotId < 0 || _equipment.Length - 1 < slotId) {
			EventsAggregator.Items.Broadcast<int>(EItemEvent.WrongSlotId, slotId);
			return;
		}

		if (!CanEquipItem(itemKey, _equipment[slotId].SlotName)) {
			EventsAggregator.Items.Broadcast<int>(EItemEvent.WrongItem, slotId);
			return;
		}

		BaseItem item = ItemsConfig.Instance.GetItem(itemKey);

		EItemKey oldItemKey = GetItemInSlot(slotId);
		_equipment[slotId].ItemKey = item.Key;

		if (_onEquipmentUpdate != null) {
			_onEquipmentUpdate(_equipment[slotId].SlotName, oldItemKey, itemKey);
		}
	}
 public void Equip(EUnitEqupmentSlot slotName, EItemKey itemKey)
 {
     Equip(SlotNameToId(slotName), itemKey);
 }
	public ItemSlot(EUnitEqupmentSlot slotName) {
		_slotName = slotName;
		_itemKey = EItemKey.None;
	}
Exemple #14
0
 public ItemSlot(EUnitEqupmentSlot slotName)
 {
     _slotName = slotName;
     _itemKey  = EItemKey.None;
 }
 public void Equip(BaseHero hero, int slotId, EItemKey itemKey)
 {
     hero.Inventory.Equip(slotId, itemKey);
 }
	public override void SetWeaponType(EItemKey weaponRKey, EItemKey weaponLKey) {
		_animRun = EUnitAnimationState.Run_Gun;
		_animAttack = EUnitAnimationState.Strike_Gun;
		_weaponStanceOffset = _gunStanceOffset;
	}
	protected virtual void OnEquipmentUpdate(EUnitEqupmentSlot slot, EItemKey oldItemKey, EItemKey newItemKey) {
		RecalculateParams();

		EventsAggregator.Units.Broadcast<BaseUnit, EUnitEqupmentSlot, EItemKey, EItemKey>(EUnitEvent.EquipmentUpdate, this, slot, oldItemKey, newItemKey);
	}
Exemple #18
0
 public ItemSlot(EUnitEqupmentSlot slotName, EItemKey itemKey)
 {
     _slotName = slotName;
     _itemKey  = itemKey;
 }
 public static string GetLootIconResourcePath(EItemKey itemKey)
 {
     return(GetLootIconResourcePath(ItemsConfig.Instance.GetItem(itemKey).IconName));
 }
	public BaseItem(EItemKey key, EItemType type, EUnitEqupmentSlot[] possibleSlots) {
		_key = key;
		_type = type;
		_possibleSlots = possibleSlots;
	}
Exemple #21
0
    private void LoadItemsResources(Dictionary <EItemKey, GameObject[]> resourcesDic, EUnitKey unitKey, UnitModelView unitModelView, EItemKey weaponRKey, EItemKey weaponLKey, EItemKey armorKey)
    {
        if (unitModelView != null)
        {
            GameObject rhWeaponResource  = null;
            GameObject lhWeaponResource  = null;
            GameObject headArmorResource = null;
            GameObject bodyArmorResource = null;

            unitModelView.SetWeaponType(weaponRKey, weaponLKey);

            //right hand weapon
            if (!resourcesDic.ContainsKey(weaponRKey))
            {
                GameObject[] weaponResources = new GameObject[1];
                weaponResources[0] = Resources.Load(string.Format("{0}/{1}", GameConstants.Paths.ITEM_RESOURCES, GetItemResourcePath(weaponRKey))) as GameObject;
                resourcesDic.Add(weaponRKey, weaponResources);

                rhWeaponResource = weaponResources[0];
            }
            else if (weaponRKey != EItemKey.None)
            {
                rhWeaponResource = resourcesDic[weaponRKey][0];
            }

            //left hand weapon
            if (!resourcesDic.ContainsKey(weaponLKey))
            {
                GameObject[] weaponResources = new GameObject[1];
                weaponResources[0] = Resources.Load(string.Format("{0}/{1}", GameConstants.Paths.ITEM_RESOURCES, GetItemResourcePath(weaponLKey))) as GameObject;
                resourcesDic.Add(weaponLKey, weaponResources);

                lhWeaponResource = weaponResources[0];
            }
            else if (weaponLKey != EItemKey.None)
            {
                lhWeaponResource = resourcesDic[weaponLKey][0];
            }

            //armor
            if (armorKey == EItemKey.None)
            {
                //Debug.LogWarning(string.Format("No armor set for {0} unit", unitKey));
            }
            else if (!resourcesDic.ContainsKey(armorKey))
            {
                string armorResourcePath = GetItemResourcePath(armorKey);

                GameObject[] armorResources = new GameObject[2];
                armorResources[0] = Resources.Load(string.Format("{0}/{1}_head", GameConstants.Paths.ITEM_RESOURCES, armorResourcePath)) as GameObject;
                armorResources[1] = Resources.Load(string.Format("{0}/{1}_body", GameConstants.Paths.ITEM_RESOURCES, armorResourcePath)) as GameObject;
                resourcesDic.Add(armorKey, armorResources);

                headArmorResource = armorResources[0];
                bodyArmorResource = armorResources[1];
            }
            else
            {
                headArmorResource = resourcesDic[armorKey][0];
                bodyArmorResource = resourcesDic[armorKey][1];
            }

            unitModelView.SetupGraphics(rhWeaponResource, lhWeaponResource, headArmorResource, bodyArmorResource);
        }
    }
Exemple #22
0
 public bool IsWeapon(EItemKey itemKey)
 {
     return((int)itemKey > 1000000 && (int)itemKey < 2000000);
 }
		public static string GetLootIconResourcePath(EItemKey itemKey) {
			return GetLootIconResourcePath(ItemsConfig.Instance.GetItem(itemKey).IconName);
		}
	public ItemSlot(EUnitEqupmentSlot slotName, EItemKey itemKey) {
		_slotName = slotName;
		_itemKey = itemKey;
	}
Exemple #25
0
    protected virtual void OnEquipmentUpdate(EUnitEqupmentSlot slot, EItemKey oldItemKey, EItemKey newItemKey)
    {
        RecalculateParams();

        EventsAggregator.Units.Broadcast <BaseUnit, EUnitEqupmentSlot, EItemKey, EItemKey>(EUnitEvent.EquipmentUpdate, this, slot, oldItemKey, newItemKey);
    }
	public virtual void SetWeaponType(EItemKey weaponRKey, EItemKey weaponLKey) {
		if (weaponRKey != EItemKey.None && weaponLKey != EItemKey.None) {
			//TODO: setup dual animation
		} else {
			EItemType weaponType = ItemsConfig.Instance.GetItem(weaponRKey != EItemKey.None ? weaponRKey : weaponLKey).Type;
			switch (weaponType) {
				case EItemType.W_Gun:
					_animRun = EUnitAnimationState.Run_Gun;
					_animAttack = EUnitAnimationState.Strike_Gun;
					_weaponStanceOffset = _gunStanceOffset;
					break;
				case EItemType.W_Rifle:
					_animRun = EUnitAnimationState.Run_Rifle;
					_animAttack = EUnitAnimationState.Strike_Rifle;
					_weaponStanceOffset = _rifleStanceOffset;
					break;
			}
		}
	}
Exemple #27
0
 public BaseItem(EItemKey key, EItemType type, EUnitEqupmentSlot[] possibleSlots)
 {
     _key           = key;
     _type          = type;
     _possibleSlots = possibleSlots;
 }
	public void Equip(EUnitEqupmentSlot slotName, EItemKey itemKey) {
		Equip(SlotNameToId(slotName), itemKey);
	}
	public void Equip(BaseHero hero, int slotId, EItemKey itemKey) {
		hero.Inventory.Equip(slotId, itemKey);
	}
	//check if item can be equipped
	public bool CanEquipItem(EItemKey itemKey, EUnitEqupmentSlot slotKey) {
		BaseItem item = ItemsConfig.Instance.GetItem(itemKey);

		//check item data found
		if (item == null) {
			return false;
		}

		//check slot is correct
		if (!_slotsConfig.ContainsKey(slotKey)) {
			return false;
		}

		//no slot restrictions
		if (_slotsConfig[slotKey].Length == 0) {
			return true;
		}

		//check item fits to slot
		for (int i = 0; i < _slotsConfig[slotKey].Length; i++) {
			if (_slotsConfig[slotKey][i] == item.Type) {
				return true;
			}
		}

		return false;
	}
Exemple #31
0
 public override void SetWeaponType(EItemKey weaponRKey, EItemKey weaponLKey)
 {
     _animRun            = EUnitAnimationState.Run_Rifle;
     _animAttack         = EUnitAnimationState.Strike_Rifle;
     _weaponStanceOffset = _rifleStanceOffset;
 }
Exemple #32
0
 public RequireCombineMaterialData(EItemKey eItemKey, int iItemCount)
 {
     this.eItemKey = eItemKey; this.iItemCount = iItemCount;
 }