Пример #1
0
    void BtnSetTransGate_OnClickEventHandler(UIButton sender)
    {
        SetBuildParaStart();
        List <CanvasCore> childrenCore = PutCanvasM.GetChildByCore(m_Core);

        if (childrenCore.Count == 0)
        {
#if UNITY_EDITOR_LOG
            NGUIUtil.DebugLog("房间内未检测到传送门,请调查!!!");
#endif
            return;
        }
        ShipPlan P = ShipPlanDC.GetCurShipPlan();
        if (P == null)
        {
            return;
        }
        foreach (var childCore in childrenCore)
        {
            TouchMove     tm      = PutCanvasM.GetTouchMoveByCore(childCore);
            BuildProperty lifeobj = tm.GetComponent <BuildProperty>();
            if (lifeobj != null && lifeobj.GetModeType() == 1605)
            {
                Building1605 b = lifeobj.GetLife() as Building1605;
                if (b != null)
                {
                    ShipPutInfo Info = P.GetShipBuildInfo(m_Core);
                    b.ShowTranGate(new Int2(Info.shipput_data0, Info.shipput_data1));
                }
            }
        }
    }
Пример #2
0
    public void UpdateMyGridColor(bool bCanPutTemp = true)
    {
        List <Int2> moveToGrids = m_Core.GetMovetoRoomGridPos(m_posMapGrid);

        if (!bCanPutTemp)
        {
            TouchMoveManager.SetGridsBgStates(moveToGrids, CanvasUnitState.CanntPut, true);
            return;
        }
        if (PutCanvasM.CheckCanPut(m_Core, m_posMapGrid))
        {
            TouchMoveManager.SetGridsBgStates(moveToGrids, CanvasUnitState.CanPut, true);
        }
        else
        {
            TouchMoveManager.SetGridsBgStates(moveToGrids, CanvasUnitState.CanntPut, true);
        }

        if (null != m_ExchangeTouch)
        {
            moveToGrids = m_ExchangeTouch.MyCore().GetMovetoRoomGridPos(m_orgPosMapGrid);
            if (PutCanvasM.CheckCanPut(m_ExchangeTouch.MyCore(), m_orgPosMapGrid))
            {
                TouchMoveManager.SetGridsBgStates(moveToGrids, CanvasUnitState.CanPut, false);
            }
            else
            {
                TouchMoveManager.SetGridsBgStates(moveToGrids, CanvasUnitState.CanntPut, false);
            }
        }
    }
Пример #3
0
    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;
            }
        }
    }
Пример #4
0
    /// <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);
            }
        }
    }
Пример #5
0
 /// <summary>
 /// 已在船上的building 进行移动。
 /// </summary>
 void MoveShipBuilding(Int2 TargetMg)
 {
     PutCanvasM.MoveBuildRoom(m_Core, TargetMg);
     // {
     //TouchMoveManager.SetCanPutArea();
     //}
 }
Пример #6
0
 /// <summary>
 /// 从仓库放到船上。
 /// </summary>
 public void WareHouse2Ship(Int2 TargetMg)
 {
     PutCanvasM.AddNewCore(m_Core, TargetMg);
     SetTouchMoveData(m_Core.m_type, false, m_Core.m_ID);
     CreateStair(m_Core);
     GenerateDeck();
     //SetDepth(true);
 }
Пример #7
0
    static void BindStair(Int2 grid)
    {
        CanvasCore core = RoomMap.FindCanvasCore(grid, ShipBuildType.BuildRoom);

        if (core != null)
        {
            TouchMove tm = PutCanvasM.GetTouchMoveByCore(core);
            tm.MoveWithRoom(core);
        }
    }
Пример #8
0
    /// <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);
    }
Пример #9
0
 public override void WndStart()
 {
     base.WndStart();
     if (MyHead.BtnYES)
     {
         MyHead.BtnYES.OnClickEventHandler += BtnYES_OnClickEventHandler;
     }
     if (MyHead.BtnNO)
     {
         MyHead.BtnNO.OnClickEventHandler += BtnNO_OnClickEventHandler;
     }
     PutCanvasM.ShowRoomGridUI(false);
 }
Пример #10
0
    /// <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);
    }
