private IEnumerator IPurchaseEquipmentItem() { EquipmentItem item; string itemName = ""; int imageNumber = 0; int reinforcementCount = 1; ETierType tierType = ETierType.unique; EEquipmentItemType itemType = EEquipmentItemType.weapon; // default 값은 weapon // 아이템 생성 for (int createCount = 0; createCount < currentChoicedItem.purchaseCount; ++createCount) { itemType = GetRandomEquipmentItem(out itemName, out imageNumber, itemType); Debug.Log("imageNumber : " + imageNumber + ", itemName : " + itemName + ", itemType : " + itemType.ToString()); item = EventManager.MakeEquipmentItem(itemName, tierType, itemType, reinforcementCount, imageNumber); if (NetworkManager.instance != null) { yield return(StartCoroutine(NetworkManager.instance.ISaveEquipmentItemsToServer(item))); } else { Debug.LogWarning("NetworkManager가 없음 서버에 아이템을 저장 할 수 없다."); } PlayerInformation.inventory.equipmentItemDataList.Add(item); } UpdatePopup(); }
/// <summary> /// 리셋한다. /// </summary> public void Reset() { id = -1; name = ""; gold = 0; reinforcementCount = 0; atk = 0; def = 0;; moveSpeed = 0;; attackSpeed = 0;; tier = 0; tendency = 0;; type = EEquipmentItemType.none; imageNumber = -1; }
/// <summary> /// 값을 복사한다. /// </summary> /// <param name="data">복사할 장비 아이템</param> public void CopyData(EquipmentItem data) { id = data.id; name = data.name; gold = data.gold; reinforcementCount = data.reinforcementCount; atk = data.atk; def = data.def; moveSpeed = data.moveSpeed; attackSpeed = data.attackSpeed; tier = data.tier; tendency = data.tendency; type = data.type; imageNumber = data.imageNumber; //Debug.Log("Copied -> id : " + id + ", name : " + name + ", gold : " + gold + ", reinforcementCount : " + reinforcementCount + ", atk : " + atk + ", def : " + def + ", moveSpeed : " + moveSpeed + ", attackSpeed : " + attackSpeed + ", tier : " + tier + ", tendency : " + tendency + ", type : " + type + ", imageNumber : " + imageNumber + ", icon : " + icon); }
/// <summary> /// 장비 아이템을 생성한다. /// </summary> /// <param name="itemName">아이템의 이름</param> /// <param name="tier">아이템의 등급</param> /// <param name="itemType">아이템의 타입</param> /// <param name="reinforcementCount">아이템 강화 횟수(범위는 0~9)</param> /// <param name="imageNumber">아이템 이미지 번호</param> /// <returns>공식에 의해 설정된 아이템</returns> public static EquipmentItem MakeEquipmentItem(string itemName, ETierType tier, EEquipmentItemType itemType, int reinforcementCount, int imageNumber = 0) { reinforcementCount = Mathf.Clamp(reinforcementCount, 0, 9); // 0에서 9까지 강화 횟수 숫자 제한을 둠. EquipmentItem item = new EquipmentItem(); float defaultAttackPower = 30.0f; // 기본 공격력 float defaultDefencePower = 10.0f; // 기본 방어력 /// TODO (장현명) : 무기 강화값을 이용하여 뭔가 해야 함. // 무기 강화 값 float weaponItemReinforcementValue = (int)tier * defaultAttackPower + UnityEngine.Random.Range(0, defaultAttackPower + 1) * reinforcementCount * 0.1f; // 방어구 강화 값 float defenceItemReinforcementValue = (int)tier * defaultDefencePower + UnityEngine.Random.Range(5, defaultDefencePower + 1) * reinforcementCount * 0.1f; // 값 설정 item.name = itemName; item.tier = tier; item.reinforcementCount = reinforcementCount; item.gold = (int)tier * 1000; item.type = itemType; item.imageNumber = imageNumber; switch (itemType) // Item Type에 따라 수치 값을 다르게 넣어준다. { case EEquipmentItemType.helmet: item.def = (int)item.tier * defaultDefencePower + UnityEngine.Random.Range(5, 11) + reinforcementCount; // 방어력 item.atk = defaultAttackPower; item.attackSpeed = 0; item.moveSpeed = 0; item.tendency = ETendency.defensive; // 방어적인 성향 break; case EEquipmentItemType.armor: item.def = (int)item.tier * defaultDefencePower + UnityEngine.Random.Range(5, 11) + reinforcementCount; // 방어력 item.atk = defaultAttackPower; item.attackSpeed = 0; item.moveSpeed = 0; item.tendency = ETendency.defensive; // 방어적인 성향 break; case EEquipmentItemType.shoes: item.def = (int)item.tier * defaultDefencePower + UnityEngine.Random.Range(5, 11) + reinforcementCount; // 방어력 item.atk = defaultAttackPower; item.attackSpeed = 0; item.moveSpeed = 0; // FIXED (장현명) : 움직임 속도를 향상 할 수 있게 해야 함. item.tendency = ETendency.speedy; // 빠른 성향 break; case EEquipmentItemType.weapon: item.def = 10; item.atk = (int)item.tier * defaultAttackPower + UnityEngine.Random.Range(5, 11) + reinforcementCount; // 공격력 item.attackSpeed = 0; item.moveSpeed = 0; item.tendency = ETendency.aggressive; // 공격적인 성향 break; default: Debug.Assert(false, "아이템 타입의 범위를 넘어갔다."); break; } return(item); }