public void Copy(CanvasCore Core) { this.m_type = Core.m_type; this.IsNewCreate = Core.IsNewCreate; this.m_ID = Core.m_ID; this.m_DataID = Core.m_DataID; }
public CanvasCore(ShipBuildType Type, bool IsNewCreate, int ID, int DataID, Vector2 size) { this.m_type = Type; this.IsNewCreate = IsNewCreate; this.m_ID = ID; this.m_DataID = DataID; }
/// <summary> /// 获取可放置区域 /// </summary> public static List <Int2> GetCanPutArea(ShipBuildType type, bool bDeckRoom) { List <Int2> l = new List <Int2>(); if (m_PutRoom.Count == 0) //一个都未摆设,则所有区域都可以摆设了。 { List <RoomGrid> ll = GetAllRoomGrid(); foreach (RoomGrid g in ll) { l.Add(g.mPosRoomGrid); } } else //根据现有的设置摆设区域。 { if (type == ShipBuildType.Soldier) { List <RoomGrid> lAll = GetAllRoomGrid(); foreach (RoomGrid r in lAll) { if (r.CheckPosition((int)PutPosition.Soldier)) { l.Add(r.mPosRoomGrid); } } //List<RoomGrid>listRoomGrid = RoomMap.GetPutRoomGrid(); } else if (type == ShipBuildType.BuildRoom) { if (bDeckRoom) { foreach (RoomGrid r in m_DeckRoom) { if (r.CheckPosition((int)PutPosition.Floor)) { l.Add(r.mPosRoomGrid); } } } else { List <Int2> listOld = new List <Int2>(); List <Int2> listNew = new List <Int2>(); List <RoomGrid> listNoLinRoomGrid = GetNoLinkRoom(listOld, listNew); List <RoomGrid> listCanPutRoomGrid = new List <RoomGrid>();; int nCount = m_PutRoom.Count; for (int nCnt = 0; nCnt < nCount; nCnt++) { RoomGrid roolGrid = m_PutRoom[nCnt]; if (!listNoLinRoomGrid.Contains(roolGrid) && roolGrid.mPosRoomGrid.Layer < 4) { listCanPutRoomGrid.Add(roolGrid); } } NDLink.JoinLink(new List <Int2>(), new List <Int2>(), listCanPutRoomGrid, m_RealMapSize); l.AddRange(NDLink.GetCanPutArea()); } } } return(l); }
private canvasedit.ShipPutInfo FillShipPutInfo(ShipPutInfo item, ShipBuildType Type) { canvasedit.ShipPutInfo info = new canvasedit.ShipPutInfo(); info.id = item.id; if (info.id < 0) { info.id = 0; } info.type = item.type; info.objid = item.objid; if (Type == ShipBuildType.BuildStair) { info.objid = 1201; info.type = 3; } info.cx = item.cxMapGrid; info.cy = item.cyMapGrid; if (Type == ShipBuildType.BuildRoom && item.IsTransgateRoom()) { item.IsTransgateRoom(); info.shipput_data0 = item.shipput_data0; info.shipput_data1 = item.shipput_data1; } else { info.shipput_data0 = item.shipput_data0; info.shipput_data1 = item.shipput_data1; } return(info); }
/// <summary> /// 获取船上数据 /// </summary> public List <ShipPutInfo> GetShipBuildInfo(ShipBuildType type) { List <ShipPutInfo> l = new List <ShipPutInfo>(); if (type == ShipBuildType.BuildRoom || type == ShipBuildType.All) { if (m_RoomBuildings.Count == 0) //当没有金库时,添加一个 { BuildInfo info = BuildDC.SearchBuilding(1300); if (info != null) { ShipPutInfo Build = new ShipPutInfo(ShipPutInfo.GetNewShipPutId(), info); Build.cyMapGrid = 0; Build.cxMapGrid = 24; AddShipBuildInfo(Build, ShipBuildType.BuildRoom); } } l.AddRange(m_RoomBuildings); } if (type == ShipBuildType.Soldier || type == ShipBuildType.All) { l.AddRange(m_Soldiers); } if (type == ShipBuildType.BuildStair || type == ShipBuildType.All) { l.AddRange(m_StairBuildings); } return(l); }
/// <summary> /// 移除建筑物,如果是新增的可以直接移除,否则需等服务端通过才移除 /// </summary> public void RemoveShipBuildInfo(ShipPutInfo Info, ShipBuildType Type) { if (Info == null) { return; } if (Type == ShipBuildType.Soldier) { if (m_Soldiers.Contains(Info) == true) { m_Soldiers.Remove(Info); } } else if (Type == ShipBuildType.BuildRoom) { if (m_RoomBuildings.Contains(Info) == true) { m_RoomBuildings.Remove(Info); } } else if (Type == ShipBuildType.BuildStair) { if (m_StairBuildings.Contains(Info) == true) { m_StairBuildings.Remove(Info); } } }
public CanvasCore() { m_type = ShipBuildType.BuildRoom; IsNewCreate = false; m_ID = 0; m_DataID = 0; }
/// <summary> /// 0 船只编辑 1 船只编辑查看 2 金银岛 3战斗选兵 /// </summary> public void SetCanvasItem(SoldierInfo Info, int type = 0, bool IsBattle = true) { m_bIsBattle = IsBattle; m_iItemType = type; Soldier = Info; m_ShipBuildType = ShipBuildType.Soldier; SetUI(); }
/// <summary> /// 添加 新建 建筑或炮弹兵 到船上。 /// </summary> public void AddShipBuildInfo(ShipPutInfo Info, ShipBuildType Type) { if (Info == null) { return; } if (Type == ShipBuildType.Soldier) { bool b = false; for (int i = 0; i < m_Soldiers.Count; i++) { if (m_Soldiers[i].id == Info.id) { b = true; break; } } if (b == false) { m_Soldiers.Add(Info); } } else if (Type == ShipBuildType.BuildRoom) { bool b = false; for (int i = 0; i < m_RoomBuildings.Count; i++) { if (m_RoomBuildings[i].id == Info.id) { b = true; break; } } if (b == false) { m_RoomBuildings.Add(Info); } } else if (Type == ShipBuildType.BuildStair) { bool b = false; for (int i = 0; i < m_StairBuildings.Count; i++) { if (m_StairBuildings[i].id == Info.id) { b = true; break; } } if (b == false) { m_StairBuildings.Add(Info); } } }
void ClickTrapSoldierBtn() { if (m_bTrap) { m_shipBuildType = ShipBuildType.BuildRoom; } else { m_shipBuildType = ShipBuildType.Soldier; } CreateList(); }
/// <summary> /// 判断是否已经存在了。用于检测有没被创建。 /// </summary> /// <param name="soldierID"></param> /// <returns></returns> public static bool CheckHaveExist(ShipBuildType type, int ID) { for (int i = 0; i < m_Build.Count; i++) { if (m_Build[i].MyCore().m_DataID == ID && m_Build[i].MyCore().m_type == type) { return(true); //Debug.Log("xxxxxxxxxxxx"); } } return(false); }
/// <summary> /// 填充建造类型数据 /// </summary> public void FillData(ShipBuildType type) { m_shipBuildType = type; switch (type) { case ShipBuildType.BuildRoom: warehouseBuildList = BuildDC.GetBuildingList(AttributeType.ALL); break; case ShipBuildType.Soldier: SoldierDC.GetSoldiers(ref soldierList, CombatLoactionType.ALL); break; default: break; } }
/// <summary> /// 获取具体对象的局部坐标 /// </summary> public static Vector3 GetShipBuildLocalPos(Int2 posMapGrid, ShipBuildType Type) { RoomGrid r = RoomMap.FindRoomGrid(posMapGrid, XYSYS.MapGrid); if (r != null) { Vector3 v = r.LocalPos; if (Type == ShipBuildType.Soldier) { v.x += 3 * MapGrid.m_width; } return(v); } else { return(Vector3.zero); } }
public static TouchMove GetTouchMoveByRoomGrid(RoomGrid rGrid, ShipBuildType type) { if (null == rGrid) { return(null); } List <CanvasCore> childCores = rGrid.GetOtherBuild(); for (int i = 0; i < childCores.Count; i++) { CanvasCore curCore = childCores[i]; if (curCore.m_type == type) { return(PutCanvasM.GetTouchMoveByCore(curCore)); } } return(null); }
public override void WndStart() { base.WndStart(); MyHead.BtnShow.OnClickEventHandler += BtnShow_OnClickEventHandler; MyHead.BtnHide.OnClickEventHandler += BtnHide_OnClickEventHandler; MyHead.BtnBlackScience.OnClickEventHandler += BtnBlackScience_OnClickEventHandler; MyHead.BtnDeleteAll.OnClickEventHandler += BtnDeleteAll_OnClickEventHandler; m_shipBuildType = ShipBuildType.BuildRoom; RefreshTrapUI(AttributeType.ALL); RefreshSoldierUI(CombatLoactionType.ALL); RefreshBlackScienceUI(); CheckCaptionCount(); EventDelegate.Add(MyHead.TogTrap.onChange, TogTrap_OnClickEventHandler); EventDelegate.Add(MyHead.TogSoldier.onChange, TogSoldier_OnClickEventHandler); }
/// <summary> /// 根据小格子获取房间的CanvasCore /// </summary> /// <param name="posMapGrid"></param> /// <returns></returns> public static CanvasCore FindCanvasCore(Int2 posMapGrid, ShipBuildType typeBuld) { RoomGrid roomGrid = FindRoomGrid(posMapGrid, XYSYS.MapGrid); if (roomGrid != null) { if (typeBuld == ShipBuildType.BuildRoom) { return(roomGrid.GetBuildRoom()); } List <CanvasCore> roomChildList = roomGrid.GetOtherBuild(); for (int i = 0; i < roomChildList.Count; i++) { if (roomChildList[i].m_type == typeBuld) { return(roomChildList[i]); } } } return(null); }
public void SetCanvasItem(BuildInfo Info, bool IsBattle = true) { m_bIsBattle = IsBattle; if (m_WareHouse.Count == 0) { m_WareHouse.Add(Info); buildType = Info.BuildType; level = Info.Level; star = Info.StarLevel; quality = Info.Quality; } else { if (Info.EqualOf(buildType, level, star, quality) == true) { m_WareHouse.Add(Info); } } m_ShipBuildType = ShipBuildType.BuildRoom; SetUI(); }
/// <summary> /// 设置可放置区域颜色 /// </summary> public static void SetCanPutArea(ShipBuildType type, bool bDeckRoom) { List <Int2> l = RoomMap.GetCanPutArea(type, bDeckRoom); SetGridsBgStates(l, CanvasUnitState.CanPut, true); }
/// <summary> /// 修改设置TouchMoveData 的核心数据 /// </summary> /// <param name="Type">类型,炮弹兵或建筑</param> /// <param name="Style">所处位置,船上或环境</param> /// <param name="ID">ID唯一标识</param> /// <returns>变更时设置</returns> public void SetTouchMoveData(ShipBuildType Type, bool IsNewCreate, int ID) { m_Core.m_type = Type; m_Core.IsNewCreate = IsNewCreate; m_Core.m_ID = ID; }
void OnMouseDown() { if (PutCanvasM.CanOperate == false) { return; } RaycastHit hit; if (WndManager.IsHitNGUI(out hit))//当点击到UI时不做处理 { return; } if (Input.touchCount >= 2) { return; } m_bMouseDown = true; m_bLongTouch = false; m_bTouchMoveChange = true; m_fMouseDownTime = Time.time; m_vtotalmouseDelta = Vector2.zero; m_vlastFirstTouch = GetTouchPos(0); m_isDrag = false; if (SystemInfo.deviceType == DeviceType.Desktop) { m_v3MouseTouchDown = Input.mousePosition; } else { m_v3MouseTouchDown = Input.GetTouch(0).position; } //获取按下时画布格子 Vector3 m_v3TouchScreenPos = new Vector3(m_v3MouseTouchDown.x, m_v3MouseTouchDown.y, -Camera.main.transform.position.z); Vector3 m_v3TouchWorldPos = Camera.main.ScreenToWorldPoint(m_v3TouchScreenPos); Vector3 v3dLocalPos = BattleEnvironmentM.World2LocalPos(m_v3TouchWorldPos); m_roomGridTouchDown = RoomMap.FindRoomGrid(v3dLocalPos); if (m_roomGridTouchDown == null) { return; } m_curClickType = RoomMap.PickupShipBuildType(m_roomGridTouchDown, v3dLocalPos, m_roomGridTouchDown.mPosRoomGrid.Layer); CanvasCore buildRoomCoreTouchDown = m_roomGridTouchDown.GetBuildRoom(); if (TouchMove.g_bSetParaing == true) { return; } TouchMove curTouchMove = TouchMoveManager.GetCurTouchMove(); if (null != curTouchMove) { //如果当前选中的是房间,新选中的不管是什么都不做变更 //如果当前选中的不是房间,但是新选中的对象和当前选中的一样则也不变量。 if (curTouchMove.IsContainsRoomGrid(m_roomGridTouchDown)) { TouchMove selNewTouchMov = PutCanvasM.GetTouchMoveByRoomGrid(m_roomGridTouchDown, m_curClickType); if (curTouchMove.MyCore().m_type == ShipBuildType.BuildRoom || selNewTouchMov != null && selNewTouchMov == curTouchMove) { curTouchMove.PlayEditSelectAnimationEnd(); //恢复上个房间内陷阱/角色 动画 curTouchMove.OnMouseDown(); m_bTouchMoveChange = false; } } PutCanvasM.ClearNoLinkList(); } else { //判断选中物件是否在上次保存失败的物件上,如果是则直接选择 bool bInNoLinkList = false; if (buildRoomCoreTouchDown != null) { TouchMove selNewTouchMov = PutCanvasM.GetTouchMoveByCore(buildRoomCoreTouchDown); if (null == selNewTouchMov) { List <CanvasCore> childCores = m_roomGridTouchDown.GetOtherBuild(); for (int i = 0; i < childCores.Count; i++) { selNewTouchMov = PutCanvasM.GetTouchMoveByCore(childCores[i]); break; } } if (null != selNewTouchMov && PutCanvasM.NoLinkListContain(selNewTouchMov.MyCore())) { PutCanvasM.ClearNoLinkList(); TouchMoveManager.SetCurTouchMove(selNewTouchMov); selNewTouchMov.PlayEditSelectAnimationEnd(); //恢复上个房间内陷阱/角色 动画 selNewTouchMov.OnMouseDown(); m_bTouchMoveChange = false; bInNoLinkList = true; } } if (bInNoLinkList == false) { PutCanvasM.ClearNoLinkList(); } } }