Beispiel #1
0
    /// <summary>
    /// 获取地形房间及其内部陷阱
    /// </summary>
    /// <author>zhulin</author>
    public BuildInfo  GetBuildInfo()
    {
        BuildInfo bInfo = null;

        if (type == (int)ShipBuildType.BuildRoom)
        {
            bInfo = BuildDC.GetBuilding(objid);
        }
        else if (type == (int)ShipBuildType.BuildStair)
        {
            bInfo = buildingM.GetStartBuildInfo(objid);
        }

        if (bInfo != null)
        {
            bInfo.ID             = objid;
            bInfo.m_cx           = cxMapGrid;
            bInfo.m_cy           = cyMapGrid;
            bInfo.m_ShipPutdata0 = shipput_data0;
            bInfo.m_ShipPutdata1 = shipput_data1;
            if (bInfo.m_RoomType == RoomType.DeckTrap)
            {
                m_DeckRoom = true;
            }
            else
            {
                m_DeckRoom = false;
            }
        }
        return(bInfo);
    }
Beispiel #2
0
    /// <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);
    }
Beispiel #3
0
    /// <summary>
    /// 获取船上数据
    /// </summary>
    public void GetShipLifeObj(ref List <SoldierInfo> lSoldier, ref List <BuildInfo> lBuild, ref List <BuildInfo> lStair)
    {
        if (lSoldier == null)
        {
            lSoldier = new List <SoldierInfo>();
        }
        lSoldier.Clear();

        if (lBuild == null)
        {
            lBuild = new List <BuildInfo>();
        }
        lBuild.Clear();

        if (lStair == null)
        {
            lStair = new List <BuildInfo>();
        }
        lStair.Clear();

        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);
                lBuild.Add(info);
            }
        }
        else
        {
            //建筑
            foreach (ShipPutInfo r in m_RoomBuildings)
            {
                BuildInfo info = r.GetBuildInfo();
                if (info != null)
                {
                    lBuild.Add(r.GetBuildInfo());
                }
            }
            //炮弹兵
            foreach (ShipPutInfo r in m_Soldiers)
            {
                SoldierInfo s = new SoldierInfo();
                if (r.GetSoldier(ref s) == true)
                {
                    lSoldier.Add(s);
                }
            }
            //楼梯
            foreach (ShipPutInfo r in m_StairBuildings)
            {
                lStair.Add(r.GetBuildInfo());
            }
        }
    }
Beispiel #4
0
 /// <summary>
 /// 模拟数据接口。
 /// </summary>
 public static void SimulationData()
 {
     UserDC.SimulationData();
     SoldierDC.SimulationData();
     StageDC.SimulationData();
     BuildDC.SimulationData();
     BlackScienceDC.SimulationData();
     ShipPlanDC.SimulationData();
 }
Beispiel #5
0
 /// <summary>
 /// 清理数据中心数据
 /// </summary>
 public static void ClearDC()
 {
     UserDC.ClearDC();
     SoldierDC.ClearDC();
     BuildDC.ClearDC();
     ItemDC.ClearDC();
     BlackScienceDC.ClearDC();
     ShipPlanDC.ClearDC();
 }
Beispiel #6
0
 /// <summary>
 /// 设置升级需要材料
 /// </summary>
 private void SetUpLevelNeed()
 {
     if (m_HaveCoin >= m_NeedCoin && m_HaveWood >= m_NeedWood)
     {
         BuildDC.Send_BuildlevelUpRequest(m_build.ID);
     }
     else         //弹出提示框
     {
         NGUIUtil.ShowFreeSizeTipWnd(NGUIUtil.GetStringByKey(10000073), null, 0, 2f, ConstantData.iDepBefore3DModel);
     }
 }
Beispiel #7
0
 /// <summary>
 /// 召唤英雄
 /// </summary>
 void BtnYES_OnClickEventHandler(UIButton sender)
 {
     if (m_iWndType == 1)
     {
         SoldierDC.Send_SoldierSummonRequest(m_soldierInfo.SoldierTypeID);
     }
     else if (m_iWndType == 2)
     {
         BuildDC.Send_BuildComposeRequest(m_buildInfo.BuildType);
     }
 }
Beispiel #8
0
    /// <summary>
    /// 升级
    /// </summary>
    /// <param name="sender">Sender.</param>
    private void BtnShengJi_OnClickEventHandler(UIButton sender)
    {
        //.0能升级.1金币不足.2其他材料不足.3满级.
        CanLevelResult result = buildingM.GetLevelCanUP(m_Info);

        if (result == CanLevelResult.CanUp)
        {
            BackUpInfo();
            BuildDC.Send_BuildlevelUpRequest(m_Info.ID);
        }
    }