Пример #11
0
 private void BtnReutrnBag_OnClickEventHandler(UIButton sender)
 {
     if (m_Core.m_type == ShipBuildType.BuildRoom)
     {
         SetBuildParaOver();
         PutCanvasM.ShowRoomGridUI(false);
         DestroyShipBuild();
     }
     else if (m_Core.m_type == ShipBuildType.Soldier)
     {
         DestroyShipBuild();
         PutCanvasM.ShowRoomGridUI(false);
     }
 }
Пример #12
0
    /// <summary>
    /// 下一步 生成船只
    /// </summary>
    /// <param name="sender"></param>
    public void BtnNext_OnClickEventHandler(UIButton sender)
    {
        if (!PutCanvasM.CheckSave())
        {
            return;
        }

        if (Input.touchCount > 1 || PutCanvasM.CanOperate == false)   //有其他操作时不得保存
        {
            return;
        }
        // 客户端直接保存。
        ShipPlanDC.SaveCanvansInfo();
        SaveSuccecd();
    }
Пример #13
0
    /// <summary>
    /// 新增船只建筑,兵,加入。
    /// </summary>
    public static void JointShipBuild(TouchMove touch)
    {
        if (touch == null || touch.MyCore() == null)
        {
            Debug.LogError("船只摆设数据加入有误,请调查");
            return;
        }

        if (CheckHaveBuild(touch.MyCore()) == false)
        {
            m_Build.Add(touch);
            if (!touch.MyCore().IsNewCreate)
            {
                PutCanvasM.AddNewCore(touch.MyCore(), touch.m_posMapGrid);
            }
        }
    }
Пример #14
0
    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);
    }
Пример #15
0
    public void BtnReturn_OnClickEventHandler(UIButton sender)
    {
        Life.Environment = LifeEnvironment.View;
        PutCanvasM.PutDownNewBuild();
        ShipPlan P = ShipPlanDC.GetCurShipPlan();

        P.Mode = XYmode.Edit2Save;
        if (P.IsShipEditChange() == false)   //如果未修改,则直接返回
        {
            P.ReCalcShipBuildInfoXY(XYmode.Edit2Save);
            DoReturn();
            return;
        }
        if (!m_IsSaving)
        {
            WndManager.GetDialog <IsSaveFangAnWnd>();
        }
    }
Пример #16
0
    /// <summary>
    /// 放开建筑处理
    /// </summary>
    public bool MoveBuildUp()
    {
        if (m_ExchangeTouch && m_ExchangeTouch != this)
        {
            m_ExchangeTouch.m_posMapGrid    = m_orgPosMapGrid;
            m_ExchangeTouch.m_orgPosMapGrid = m_ExchangeTouch.m_posMapGrid;
            m_ExchangeTouch.UpdateChildmGridWhenUp();

            m_orgPosMapGrid = m_posMapGrid;
            UpdateChildmGridWhenUp();
            SetPosByGrid(true);
            if (!m_ExchangeTouch.MyCore().IsDeckRoom)
            {
                CreateStair(m_Core);
            }
            m_ExchangeTouch = null;
            GenerateDeck();
            return(true);
        }


        bool bCanPut = PutCanvasM.CheckCanTempPut(m_Core, m_posMapGrid);

        if (bCanPut)
        {
            m_orgPosMapGrid = m_posMapGrid;
            UpdateChildmGridWhenUp();
            SetPosByGrid(true);
        }
        else
        {
            m_posMapGrid = m_orgPosMapGrid;
            UpdateChildmGridWhenUp();
            MoveShipBuilding(m_posMapGrid);
            SetPosByGrid(true);
        }
        if (!MyCore().IsDeckRoom)
        {
            CreateStair(m_Core);
        }
        GenerateDeck();
        return(true);
    }
Пример #17
0
    void BtnDeleteSoldier_OnClickEventHandler(UIButton sender)
    {
        List <CanvasCore> childrenCore = PutCanvasM.GetChildByCore(m_Core);

        if (childrenCore.Count == 0)
        {
            return;
        }

        foreach (var childCore in childrenCore)
        {
            TouchMove tm = PutCanvasM.GetTouchMoveByCore(childCore);
            if (childCore.m_type == ShipBuildType.Soldier)
            {
                tm.DestroyShipBuild();
            }
        }
        PutCanvasM.ShowRoomGridUI(false);
    }
