/// <summary> /// 初始化所有船数据 /// </summary> /// <returns></returns> public void InitShipPackage() { PackageProxy m_PackageProxy = Facade.RetrieveProxy(ProxyName.PackageProxy) as PackageProxy; ItemContainer[] m_ShipByType = m_PackageProxy.GetItemList <ItemContainer>(Category.WarehousePackage, Category.Package); m_ShipPackage.Clear(); if (m_ShipByType != null) { foreach (ItemContainer package in m_ShipByType) { if (package.Items != null) { foreach (var item in package.Items.Values) { IShip m_WarShip = WarShipDataFactory.BuildShipData((ItemWarShipVO)item); m_ShipPackage.Add(m_WarShip.GetUID(), m_WarShip); } } } } IShip m_CurWarShip = GetAppointWarShip(); if (!m_ShipPackage.ContainsKey(m_CurWarShip.GetUID())) { m_ShipPackage.Add(m_CurWarShip.GetUID(), m_CurWarShip); } }
/// <summary> /// 获取当前任命出战船 /// </summary> /// <returns></returns> public IShip GetAppointWarShip() { PackageProxy m_PackageProxy = Facade.RetrieveProxy(ProxyName.PackageProxy) as PackageProxy; m_HeroItem = m_PackageProxy.GetHeroItem(); if (m_HeroItem != null && m_HeroItem.Items != null && m_HeroItem.Items.Count > 0) { ItemWarShipVO itemWarShip = null; foreach (ItemBase item in m_HeroItem.Items.Values) { if (item is ItemWarShipVO) { if (m_CurrentWarShip == null || m_CurrentWarShip.GetUID() != item.UID) { if (!m_ShipPackage.TryGetValue(item.UID, out m_CurrentWarShip)) { itemWarShip = item as ItemWarShipVO; m_CurrentWarShip = WarShipDataFactory.BuildShipData(itemWarShip); m_ShipPackage[m_CurrentWarShip.GetUID()] = m_CurrentWarShip; } } return(m_CurrentWarShip); } } } m_CurrentWarShip = null; return(null); }
/// <summary> /// 获取当前出战船 /// </summary> /// <returns></returns> public IShip GetCurrentWarShip(ulong uid) { if (m_ShipItems.Count > 0 && m_ShipItems.ContainsKey(uid)) { Dictionary <ulong, ItemContainer> items = m_ShipItems[uid]; if (m_Ships.Count > 0 && m_Ships.ContainsKey(uid)) { return(m_Ships[uid]); } ItemWarShipVO itemWarShip = null; foreach (ItemBase item in items.Values) { if (item is ItemWarShipVO) { itemWarShip = item as ItemWarShipVO; break; } } if (itemWarShip != null) { IShip currentWarShip = WarShipDataFactory.BuildShipData(itemWarShip); m_Ships.Add(uid, currentWarShip); return(currentWarShip); } } return(null); }
/// <summary> /// 减装备 /// </summary> /// <param name="ship"></param> /// <param name="uid"></param> /// <param name="parentUid"></param> /// <returns></returns> public bool RemoveItemToShip(ulong uid, ulong itemId, ulong parentUid) { IShip ship = null; m_ShipPackage.TryGetValue(uid, out ship); if (ship != null) { m_CurrentWarShip = WarShipDataFactory.RemoveItemToShip(ship, itemId, parentUid); m_ShipPackage[uid] = m_CurrentWarShip; return(true); } return(false); }
/// <summary> /// 加装备 /// </summary> /// <param name="uid"></param> /// <param name="item"></param> /// <returns></returns> public bool AddItemToShip(ulong uid, ItemContainer item) { IShip ship = null; m_ShipPackage.TryGetValue(uid, out ship); if (ship != null) { m_CurrentWarShip = WarShipDataFactory.AddItemToShip(ship, item); m_ShipPackage[uid] = m_CurrentWarShip; return(true); } return(false); }
/// <summary> /// 修改船数据包 /// </summary> /// <param name="item"></param> /// <returns></returns> public void ChangeShipPackage(ulong id) { PackageProxy m_PackageProxy = Facade.RetrieveProxy(ProxyName.PackageProxy) as PackageProxy; ItemWarShipVO itemWarShipVO = m_PackageProxy.GetItem <ItemWarShipVO>(id); IShip m_Ship = null; m_Ship = WarShipDataFactory.BuildShipData(itemWarShipVO); m_ShipPackage.Add(m_Ship.GetUID(), m_Ship); IShip m_CurWarShip = GetAppointWarShip(); if (!m_ShipPackage.ContainsKey(m_CurWarShip.GetUID())) { m_ShipPackage.Add(m_CurWarShip.GetUID(), m_CurWarShip); } }