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; }
/// <summary> /// 加载船上楼梯 /// </summary> public static void LoadShipPutStairBuild(int ID, int DataID, BuildInfo Info) { if (Info == null) { return; } Transform parentT = GetLifeMBornNode(true); if (parentT == null) { return; } Int2 BornPos = new Int2(Info.m_cx, Info.m_cy); Vector3 local = RoomMap.GetShipBuildLocalPos(BornPos, ShipBuildType.BuildStair); Vector3 world = Local2WorldPos(local); Building buildlife = LifeFactory.CreateBuilding(Info, DataID, parentT, world, LifeEnvironment.Edit); TouchMove touch = buildlife.m_thisT.GetChild(0).gameObject.AddComponent <TouchMove>(); Vector2 size = new Vector2(Info.m_Shape.width, Info.m_Shape.height); CanvasCore Core = new CanvasCore(ShipBuildType.BuildStair, false, ID, DataID, size); touch.InitTouchMoveCore(Core, BornPos, buildlife); AddBuildingEditPlugin(touch); TouchMoveManager.JointShipBuild(touch); }
/// <summary> /// 加载船上炮弹兵 /// </summary> public static void LoadShipPutSoldier(int ID, int DataID, SoldierInfo Info) { if (Info == null) { return; } Role r = new Role(); r.CreateSkin(GetLifeMBornNode(true), Info.m_modeltype, Info.m_name, AnimatorState.Stand, true); //IGameRole i = GameRoleFactory.Create(GetLifeMBornNode(true), Info.m_modeltype, Info.m_name, AnimatorState.Stand); GameObject go = r.RoleSkinCom.tRoot.gameObject; go.name = Info.m_name; Int2 BornPos = new Int2(Info.CX, Info.CY); go.transform.localPosition = RoomMap.GetShipBuildLocalPos(BornPos, ShipBuildType.Soldier); go.transform.localPosition = U3DUtil.SetZ(go.transform.localPosition, -2.0f); Transform tRole = go.transform.GetChild(0); TouchMove touch = tRole.gameObject.AddComponent <TouchMove>(); CanvasCore Core = new CanvasCore(ShipBuildType.Soldier, false, ID, DataID, Vector2.zero); touch.InitTouchMoveCore(Core, BornPos, null); AddBuildingEditPlugin(touch); if (Info.SoldierTypeID == 100003) //隐藏蹦蹦 //RolePropertyM rpm = i.GetBodyComponent<RolePropertyM>(); { r.RoleSkinCom.ShowLeftHand(false); } TouchMoveManager.JointShipBuild(touch); }
/// <summary> /// 设置参数,第一个参数为关联的建筑Core /// </summary> public void SetBuildPara(CanvasCore Core, int data0, int data1) { ShipPlan P = ShipPlanDC.GetCurShipPlan(); if (P == null) { return; } shipput_data0 = data0; shipput_data1 = data1; if (IsTransgateRoom() == true) { ShipPutInfo Info = P.GetShipBuildInfo(Core); if (Info != null) { OffX = data0 - Info.cxMapGrid; OffY = data1 - Info.cyMapGrid; LinkRoomID = Core.m_ID; } else { LinkRoomID = -1; OffX = 0; OffY = 0; } } }
/// <summary> /// 获取未连接的兵 /// </summary> public static List <CanvasCore> GetUnLinkSoldiers() { List <CanvasCore> lNoLinkCore = new List <CanvasCore>(); List <Int2> lGold = new List <Int2>(); int nRoomCount = m_Room.Count; int nRoomCnt = 0; for (nRoomCnt = 0; nRoomCnt < nRoomCount; nRoomCnt++) { RoomGrid rRoomGrid = m_Room[nRoomCnt]; if (rRoomGrid != null && !CheckDeckRoom(rRoomGrid)) { CanvasCore cavasCore = rRoomGrid.GetBuildRoom(); if (cavasCore != null && cavasCore.m_ID == RoomGrid.EMPTYGRIDID) { List <CanvasCore> listOther = rRoomGrid.GetOtherBuild(); int nCanvasCoreCount = listOther.Count; int nCanvasCoreCnt = 0; for (nCanvasCoreCnt = 0; nCanvasCoreCnt < nCanvasCoreCount; nCanvasCoreCnt++) { CanvasCore coreOther = listOther[nCanvasCoreCnt]; if (coreOther != null && coreOther.m_type == ShipBuildType.Soldier) { lNoLinkCore.Add(coreOther); } } } } } return(lNoLinkCore); }
/// <summary> /// 获取移动到目标位置所占领的房间 /// </summary> /// <param name="TargetPos">目的位置</param> public static List <RoomGrid> GetMovetoRoomGrid(CanvasCore core, Int2 TargetPos) { if (core.Data != null) { List <RoomGrid> l = new List <RoomGrid>(); ShapeType shape = core.GetPutRoomShape(); if (shape != null) { Dictionary <Int2, ShapeValue> lshape = shape.GetShapeData(TargetPos); foreach (Int2 Pos in lshape.Keys) { RoomGrid r = RoomMap.FindRoomGrid(Pos, XYSYS.RoomGrid); if (r != null) { l.Add(r); } } } else { RoomGrid r = RoomMap.FindRoomGrid(TargetPos, XYSYS.MapGrid); if (r != null) { l.Add(r); } } return(l); } return(new List <RoomGrid>()); }
public void MoveWithRoom(CanvasCore roomCore) { if (roomCore.m_type != ShipBuildType.BuildRoom) { return; } TouchMove tmParent = PutCanvasM.GetTouchMoveByCore(roomCore); List <CanvasCore> childrenCore = PutCanvasM.GetChildByCore(roomCore); if (childrenCore.Count == 0 || roomCore.IsDeckRoom) { return; } Transform roomShellT = PutCanvasM.GetTransformByCore(roomCore).parent; foreach (var childCore in childrenCore) { TouchMove tm = PutCanvasM.GetTouchMoveByCore(childCore); if (tm != null) { tm.m_OffsetGrid = tmParent.m_orgPosMapGrid - tm.m_orgPosMapGrid; } if (PutCanvasM.GetTransformByCore(childCore) != null) { Transform childShellT = PutCanvasM.GetTransformByCore(childCore).parent; childShellT.parent = roomShellT; } } }
/// <summary> /// 删除本地对象。 /// </summary> public static void DeleteShipBuild(CanvasCore Core) { if (Core == null) { return; } List <CanvasCore> l = PutCanvasM.GetChildByCore(Core); foreach (CanvasCore c in l) { for (int i = 0; i < m_Build.Count; i++) { if (m_Build[i].MyCore().Equal(c) == true) { m_Build.RemoveAt(i); } } } for (int i = 0; i < m_Build.Count; i++) { if (m_Build[i].MyCore().Equal(Core) == true) { m_Build.RemoveAt(i); } } }
/// <summary> /// 设置参数(如传送门的传送点) /// </summary> void SetPara() { if (RoomMap.CheckRoomGridInBoat(m_roomGridTouchDown)) { TouchMove tm = TouchMoveManager.GetCurTouchMove(); if (tm) { Int2 paramPos = m_roomGridTouchDown.SoldierPos; CanvasCore buildRoomCoreTouchDown = m_roomGridTouchDown.GetBuildRoom(); tm.SetBuildParam(buildRoomCoreTouchDown, paramPos.Unit, paramPos.Layer); tm.SetBuildParaOver(); //传送门 这里没获取到 BuildProperty lifeobj = tm.GetComponent <BuildProperty>(); if (lifeobj != null && lifeobj.GetModeType() == 1605) { Building1605 b1605 = lifeobj.GetLife() as Building1605; if (b1605 != null) { b1605.SetTransGate(paramPos); } } } } else { NGUIUtil.ShowTipWndByKey("88800013"); } m_roomGridTouchDown = null; }
/// <summary> /// 设置占有空间 /// </summary> /// <param name="position">占有空间</param> public void AddPosition(CanvasCore Core, int position) { int value = (int)PutPosition.All; position &= value; m_Position |= position; m_Child.Add(new CanvasCore(Core)); //Debug.Log("AddPosition:" + m_Position + "," + Pos); }
/// <summary> /// 设置移动到船上 /// </summary> public static void MoveToShip(CanvasCore Core) { TouchMove tm = GetShipBuild(Core); if (tm != null) { tm.MyCore().IsNewCreate = false; } }
public static TouchMove GetTouchMoveByCore(CanvasCore core) { TouchMove tm = TouchMoveManager.GetShipBuild(core); if (tm != null) { return(tm); } return(null); }
static void BindStair(Int2 grid) { CanvasCore core = RoomMap.FindCanvasCore(grid, ShipBuildType.BuildRoom); if (core != null) { TouchMove tm = PutCanvasM.GetTouchMoveByCore(core); tm.MoveWithRoom(core); } }
//只用于炮弹兵和楼梯 public static void AddMapPosition(CanvasCore Core, Dictionary <RoomGrid, int> l) { foreach (RoomGrid Grid in l.Keys) { if (Grid != null) { Grid.AddPosition(Core, l[Grid]); } } }
/// <summary> /// 初始化TouchMoveData 的核心数据 /// </summary> public void InitTouchMoveCore(CanvasCore Core, Int2 BornPos, Life life) { m_tTarget = transform.parent; m_Core.Copy(Core); m_orgPosMapGrid = m_posMapGrid = m_BornPos = BornPos; if (life != null && life is Building) { m_Building = life as Building; } }
/// <summary> /// 获取占领的房间位置 /// </summary> public static Dictionary <RoomGrid, int> GetPutRoomGridPosition(CanvasCore core) { Dictionary <RoomGrid, int> l = new Dictionary <RoomGrid, int>(); if (core.Data != null && core.m_type != ShipBuildType.BuildRoom) { return(RoomMap.GetMovetoRoomGridPosition(core, new Int2(core.Data.cxMapGrid, core.Data.cyMapGrid))); } return(l); }
/// <summary> /// 加入一个房间。从仓库中加载。或加载方案 /// </summary> /// <param name="Core">核心结构</param> /// <param name="TargetPos">格子坐标</param> public static void AddNewCore(CanvasCore Core, Int2 TargetPos) { if (Core == null) { return; } ShipPlan P = ShipPlanDC.GetCurShipPlan(); if (P == null) { return; } ShipPutInfo Info = P.GetShipBuildInfo(Core); if (Info == null) { return; } if (Core.IsNewCreate) { Info.SetBuildPostion(TargetPos); P.AddShipBuildInfo(Info, Core.m_type); TouchMoveManager.MoveToShip(Core); Core.IsNewCreate = false; } // if (Core.m_type == ShipBuildType.BuildRoom) { if (Core.IsDeckRoom == false) { ShapeType Shape = Info.GetPutRoomShape(); if (Shape == null) { return; } RoomMap.OpenCanvans(Shape.GetShapeData(new Int2(Info.cxMapGrid, Info.cyMapGrid)), Core.m_ID); //设置甲板区域 RoomMap.UpdateDeckRoomGrid(); //更新金库房间 if (Info.IsGoldBuild() == true) { RoomMap.UpdateGoldRoomGrid(Core.GetPutRoomGridPos()); } } else { RoomMap.AddDeckBuild(Core.m_ID, Core.GetPutRoomGridPos()); } } else { RoomMap.AddMapPosition(Core, RoomMap.GetPutRoomGridPosition(Core)); } }
/// <summary> /// 新增士兵 /// </summary> public static void CreateSoldierFromWarehouse(int soldierId) { SoldierInfo infoSoldier = SoldierDC.GetSoldiers(soldierId); if (infoSoldier == null) { return; } CanvasCore Core = new CanvasCore(ShipBuildType.Soldier, true, ShipPutInfo.GetNewShipPutId(), infoSoldier.ID, Vector2.zero); Int2 BornPos = new Int2(0, 0); bool isCanPut = PutCanvasM.GetBornPos(Core, ref BornPos); if (isCanPut == false) { NGUIUtil.ShowTipWndByKey("88800007", 1.0f); return; } Transform t_start = GetLifeMBornNode(true); Role r = new Role(); r.CreateSkin(t_start, infoSoldier.m_modeltype, infoSoldier.m_name, AnimatorState.Stand, true); //IGameRole i = GameRoleFactory.Create(t_start, infoSoldier.m_modeltype, infoSoldier.m_name, AnimatorState.Stand); GameObject go = r.RoleSkinCom.tRoot.gameObject;; go.name = infoSoldier.m_name; Vector3 posMy = t_start.position; Vector3 screenSpace = Camera.main.WorldToScreenPoint(posMy); Vector3 pos = new Vector3(Screen.width / 2, Screen.height / 1.5f); Vector3 posTempmouse = Camera.main.ScreenToWorldPoint(new Vector3(pos.x, pos.y, screenSpace.z)); posTempmouse = U3DUtil.SetZ(posTempmouse, 0f); go.transform.localPosition = Vector3.zero; Transform tRole = go.transform.GetChild(0); TouchMove touch = tRole.gameObject.AddComponent <TouchMove>(); tRole.gameObject.transform.parent.localPosition = RoomMap.GetShipBuildLocalPos(BornPos, ShipBuildType.Soldier); touch.InitTouchMoveCore(Core, BornPos, null); AddBuildingEditPlugin(touch); if (infoSoldier.SoldierTypeID == 100003) //隐藏蹦蹦 //RolePropertyM rpm = i.GetBodyComponent<RolePropertyM>(); { r.RoleSkinCom.ShowLeftHand(false); } TouchMoveManager.JointShipBuild(touch); TouchMoveManager.SetCurTouchMove(touch); touch.WareHouse2Ship(BornPos); }
/// <summary> /// 获取已经占领的房间 /// </summary> public static List <RoomGrid> GetPutRoomGrid(CanvasCore core) { if (core.Data != null) { return(RoomMap.GetMovetoRoomGrid(core, new Int2(core.Data.cxMapGrid, core.Data.cyMapGrid))); } /// <summary> /// 获取占领的房间 /// </summary> return(new List <RoomGrid>()); }
public static Transform GetTransformByCore(CanvasCore core) { Transform t = null; TouchMove tm = TouchMoveManager.GetShipBuild(core); if (tm != null) { return(tm.gameObject.transform); } return(t); }
public static bool NoLinkListContain(CanvasCore coreTouchDown) { if (PutCanvasM.SaveSuc) { return(false); } bool bresult = false; if (null != s_listNoLinkPutRoomcores) { int nCoreCount = s_listNoLinkPutRoomcores.Count; int nCoreCnt = 10; for (nCoreCnt = 0; nCoreCnt < nCoreCount; nCoreCnt++) { CanvasCore core = s_listNoLinkPutRoomcores[nCoreCnt]; if (core.m_ID == coreTouchDown.m_ID) { bresult = true; } PutCanvasM.SaveSuc = false; } } if (null != s_listNoLinkPutDeckRoomcores) { int nCoreCount = s_listNoLinkPutDeckRoomcores.Count; int nCoreCnt = 10; for (nCoreCnt = 0; nCoreCnt < nCoreCount; nCoreCnt++) { CanvasCore core = s_listNoLinkPutDeckRoomcores[nCoreCnt]; if (core.m_ID == coreTouchDown.m_ID) { bresult = true; } PutCanvasM.SaveSuc = false; } } if (null != s_listNoLinkSolders) { int nCoreCount = s_listNoLinkSolders.Count; int nCoreCnt = 10; for (nCoreCnt = 0; nCoreCnt < nCoreCount; nCoreCnt++) { CanvasCore core = s_listNoLinkSolders[nCoreCnt]; if (core.m_ID == coreTouchDown.m_ID) { bresult = true; } PutCanvasM.SaveSuc = false; } } return(bresult); }
public bool Equal(CanvasCore Core) { if (m_ID == Core.m_ID && IsNewCreate == Core.IsNewCreate && m_type == Core.m_type) { return(true); } else { return(false); } }
/// <summary> /// 移除一个房间 /// </summary> public static void RemoveBuildRoom(CanvasCore Core) { if (Core == null) { return; } ShipPlan P = ShipPlanDC.GetCurShipPlan(); if (P == null) { return; } ShipPutInfo Info = P.GetShipBuildInfo(Core); if (Info == null) { return; } if (Core.m_type == ShipBuildType.BuildRoom) { if (Core.IsDeckRoom == false) { if (Info.GetPutRoomShape() != null) { List <CanvasCore> l = PutCanvasM.GetChildByCore(Core); foreach (CanvasCore c in l) { ShipPutInfo II = P.GetShipBuildInfo(c); if (II != null) { P.RemoveShipBuildInfo(II, c.m_type); } } RoomMap.CloseCanvans(Core.GetPutRoomGridPos()); //设置甲板区域 RoomMap.UpdateDeckRoomGrid(); } } else { List <Int2> l = Core.GetPutRoomGridPos(); RoomMap.RemoveDeckBuild(l); } } else { RoomMap.RemoveMapPosition(Core, RoomMap.GetPutRoomGridPosition(Core)); } P.RemoveShipBuildInfo(Info, Core.m_type); }
/// <summary> /// 获取指定对象。 /// </summary> public static TouchMove GetShipBuild(CanvasCore Core) { if (Core == null) { return(null); } for (int i = 0; i < m_Build.Count; i++) { if (m_Build[i].MyCore().Equal(Core) == true) { return(m_Build[i]); } } return(null); }
/// <summary> /// 检查是否已建 /// </summary> public static bool CheckHaveBuild(CanvasCore Core) { if (Core == null) { return(false); } for (int i = 0; i < m_Build.Count; i++) { if (m_Build[i].MyCore().Equal(Core) == true) { return(true); } } return(false); }
/// <summary> /// 移除占有空间 /// </summary> /// <param name="position">占有空间</param> public void RemovePosition(CanvasCore Core, int position) { int value = (int)PutPosition.All; position &= value; m_Position &= ~position; m_Position &= value; //Debug.Log("RemovePosition:" + m_Position + "," + Pos); foreach (CanvasCore c in m_Child) { if (c.m_ID == Core.m_ID && c.m_type == Core.m_type) { m_Child.Remove(c); return; } } }
/// <summary> /// 删除房间或保存时修正传送门传送点 /// </summary> public static void DoTransgatePoint() { //获取所有传送门 foreach (var canvas in m_Build) { CanvasCore core = canvas.MyCore(); if (core.Data.IsTransgateRoom()) { Int2 transgateSendGrid = new Int2(core.Data.shipput_data0, core.Data.shipput_data1); transgateSendGrid.Unit -= 4; if (CheckTransgatePoint(transgateSendGrid) == false) { core.Data.shipput_data0 = core.Data.cxMapGrid + 4; core.Data.shipput_data1 = core.Data.cyMapGrid; } } } }
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); }
/// <summary> /// 创建楼梯 /// </summary> /// <param name="Core"></param> public static void CreateStair(CanvasCore Core) { ShipPlan P = ShipPlanDC.GetCurShipPlan(); if (P == null) { return; } if (Core.m_type != ShipBuildType.BuildRoom && Core.IsDeckRoom) { return; } //只有房间变化楼梯才重新创建 List <Int2> points = RoomMap.GetStairCreatePoint(); if (points.Count > 0) { foreach (var grid in points) { ShipPutInfo Info = new ShipPutInfo(); Info.id = ShipPutInfo.GetNewShipPutId(); Info.objid = 1201; Info.type = 3; Info.cxMapGrid = grid.Unit; Info.cyMapGrid = grid.Layer; Info.shipput_data0 = 0; Info.shipput_data1 = 0; P.AddShipBuildInfo(Info, ShipBuildType.BuildStair); BuildInfo stair = buildingM.GetStartBuildInfo(1201); ///// 临时修改,楼梯位置不正确的问题 //stair.m_type = 1201; stair.m_cx = grid.Unit; stair.m_cy = grid.Layer; stair.m_ShipPutdata0 = 0; stair.m_ShipPutdata1 = 0; ///end if (stair != null) { BattleEnvironmentM.LoadShipPutStairBuild(Info.id, Info.objid, stair); } } } RoomMap.RemoveExcessStair(); }
public static void ClearNoLinkList() { if (PutCanvasM.SaveSuc) { return; } PutCanvasM.SaveSuc = true; if (null != s_listNoLinkPutRoomcores) { int nCoreCount = s_listNoLinkPutRoomcores.Count; int nCoreCnt = 10; for (nCoreCnt = 0; nCoreCnt < nCoreCount; nCoreCnt++) { CanvasCore core = s_listNoLinkPutRoomcores[nCoreCnt]; PutCanvasM.GetTouchMoveByCore(core).UnLoadEditEffect(); } s_listNoLinkPutRoomcores.Clear(); } if (null != s_listNoLinkPutDeckRoomcores) { int nCoreCount = s_listNoLinkPutDeckRoomcores.Count; int nCoreCnt = 10; for (nCoreCnt = 0; nCoreCnt < nCoreCount; nCoreCnt++) { CanvasCore core = s_listNoLinkPutDeckRoomcores[nCoreCnt]; PutCanvasM.GetTouchMoveByCore(core).UnLoadEditEffect(); } s_listNoLinkPutRoomcores.Clear(); } if (null != s_listNoLinkSolders) { int nCoreCount = s_listNoLinkSolders.Count; int nCoreCnt = 10; for (nCoreCnt = 0; nCoreCnt < nCoreCount; nCoreCnt++) { CanvasCore core = s_listNoLinkSolders[nCoreCnt]; PutCanvasM.GetTouchMoveByCore(core).UnLoadEditEffect(); } s_listNoLinkSolders.Clear(); } return; }