Beispiel #1
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;
            }
        }
    }
Beispiel #2
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);
            }
        }
    }
Beispiel #3
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));
                }
            }
        }
    }
Beispiel #4
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);
    }
Beispiel #5
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);
    }
Beispiel #6
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;
            }
        }
    }
Beispiel #7
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;
        }
    }
Beispiel #8
0
    /// <summary>
    /// 调换位置
    /// </summary>
    public static bool ExchangeRoom(CanvasCore Core1, Int2 tomapGrid1, CanvasCore Core2, Int2 tomapGrid2)
    {
        if (Core1 == null || Core1.IsNewCreate)
        {
            return(false);
        }
        if (Core2 == null || Core2.IsNewCreate)
        {
            return(false);
        }
        if (Core1.m_type != ShipBuildType.BuildRoom)
        {
            return(false);
        }
        if (Core2.m_type != ShipBuildType.BuildRoom)
        {
            return(false);
        }
        if (Core1.IsDeckRoom != Core2.IsDeckRoom)
        {
            return(false);
        }
        ShipPlan P = ShipPlanDC.GetCurShipPlan();

        if (P == null)
        {
            return(false);
        }
        //
        ShipPutInfo Info1 = P.GetShipBuildInfo(Core1);

        if (Info1 == null)
        {
            return(false);
        }
        ShipPutInfo Info2 = P.GetShipBuildInfo(Core2);

        if (Info1 == null)
        {
            return(false);
        }

        Int2 Pos1 = new Int2(Info1.cxMapGrid, Info1.cyMapGrid);
        Int2 Pos2 = new Int2(Info2.cxMapGrid, Info2.cyMapGrid);
        //先子对象互换

        //先移动子对象数据。
        //core1 --> core2
        List <CanvasCore> l = PutCanvasM.GetChildByCore(Core1);

        foreach (CanvasCore c in l)
        {
            Int2        move = new  Int2(tomapGrid1.Unit - Info1.cxMapGrid, tomapGrid1.Layer - Info1.cyMapGrid);
            ShipPutInfo II   = P.GetShipBuildInfo(c);
            if (II != null)
            {
                II.cxMapGrid += move.Unit;
                II.cyMapGrid += move.Layer;
            }
        }
        //core2 --> core1
        l = PutCanvasM.GetChildByCore(Core2);
        foreach (CanvasCore c in l)
        {
            Int2        move = new  Int2(tomapGrid2.Unit - Info2.cxMapGrid, tomapGrid2.Layer - Info2.cyMapGrid);
            ShipPutInfo II   = P.GetShipBuildInfo(c);
            if (II != null)
            {
                II.cxMapGrid += move.Unit;
                II.cyMapGrid += move.Layer;
            }
        }
        //房间数据互相置换
        RoomMap.ExchangeCanvans(RoomMap.GetPutRoomGrid(Core1), RoomMap.GetMovetoRoomGrid(Core1, tomapGrid1), RoomMap.GetPutRoomGrid(Core2), RoomMap.GetMovetoRoomGrid(Core2, tomapGrid2));

        //更新金库房间
        if (Info1.IsGoldBuild() == true)
        {
            RoomMap.UpdateGoldRoomGrid(Core1.GetMovetoRoomGridPos(tomapGrid1));
        }
        if (Info2.IsGoldBuild() == true)
        {
            RoomMap.UpdateGoldRoomGrid(Core2.GetMovetoRoomGridPos(tomapGrid2));
        }

        //更新数据
        Info1.SetBuildPostion(tomapGrid1);
        Info2.SetBuildPostion(tomapGrid2);
        return(true);
    }
Beispiel #9
0
    /// <summary>
    /// 移动一个房间
    /// </summary>
    public static bool MoveBuildRoom(CanvasCore Core, Int2 TargetPos)
    {
        if (Core == null || Core.IsNewCreate)
        {
            return(false);
        }
        ShipPlan P = ShipPlanDC.GetCurShipPlan();

        if (P == null)
        {
            return(false);
        }
        ShipPutInfo Info = P.GetShipBuildInfo(Core);

        if (Info == null)
        {
            return(false);
        }
        if (TargetPos.Unit == Info.cxMapGrid && TargetPos.Layer == Info.cyMapGrid)
        {
            return(false);
        }

        if (Core.m_type == ShipBuildType.BuildRoom)
        {
            if (Core.IsDeckRoom == false)
            {
                //先移动子对象数据。
                List <CanvasCore> l = PutCanvasM.GetChildByCore(Core);
                foreach (CanvasCore c in l)
                {
                    Int2        move = new  Int2(TargetPos.Unit - Info.cxMapGrid, TargetPos.Layer - Info.cyMapGrid);
                    ShipPutInfo II   = P.GetShipBuildInfo(c);
                    if (II != null)
                    {
                        II.cxMapGrid += move.Unit;
                        II.cyMapGrid += move.Layer;
                    }
                }
                RoomMap.MoveCanvans(RoomMap.GetPutRoomGrid(Core), RoomMap.GetMovetoRoomGrid(Core, TargetPos));
                //设置甲板区域
                RoomMap.UpdateDeckRoomGrid();
                //更新金库房间
                if (Info.IsGoldBuild() == true)
                {
                    RoomMap.UpdateGoldRoomGrid(Core.GetMovetoRoomGridPos(TargetPos));
                }
            }
            else
            {
                List <Int2> lDeck = Core.GetPutRoomGridPos();
                RoomMap.RemoveDeckBuild(lDeck);
                lDeck = Core.GetMovetoRoomGridPos(TargetPos);
                RoomMap.AddDeckBuild(Core.m_ID, lDeck);
            }
        }
        else
        {
            RoomMap.RemoveMapPosition(Core, RoomMap.GetPutRoomGridPosition(Core));
            RoomMap.AddMapPosition(Core, RoomMap.GetMovetoRoomGridPosition(Core, TargetPos));
        }
        Info.SetBuildPostion(TargetPos);
        return(true);
    }