using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
|
namespace Snxxz.UI
|
{
|
|
public class EquipSet
|
{
|
public readonly int level;
|
public readonly int realm;
|
public bool unLocked { get { return PlayerDatas.Instance.baseData.realmLevel >= realm; } }
|
public readonly LogicBool selected = new LogicBool();
|
public int fightPower { get; set; }
|
public readonly Redpoint redpoint;
|
|
Dictionary<int, EquipSlot> equipSlots = new Dictionary<int, EquipSlot>();
|
|
PackModel packModel { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
|
public EquipSet(int level, int realm)
|
{
|
this.level = level;
|
this.realm = realm;
|
|
for (var i = 1; i <= 12; i++)
|
{
|
equipSlots[i] = new EquipSlot(new Int2(this.level, i));
|
}
|
|
redpoint = new Redpoint(200100 + this.level);
|
}
|
|
public void UpdateEquipSlot(int place, string equipGuid)
|
{
|
if (equipSlots.ContainsKey(place))
|
{
|
equipSlots[place].equip.value = equipGuid;
|
}
|
}
|
|
public bool IsSlotUnLocked(int place)
|
{
|
if (!equipSlots.ContainsKey(place))
|
{
|
return false;
|
}
|
|
return equipSlots[place].unLocked;
|
}
|
|
public int GetSlotUnLockRealmLevel(int place)
|
{
|
if (!equipSlots.ContainsKey(place))
|
{
|
return 0;
|
}
|
|
return equipSlots[place].GetUnLockRealmLevel();
|
}
|
|
public EquipSlot GetEquipSlot(int place)
|
{
|
if (!equipSlots.ContainsKey(place))
|
{
|
return null;
|
}
|
|
return equipSlots[place];
|
}
|
|
public string GetEquip(int place)
|
{
|
if (!equipSlots.ContainsKey(place))
|
{
|
return null;
|
}
|
|
return equipSlots[place].equip.value;
|
}
|
|
public EquipAppearance GetAppearance()
|
{
|
var appearance = new EquipAppearance();
|
var clothes = equipSlots[(int)RoleEquipType.Clothes].equip.value;
|
if (string.IsNullOrEmpty(clothes))
|
{
|
appearance.clothes = 0;
|
}
|
else
|
{
|
var equip = packModel.GetItemByGuid(clothes);
|
appearance.clothes = equip == null ? 0 : equip.itemId;
|
}
|
|
var weapon = equipSlots[(int)RoleEquipType.Weapon].equip.value;
|
if (string.IsNullOrEmpty(weapon))
|
{
|
appearance.weapon = 0;
|
}
|
else
|
{
|
var equip = packModel.GetItemByGuid(weapon);
|
appearance.weapon = equip == null ? 0 : equip.itemId;
|
}
|
|
var secondary = equipSlots[(int)RoleEquipType.Weapon2].equip.value;
|
if (string.IsNullOrEmpty(secondary))
|
{
|
appearance.secondary = 0;
|
}
|
else
|
{
|
var equip = packModel.GetItemByGuid(secondary);
|
appearance.secondary = equip == null ? 0 : equip.itemId;
|
}
|
|
return appearance;
|
}
|
|
public int CompareToCurrent(string equipGuid)
|
{
|
var item = packModel.GetItemByGuid(equipGuid);
|
if (item == null)
|
{
|
return 0;
|
}
|
|
var place = item.config.EquipPlace;
|
if (!equipSlots.ContainsKey(place))
|
{
|
return 0;
|
}
|
|
var slot = equipSlots[place];
|
if (!slot.unLocked)
|
{
|
return 0;
|
}
|
|
var currentEquip = packModel.GetItemByGuid(slot.equip.value);
|
if (currentEquip == null)
|
{
|
return 1;
|
}
|
|
return item.score.CompareTo(currentEquip.score);
|
}
|
|
public static Int2 ServerPlaceToClientPlace(int serverPlace)
|
{
|
var config = EquipPlaceMapConfig.Get(serverPlace);
|
if (config != null)
|
{
|
return new Int2(config.LV, config.EquipPlace);
|
}
|
else
|
{
|
return Int2.zero;
|
}
|
}
|
|
public static int ClientPlaceToServerPlace(Int2 equipPosition)
|
{
|
return EquipPlaceMapConfig.GetServerPlace(equipPosition.x, equipPosition.y);
|
}
|
|
}
|
|
public struct EquipAppearance
|
{
|
public int clothes;
|
public int weapon;
|
public int secondary;
|
public int wings;
|
public int mount;
|
public int guard1;
|
public int guard2;
|
public int fashionClothes;
|
public int fashionWeapon;
|
public int fashionSecondary;
|
public bool isSuit;
|
}
|
|
}
|