Пример #18
0
 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;
 }
Пример #19
0
    /// <summary>
    ///  从仓库中创建建筑。
    /// </summary>
    public static void CreateBuildingFromWarehouse(BuildInfo infoBuild)
    {
        if (infoBuild == null)
        {
            return;
        }

        Vector2    size     = new Vector2(infoBuild.m_Shape.width, infoBuild.m_Shape.height);
        CanvasCore Core     = new CanvasCore(ShipBuildType.BuildRoom, true, ShipPutInfo.GetNewShipPutId(), infoBuild.ID, size);
        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);
        Vector3   local     = RoomMap.GetShipBuildLocalPos(BornPos, ShipBuildType.BuildRoom);
        Vector3   world     = Local2WorldPos(local);
        Building  buildlife = LifeFactory.CreateBuilding(infoBuild, 0, t_start, world, LifeEnvironment.Edit);

        if (buildlife == null)
        {
            return;
        }

        buildlife.ShowEditHp(infoBuild.m_bear);
        TouchMove touch = buildlife.m_thisT.GetChild(0).gameObject.AddComponent <TouchMove>();

        touch.InitTouchMoveCore(Core, BornPos, buildlife);

        AddBuildingEditPlugin(touch);

        GenerateShip.m_vStart = Vector3.zero;

        TouchMoveManager.JointShipBuild(touch);
        TouchMoveManager.SetCurTouchMove(touch);
        touch.WareHouse2Ship(BornPos);
    }
Пример #20
0
    public void UpdateChildmGridWhenUp()
    {
        List <CanvasCore> childrenCore = PutCanvasM.GetChildByCore(m_Core);

        if (childrenCore == null || childrenCore.Count == 0)
        {
            return;
        }
        if (m_tStart == null)
        {
            return;
        }
        foreach (var childCore in childrenCore)
        {
            TouchMove tm = PutCanvasM.GetTouchMoveByCore(childCore);
            if (tm)
            {
                tm.m_posMapGrid    = m_posMapGrid - tm.m_OffsetGrid;
                tm.m_orgPosMapGrid = tm.m_posMapGrid;
            }
        }
    }
Пример #21
0
    /// <summary>
    /// 移动建筑处理
    /// </summary>
    public void MoveBuild()
    {
        Int2    curMouseMoveGrid = GetMousePosGrid();
        Vector3 gridPos          = GetMouseGridPos() - m_v3TouchDownOffset;

        SetCenterByGridPos(gridPos);
        Int2 offsetGrid = curMouseMoveGrid - m_TouchDownGrid;
        Int2 iNew       = new Int2(m_TouchDownRoomGrid.Unit + offsetGrid.Unit * MapGrid.m_UnitRoomGridNum, m_TouchDownRoomGrid.Layer + offsetGrid.Layer);

        //判断是否移出界外
        if (curMouseMoveGrid == new Int2(-1, -1) ||
            m_Core.IsDeckRoom == false && iNew.Layer + m_Core.GetSize().Layer - 1 >= RoomMap.DeckRoomTopLayer && m_Core.m_type == ShipBuildType.BuildRoom)
        {
            m_LastMouseMoveGrid = curMouseMoveGrid;
            return;
        }
        if (RoomMap.CheckAllInMap(m_Core, iNew))
        {
            m_posMapGrid = iNew;
        }
        if (m_LastMouseMoveGrid != curMouseMoveGrid)
        {
            Int2 mapGrid = new Int2(curMouseMoveGrid.Unit * MapGrid.m_UnitRoomGridNum, curMouseMoveGrid.Layer);
            DoRoomExchange(mapGrid);             //同shape房间置换
            bool bCanPutTemp = PutCanvasM.CheckCanTempPut(m_Core, m_posMapGrid);
            if (bCanPutTemp)
            {
                MoveShipBuilding(m_posMapGrid);
            }
            if (m_Core.m_type == ShipBuildType.BuildRoom && !m_Core.IsDeckRoom)
            {
                GenerateDeckWithOutThis();
            }
            UpdateMyGridColor(bCanPutTemp);
        }
        m_LastMouseMoveGrid = curMouseMoveGrid;
        m_posPreMapGrid     = m_posMapGrid;
    }