Beispiel #9
0
    private void ShowRedPot(bool Check = true)
    {
        if (Check)
        {
            bool can = BuildDC.CheckCanUp(m_Info);

            MyHead.SprRedSpot.SetActive(can);
        }
        else
        {
            MyHead.SprRedSpot.SetActive(false);
        }
    }
Beispiel #10
0
    private void BtnShengJie_OnClickEventHandler(UIButton sender)
    {
        if (m_parent.m_bIsShowQualityUp)
        {
            return;
        }

        CanQualityResult result = buildingM.GetQualityCanUP(m_Info);

        if (result == CanQualityResult.CanUp)
        {
            m_parent.BackUpInfo();
            BuildDC.Send_BuildQualityUpRequest(m_Info.ID);
            //			SetButtonEnable(false);
        }
    }
Beispiel #11
0
    /// <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;
        }
    }
Beispiel #12
0
    /// <summary>
    /// 设置建筑数据
    /// </summary>
    public void UpdateData()
    {
        m_Build.Clear();
        m_CannotSumBuild.Clear();
        m_CanSumBuild.Clear();
        List <BuildInfo> s_allBuild = buildingM.GetAllBuildInfo();

        foreach (BuildInfo item in s_allBuild)
        {
            if (item.BuildType == 1201 || item.BuildType >= 9990)
            {
                continue;
            }

            BuildInfo exitInfo = BuildDC.SearchBuilding(item.BuildType);
            if (exitInfo == null)
            {
                bool canSum = buildingM.CheckCanSummon(item.BuildType);
                if (canSum)
                {
                    m_CanSumBuild.Add(item);
                }
                else
                {
                    m_CannotSumBuild.Add(item);
                }
            }
        }
        List <BuildInfo> lWareInfo = BuildDC.GetBuildingList(AttributeType.ALL);

        foreach (BuildInfo Ware in lWareInfo)
        {
            if (Ware == null || Ware.BuildType == 1201)
            {
                continue;
            }
            m_Build.Add(Ware);
        }

        BuildDC.SortBuildList(ref m_Build);
        BuildDC.SortBuildList(ref m_CanSumBuild);
        BuildDC.SortCanNotExitBuildList(ref m_CannotSumBuild);
        //更新UI
        SetUI();
    }
Beispiel #13
0
 private void BtnSplit_OnClickEventHandler(UIButton sender)
 {
     BuildDC.Send_BuildAnalyzeRequest(m_build.ID);
 }
Beispiel #14
0
    /// <summary>
    /// 模拟数据
    /// </summary>
    public static void SimulationData()
    {
        List <StaticShipCanvas> l = ShipPlanM.GetAllShipCanvasInfo();

        foreach (StaticShipCanvas v in l)
        {
            m_lShipDesignInfo.Add(v.Id, v);
        }
        //
        ShipPlan p = new ShipPlan();

        p.ID             = 1;
        p.bExitCanvas    = false;
        p.Name           = "我的小船船";
        p.Type           = PlanType.Default;
        p.BlackScienceID = 1;

        p.Canvans      = StageM.GetCounterPartMap(101001);
        p.ShipDesignId = 100005; // 16格大船
        StaticShipCanvas shipInfo = ShipPlanDC.GetShipDesignInfo(p.ShipDesignId);

        if (shipInfo != null)
        {
            p.Canvans.CorrectionShiftError(new Int2(shipInfo.Width, shipInfo.Height));
        }
        // 船只摆设数据
        List <SoldierInfo> lSoldier = null;
        List <BuildInfo>   lBuild   = null;

        StageM.GetCounterPartShipPut(101001, ref lSoldier, ref lBuild);
        // 建筑跟楼梯
        foreach (BuildInfo v in lBuild)
        {
            if (v.BuildType == 1300)
            {
                BuildInfo   gold = BuildDC.GetVaultBuildInfo();
                ShipPutInfo Info = new ShipPutInfo();
                Info.id            = ShipPutInfo.GetNewShipPutId();
                Info.objid         = gold.ID;
                Info.type          = 1;
                Info.cxMapGrid     = v.m_cx;
                Info.cyMapGrid     = v.m_cy;
                Info.shipput_data0 = 0;
                Info.shipput_data1 = 0;
                p.AddShipBuildInfo(Info, ShipBuildType.BuildRoom);
            }
            if (v.BuildType == 1201)
            {
                ShipPutInfo Info = new ShipPutInfo();
                Info.id            = ShipPutInfo.GetNewShipPutId();
                Info.objid         = v.BuildType;
                Info.type          = 3;
                Info.cxMapGrid     = v.m_cx;
                Info.cyMapGrid     = v.m_cy;
                Info.shipput_data0 = 0;
                Info.shipput_data1 = 0;
                p.AddShipBuildInfo(Info, ShipBuildType.BuildStair);
            }
        }

        m_lShipPlan.Add(p.ID, p);
        m_SelPlan = p;
    }