Пример #22
0
    void SaveSuccecd()
    {
        TouchMoveManager.ShowCanvas(false);
        MainCameraM.s_Instance.ResetCameraDataByHaven();
        MainCameraM.s_Instance.EnableOthOn(false);
        MainCameraM.s_Instance.SetCameraLimitParam(MainCameraM.s_reaLimitPyramidHavenView);
        MainCameraM.s_Instance.AutoMoveTo(MainCameraM.s_vHavenViewBoatviewCamPos, 0.3f);
        MainCameraM.s_Instance.EnableDrag(false);

        Life.Environment = LifeEnvironment.View;
        PutCanvasM.PutDownNewBuild();
        TouchMoveManager.DoTransgatePoint();
        m_IsSaving = true;

        if (MyHead.BtnReturn)
        {
            MyHead.BtnReturn.gameObject.SetActive(false);
        }
        if (MyHead.BtnNext)
        {
            MyHead.BtnNext.gameObject.SetActive(false);
        }
        CangKuWnd wnd = WndManager.FindDialog <CangKuWnd>();

        if (wnd)
        {
            wnd.gameObject.SetActive(false);
        }

        PutCanvasM.CanOperate = false;
        PutCanvasM.ShowRoomGridUI(false);
        TouchMoveManager.SetCurTouchMove(null);
        MainCameraM.s_Instance.EnableDrag(false);
        ShipPlan P = ShipPlanDC.GetCurShipPlan();

        P.CreateCanvans();
        GenerateShip.GenerateShipsWithAni();
    }
Пример #23
0
    /// <summary>
    /// 移动房间完毕后,解除房间内对象的父子关系
    /// </summary>
    public void LeaveRoom()
    {
        if (m_Core.m_type != ShipBuildType.BuildRoom)
        {
            return;
        }
        List <CanvasCore> childrenCore = PutCanvasM.GetChildByCore(m_Core);

        if (childrenCore.Count == 0)
        {
            return;
        }
        if (m_tStart == null)
        {
            return;
        }
        foreach (var childCore in childrenCore)
        {
            TouchMove tm = PutCanvasM.GetTouchMoveByCore(childCore);
            //tm.m_bCanOperate = true;
            Transform childShellT = PutCanvasM.GetTransformByCore(childCore).parent;
            childShellT.parent = m_tStart;
        }
    }
Пример #24
0
 void Update()
 {
     if (MainCameraM.s_Instance.CheckIsZooming() || MainCameraM.s_Instance.CheckCameraMove())
     {
         PutCanvasM.ShowRoomGridUI(false);
     }
     if (PutCanvasM.CanOperate == false)
     {
         return;
     }
     if (Input.touchCount >= 2)
     {
         PutCanvasM.ShowRoomGridUI(false);
         m_bTouchMoveChange  = true;
         m_roomGridTouchDown = null;
     }
     // MainCameraM.s_Instance.EnableDrag(true);
     if (m_bMouseDown)
     {
         if (!m_isDrag)
         {
             float click = mouseClickThreshold;
             click *= click;
             m_vtotalmouseDelta += m_vlastFirstTouch - GetTouchPos(0);
             m_vlastFirstTouch   = GetTouchPos(0);
             m_mag = m_vtotalmouseDelta.sqrMagnitude;
             if (m_mag > click)
             {
                 m_isDrag = true;
             }
             else
             {
                 //没有发生移动地图 或 没有发生长按  要判定
                 if (!m_isDrag && !m_bLongTouch)
                 {
                     //长按判定
                     if (!m_isDrag && m_roomGridTouchDown != null)
                     {
                         if (Time.time - m_fMouseDownTime > 0.5f)
                         {
                             m_bLongTouch = true;
                         }
                         //没有发生移动地图,但有发生长按,则更换选中房间,并将m_bTouchMoveChange=false
                         if (m_bLongTouch)
                         {
                             CanvasCore buildRoomCoreTouchDown = m_roomGridTouchDown.GetBuildRoom();
                             TouchMove  selNewTouchMov         = PutCanvasM.GetTouchMoveByCore(buildRoomCoreTouchDown);
                             TouchMove  selOldeTouchMove       = TouchMoveManager.GetCurTouchMove();
                             if (selNewTouchMov != null && selNewTouchMov != selOldeTouchMove)
                             {
                                 m_bTouchMoveChange = false;
                                 TouchMoveManager.SetCurTouchMove(selNewTouchMov);
                                 selNewTouchMov.OnMouseDown();
                             }
                         }
                     }
                 }
             }
         }
         if (m_isDrag)
         {
             //按下是选中的是原选中房间,则直接移动该房间
             //长按时会自动将最新选中房间,并将m_bTouchMoveChange设置为false
             if (!m_bTouchMoveChange)
             {
                 MainCameraM.s_Instance.EnableDrag(false);
                 TouchMove curTouchMove = TouchMoveManager.GetCurTouchMove();
                 if (null != curTouchMove)
                 {
                     PutCanvasM.ShowRoomGridUI(false);
                     //TouchMoveManager.ShowCanvas(true);
                     PutCanvasM.ShowRoomGridUI(false);
                     curTouchMove.MoveBuild();
                 }
             }
         }
     }
 }
Пример #25
0
    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();
            }
        }
    }
Пример #26
0
 /// <summary>
 /// 房间置换
 /// </summary>
 void DoRoomExchange(Int2 mapGrid)
 {
     if (m_Core.m_type == ShipBuildType.BuildStair)
     {
         return;
     }
     if (!m_Core.IsNewCreate)
     {
         TouchMove tmCurExchange = m_ExchangeTouch;
         if (null != tmCurExchange)
         {
             if (m_ExchangeTouch.MyCore().IsDeckRoom == MyCore().IsDeckRoom&& m_ExchangeTouch.MyCore().m_type == ShipBuildType.BuildRoom && MyCore().m_type == ShipBuildType.BuildRoom)
             {
                 PutCanvasM.ExchangeRoom(m_ExchangeTouch.MyCore(), m_ExchangeTouch.m_orgPosMapGrid, MyCore(), m_orgPosMapGrid);
             }
             else
             {
                 m_ExchangeTouch.MoveShipBuilding(m_ExchangeTouch.m_orgPosMapGrid);
                 MoveShipBuilding(m_orgPosMapGrid);
             }
         }
         CanvasCore core = RoomMap.FindCanvasCore(mapGrid, m_Core.m_type);
         if (core != null && core.m_ID != m_Core.m_ID)
         {
             bool b = PutCanvasM.CheckExchange(m_Core, core);
             if (b)
             {
                 TouchMove tmNew = PutCanvasM.GetTouchMoveByCore(core);
                 if (tmNew != null)
                 {
                     m_ExchangeTouch = tmNew;
                     if (m_ExchangeTouch.MyCore().IsDeckRoom == MyCore().IsDeckRoom&& m_ExchangeTouch.MyCore().m_type == ShipBuildType.BuildRoom && MyCore().m_type == ShipBuildType.BuildRoom)
                     {
                         PutCanvasM.ExchangeRoom(m_ExchangeTouch.MyCore(), m_orgPosMapGrid, MyCore(), m_posMapGrid);
                     }
                     else
                     {
                         m_ExchangeTouch.MoveShipBuilding(m_orgPosMapGrid);
                         MoveShipBuilding(m_posMapGrid);
                     }
                     if (m_ExchangeTouch != tmCurExchange)
                     {
                         m_ExchangeTouch.ExchangeAnimation(m_orgPosMapGrid);
                     }
                 }
             }
             else
             {
                 m_ExchangeTouch = null;
             }
         }
         else
         {
             m_ExchangeTouch = null;
         }
         if (null != tmCurExchange && m_ExchangeTouch != tmCurExchange)
         {
             //MoveShipBuilding (m_posMapGrid);
             tmCurExchange.MoveShipBuilding(tmCurExchange.m_orgPosMapGrid);
             tmCurExchange.ResetExchangePos();
         }
     }
 }