Beispiel #15
0
    public static bool ProcessData(int CmdID, object Para)
    {
        bool bResult = true;

        if (Para is gate.GateMessage.MessageContent)
        {
            gate.GateMessage.MessageContent msg = Para as gate.GateMessage.MessageContent;
            int nErrorCode         = 0;
            gate.ErrorMessage emsg = msg.error_message;
            if (emsg != null)
            {
                if (emsg.code > 0)
                {
                    FileLog.ProtocolDump(emsg);
                    nErrorCode = emsg.code;
                    NGUIUtil.DebugLog(string.Format("CmdID={0},errorCode={1},description={2}",
                                                    CmdID, emsg.code, emsg.description));
                    bResult = false;
                    //return false; //如取名重名也会返回error_message.code>0,所以这里不宜return,否则客户端hook代码不会执行
                }
            }

            object data = null;
            if (bResult && msg.network_message != null)   //如果失败了,有可能msg.network_message为null
            {
                data = protobufM.Deserialize(msg.proto_name, msg.network_message);
            }
            //dump
            FileLog.ProtocolDumpwrite(CmdID.ToString());
            FileLog.ProtocolDumpwriteXml(CmdID.ToString());
            if (CmdID != 9999)
            {
                FileLog.ProtocolDump(data);
            }

            //统一在外围直接解析,不到具体的DC去
            if (bResult == true)
            {
                int DcBlock = CmdID / 100;
                switch (DcBlock)
                {
                case 2:
                    bResult = SoldierDC.ProcessData(CmdID, nErrorCode, data);
                    break;

                case 5:
                    bResult = ShipPlanDC.ProcessData(CmdID, nErrorCode, data);
                    break;

                case 6:
                    bResult = UserDC.ProcessData(CmdID, nErrorCode, data);
                    break;

                case 7:
                    bResult = StageDC.ProcessData(CmdID, nErrorCode, data);
                    break;

                case 8:
                    bResult = ItemDC.ProcessData(CmdID, nErrorCode, data);
                    break;

                case 9:
                    bResult = BuildDC.ProcessData(CmdID, nErrorCode, data);
                    break;

                case 11:
                    bResult = BlackScienceDC.ProcessData(CmdID, nErrorCode, data);
                    break;
                }
            }
            ProcessRealHooks(CmdID, nErrorCode);
        }


        return(bResult);
    }
Beispiel #16
0
 private void UpDateBuildInfo()
 {
     m_Info = BuildDC.GetBuilding(m_Info.ID);
 }
Beispiel #17
0
 /// <summary>
 /// 获取<船上或仓库>建筑、士兵和楼梯数据 (最核心的一个接口)
 /// </summary>
 public ShipPutInfo GetShipBuildInfo(CanvasCore Core)
 {
     if (Core == null)
     {
         return(null);
     }
     if (!Core.IsNewCreate)
     {
         List <ShipPutInfo> l = new List <ShipPutInfo>();
         if (Core.m_type == ShipBuildType.Soldier)
         {
             l = m_Soldiers;
             for (int i = 0; i < l.Count; i++)
             {
                 if (l[i].id == Core.m_ID)
                 {
                     return(l[i]);
                 }
             }
         }
         else if (Core.m_type == ShipBuildType.BuildRoom)
         {
             l = m_RoomBuildings;
             for (int i = 0; i < l.Count; i++)
             {
                 if (l[i].id == Core.m_ID)
                 {
                     return(l[i]);
                 }
             }
         }
         else if (Core.m_type == ShipBuildType.BuildStair)
         {
             l = m_StairBuildings;
             for (int i = 0; i < l.Count; i++)
             {
                 if (l[i].id == Core.m_ID)
                 {
                     return(l[i]);
                 }
             }
         }
     }
     else
     {
         if (Core.m_type == ShipBuildType.Soldier)
         {
             return(new ShipPutInfo(Core.m_ID, Core.m_DataID));
         }
         else if (Core.m_type == ShipBuildType.BuildRoom)
         {
             List <BuildInfo> l = BuildDC.GetBuildingList(AttributeType.ALL);
             for (int i = 0; i < l.Count; i++)
             {
                 if (l[i].ID == Core.m_DataID)
                 {
                     return(new ShipPutInfo(Core.m_ID, l[i]));
                 }
             }
         }
     }
     return(null);
 }
Beispiel #18
0
 /// <summary>
 /// 填充陷阱和兵数据
 /// </summary>
 private void FillTrapData(AttributeType type)
 {
     warehouseBuildList = BuildDC.GetBuildingList(type);
 }
Beispiel #19
0
 private void DoShengXing(UIButton sender)
 {
     SetEnableQuality(true);
     BackUpInfo();
     BuildDC.Send_BuildStarUpRequest(m_Info.ID);
 }