Пример #27
0
    /// <summary>
    /// 销毁整个对象。
    /// </summary>
    public void DestroyShipBuild()
    {
        PutERR Err = PutERR.ERR_NORMAL;

        if (PutCanvasM.CheckCanRemove(m_Core, ref Err) == false)
        {
            if (Err == PutERR.ERR_NOLink)
            {
                NGUIUtil.ShowTipWndByKey("88800009", 1.0f);
            }
            else if (Err == PutERR.ERR_HaveChild)
            {
                NGUIUtil.ShowTipWndByKey("88800010", 1.0f);
            }
            else
            {
                NGUIUtil.ShowTipWndByKey("88800011", 1.0f);
            }
            return;
        }
        if (m_Core.m_type == ShipBuildType.BuildStair)
        {
            //导致楼梯不删除的原因
            BuildProperty building = GetComponent <BuildProperty>();
            if (building != null)
            {
                GameObject skin = building.m_goAllBodySkin[0];
                if (skin != null)
                {
                    GameObjectActionExcute    gae  = skin.AddComponent <GameObjectActionExcute>();
                    GameObjectActionColorFade fade = new GameObjectActionColorFade(false, 1f);
                    fade.m_complete = DeleteStair;//删除楼梯表现回调
                    gae.AddAction(fade);
                }
            }
        }
        if (m_Building != null)
        {
            if (m_Core.Data.IsGoldBuild())
            {
                NGUIUtil.ShowTipWndByKey("88800012", 1.0f);
                return;
            }
        }
        MoveWithRoom(MyCore());
        TouchMoveManager.DeleteShipBuild(m_Core);
        CangKuWnd wnd = WndManager.GetDialog <CangKuWnd>();

        PutCanvasM.RemoveBuildRoom(m_Core);
        CreateStair(m_Core);
        GenerateDeck();
        TouchMoveManager.DoTransgatePoint();
        if (m_tTarget != null)
        {
            if (m_Core.m_type != ShipBuildType.BuildStair)
            {
                FlyToCangKuDelete(m_tTarget.gameObject, false);
                if (wnd)
                {
                    wnd.RefreshTrapUI();
                }
            }
        }
        //Destroy(GoClickBuildBtns);
    }
Пример #28
0
 private void YesReAuth(UIButton sender)
 {
     TouchMoveManager.DeleteAll();
     PutCanvasM.ShowRoomGridUI(false);
 }
Пример #29
0
 void BtnShow_OnClickEventHandler(UIButton sender)
 {
     PutCanvasM.PutDownNewBuild();
     PutCanvasM.ShowRoomGridUI(false);
     ClickMenuBtn();
 }
Пример #30
0
    void OnMouseUp()
    {
        if (!m_bMouseDown || PutCanvasM.CanOperate == false)
        {
            return;
        }
        m_bMouseDown = false;
        bool bCancelSel = false;
//        MainCameraM.s_Instance.EnableDrag(true);
        TouchMove selNewTouchMov = null;

        if (TouchMove.g_bSetParaing == true)
        {
            SetPara();
            return;
        }
        if (m_bTouchMoveChange)
        {
            if (m_roomGridTouchDown != null)
            {
                bCancelSel     = true;
                selNewTouchMov = PutCanvasM.GetTouchMoveByRoomGrid(m_roomGridTouchDown, m_curClickType);
                if (null == selNewTouchMov)
                {
                    CanvasCore buildRoomCoreTouchDown = m_roomGridTouchDown.GetBuildRoom();
                    selNewTouchMov = PutCanvasM.GetTouchMoveByCore(buildRoomCoreTouchDown);
                }
                if (selNewTouchMov)
                {
                    CanvasCore selCanvasCore = selNewTouchMov.MyCore();
                    bCancelSel = false;
                    TouchMove selOldeTouchMove = TouchMoveManager.GetCurTouchMove();
                    selNewTouchMov.PlayEditSelectAnimation();//点选时播放房间内陷阱动画
                    TouchMoveManager.SetCurTouchMove(selNewTouchMov);
                    selNewTouchMov.MoveWithRoom(selCanvasCore);
                }
                if (bCancelSel)
                {
                    TouchMoveManager.SetCurTouchMove(null);
                }
            }
        }
        else
        {
            selNewTouchMov = TouchMoveManager.GetCurTouchMove();
        }
        if (selNewTouchMov)
        {
            if (selNewTouchMov.MoveBuildUp())
            {
                //TouchMoveManager.ShowCanvas(false);
                PutCanvasM.ShowRoomGridUI(true);
            }
            else
            {
                PutCanvasM.ShowRoomGridUI(true);
            }
        }
        else
        {
            TouchMoveManager.SetCurTouchMove(null);
            //TouchMoveManager.ShowCanvas(false);
            PutCanvasM.ShowRoomGridUI(true);
        }
    }