Example #1
0
    /// <summary>
    /// 设置关卡副本数据
    /// <summary>
    public void SetStageData(StageType Type, int Chapter, CounterPartInfo Info)
    {
        m_Type        = Type;
        m_Chapter     = Chapter;
        m_StageID     = StageM.GetStageID(m_Type, m_Chapter, m_Stage);
        m_CounterInfo = Info;

        if (Info.isboss == 1)
        {
            if ((this is BossStageNode) == false)
            {
                //Debug.LogError("data skin is error");
            }
        }
        else
        {
            if ((this is SmallStageNode) == false)
            {
                //Debug.LogError("data skin is error");
            }
        }

        AddEvents();
        InitUI();
    }
Example #2
0
    /// <summary>
    /// 设置战役胜负
    /// </summary>
    private void SetStageWin(bool outcome, int star)
    {
        bool            boss      = false;
        CounterPartInfo countInfo = StageM.GetCounterPartInfo(StageDC.GetCompaignStageID());

        if (countInfo != null)
        {
            boss = countInfo.isboss == 1;
        }
        if (outcome)
        {
            MyHead.succ.gameObject.SetActive(true);
            MyHead.fail.gameObject.SetActive(false);
            SetStageStar(star, boss);
            GatePassInfo Info = new GatePassInfo();
            Info.star    = star;
            Info.times   = 1;
            Info.stageid = StageDC.GetCompaignStageID();
            StageDC.UpdataStageScheduler(Info);
        }
        else
        {
            MyHead.succ.gameObject.SetActive(false);
            MyHead.fail.gameObject.SetActive(true);
            MyHead.PvpPveFail.SetActive(true);
            MyHead.Datatable.gameObject.SetActive(false);
            //			MyHead.PvpPveFail.transform.FindChild("PvpFailText").gameObject.SetActive(false);
            MyHead.Rewardtable.transform.parent.gameObject.SetActive(false);
        }
    }
Example #3
0
    private void CalcRoadState()
    {
        int PrevStageID = StageM.GetStageID(m_Type, m_Chapter, m_PrevStage);
        int NextStageID = StageM.GetStageID(m_Type, m_Chapter, m_NextStage);

        bool IsPrevOpen  = StageDC.CheckOpenStage(m_Type, PrevStageID);
        int  PrevstarNum = StageDC.GetPassStageStar(m_Type, PrevStageID);

        bool IsNextOpen  = StageDC.CheckOpenStage(m_Type, NextStageID);
        int  NextstarNum = StageDC.GetPassStageStar(m_Type, NextStageID);

        //
        if (IsPrevOpen == false || PrevstarNum <= 0)
        {
            m_state = LineState.UnOPEN;
        }
        else if (IsPrevOpen == true && PrevstarNum > 0)
        {
            if (IsNextOpen == true)
            {
                if (NextstarNum > 0)
                {
                    m_state = LineState.Finish;
                }
                else
                {
                    m_state = LineState.Roading;
                }
            }
        }
        else
        {
            m_state = LineState.UnOPEN;
        }
    }
Example #4
0
    public CounterPartInfo(s_counterpartInfo Info)
    {
        this.id                  = Info.id;
        this.type                = Info.type;
        this.mode                = Info.mode;
        this.chapters            = Info.chapters;
        this.chaptersname        = Info.chaptersname;
        this.counterpartname     = Info.counterpartname;
        this.description         = Info.description;
        this.times               = Info.times;
        this.levellimit          = Info.levellimit;
        this.soldierlevellimit   = Info.soldierlevellimit;
        this.soldierquality      = Info.soldierquality;
        this.rewardexp           = Info.rewardexp;
        this.rewardglod          = Info.rewardglod;
        this.decklevel           = Info.decklevel;
        this.win_physical        = Info.win_physical;
        this.lose_physical       = Info.lose_physical;
        this.data0               = Info.data0;
        this.countershipcanvasid = Info.countershipcanvasid;
        this.iscaptain           = Info.iscaptain;
        this.isboss              = Info.isboss;
        //s_scriptdialogueInfo I = GetScriptdialogueInfo(id);
        if (Info.endscript > 0)
        {
            s_scriptdialogueInfo I = StageM.GetScriptdialogueInfo(Info.endscript);
            this.drop = I.drop;
        }

        StageM.GetStageTalk(Info.startscript, ref this.m_StageStartTalk);
        StageM.GetStageTalk(Info.endscript, ref this.m_StageEndTalk);
        StageM.GetBubblePromt(this.id, ref this.m_lBubblePromt);
    }
Example #5
0
 /// <summary>
 /// 查找对应的副本数据
 /// <summary>
 private CounterPartInfo FindCounterpartInfo(StageType Type, int Chapter, int StageID)
 {
     foreach (CounterPartInfo Info in m_CounterInfo)
     {
         if (Info.id == StageM.GetStageID(Type, Chapter, StageID))
         {
             return(Info);
         }
     }
     return(null);
 }
Example #6
0
    void UpdateData(StageType Type, int Chapter)
    {
        m_type          = Type;
        m_Chapter       = Chapter;
        m_ChapterReward = StageM.GetChapterReward(m_type, m_Chapter);
        GetStarData();
        LoadStageContext(m_Chapter, m_type);
        SetUI();

        GetBoxDataStage();
    }
Example #7
0
    public static void BuildViewStageScene()
    {
        CounterPartInfo    Info     = StageDC.GetCounterPartInfo();
        ShipCanvasInfo     Map      = StageM.GetCounterPartMap(Info.countershipcanvasid);
        List <SoldierInfo> lSoldier = new List <SoldierInfo>();
        List <BuildInfo>   lBuild   = new  List <BuildInfo>();

        StageM.GetCounterPartShipPut(Info.id, ref lSoldier, ref lBuild);
        CmCarbon.SetDefenseMap(Map);
        GenerateShip.GenerateShips(GetShipBodyMap(), GetLifeMBornNode(true), lBuild, lSoldier);
        MainCameraM.s_Instance.ResetCameraDataByBattle();
    }
Example #8
0
    /// <summary>
    /// 获取一个关卡的奖励
    /// </summary>
    private static void SetStageReward(int StageID)
    {
        m_CounterPartReward.Clear();
        List <int> l = StageM.GetStageReward(StageID);

        for (int i = 0; i < l.Count; i++)
        {
            if (m_CounterPartReward.Contains(l[i]) == false)
            {
                m_CounterPartReward.Add(l[i]);
            }
        }
    }
Example #9
0
    /// <summary>
    /// 设置奖励界面数据
    /// </summary>
    /// <param name="type">是否获取到物品</param>
    /// <param name="StarRewardID">s_stage_reward表的id</param>
    /// <param name="starNumText">星星数量,如  8/15 </param>
    /// <param name="itemList">奖励物品列表</param>
    public void SetData(StageMapWnd Wnd, StarAwardType type, int StarRewardID, int HaveStar, int TotalStar)
    {
        m_wnd                  = Wnd;
        m_type                 = type;
        m_starRewardID         = StarRewardID;
        m_itemList             = StageM.GetChapterRewardItem(m_starRewardID, ref m_RewardCoin, ref m_RewardDiamond);
        MyHead.LblCoin.text    = m_RewardCoin.ToString();
        MyHead.LblDiamond.text = m_RewardDiamond.ToString();
        if (MyHead != null && MyHead.LblStarNum != null)
        {
            MyHead.LblStarNum.text = "[ffffff]" + HaveStar.ToString() + "[-][c7945b]" + "/" + TotalStar.ToString() + "[-]";
        }


        SetUI();
    }
Example #10
0
    /// <summary>
    /// 0706 回应炮弹兵数据
    /// </summary>
    /// <param name="Info"></param>
    /// <returns></returns>
    public static bool RecvStageScheduleResponse(object obj)
    {
        ClearDC();
        if (obj == null)
        {
            return(false);
        }
        stage.StageScheduleResponse Info = obj as stage.StageScheduleResponse;
        //普通副本
        m_NormalStage = Info.normal;
        foreach (stage.StageScheduleResponse.ScheduleInfo I in  Info.normal_info)
        {
            GatePassInfo g = new GatePassInfo();
            g.star    = I.star;
            g.times   = I.times;
            g.stageid = I.stageid;
            m_NormalStagePass.Add(g);
        }
        //精英副本
        m_HardStage = Info.hard;
        foreach (stage.StageScheduleResponse.ScheduleInfo I in  Info.hard_info)
        {
            GatePassInfo g = new GatePassInfo();
            g.star    = I.star;
            g.times   = I.times;
            g.stageid = I.stageid;
            m_HardStagePass.Add(g);
        }
        //团队副本
        //精英副本
        m_TeamStage = Info.team;
        foreach (stage.StageScheduleResponse.ScheduleInfo I in  Info.team_info)
        {
            GatePassInfo g = new GatePassInfo();
            g.star    = I.star;
            g.times   = I.times;
            g.stageid = I.stageid;
            m_TeamStagePass.Add(g);
        }

        m_FirstNormalStage = StageM.FindFirstCanAttackStage(StageType.Normal, m_NormalStage);
        m_FirstHardStage   = StageM.FindFirstCanAttackStage(StageType.Hard, m_HardStage);
        m_FirstTeamStage   = StageM.FindFirstCanAttackStage(StageType.Team, m_TeamStage);

        return(true);
    }
Example #11
0
 /// <summary>
 /// 从protobuf 解析静态数据到本地
 /// </summary>
 /// <param name="msg"></param>
 public static void LoadStaticDataToLocal(sdata.StaticDataResponse msg)
 {
     ConfigM.Init(msg);
     buildingM.Init(msg);
     DeckM.Init(msg);
     UserM.Init(msg);
     SoldierM.Init(msg);
     SummonM.Init(msg);
     SkillM.Init(msg);
     StageM.Init(msg);
     RoleNameM.Init(msg);
     ItemM.Init(msg);
     GodSkillM.Init(msg);
     AthleticsM.Init(msg);
     ErnieM.Init(msg);
     FruitionM.Init(msg);
     ShipPlanM.Init(msg);
 }
Example #12
0
    /// <summary>
    /// 根据副本计算战斗力.
    /// </summary>
    /// <returns>The counter part combat power.</returns>
    /// <param name="nCounterPartID">N counter part I.</param>
    public static int GetCounterPartCombatPower(int nCounterPartID)
    {
        List <SoldierInfo> lSoldInfoList = new List <SoldierInfo> ();
        List <BuildInfo>   lBuildList    = new List <BuildInfo> ();

        StageM.GetCounterPartShipPut(nCounterPartID, ref lSoldInfoList, ref lBuildList);

        int combatPower = 0;

        foreach (SoldierInfo info in lSoldInfoList)
        {
            combatPower += info.m_combat_power;
        }
        foreach (BuildInfo info in lBuildList)
        {
            combatPower += info.m_DefensePower;
        }
        return(combatPower);
    }
Example #13
0
    /// <summary>
    /// 加入战役战斗,填充战役相关数据。
    /// </summary>
    public static bool JoinCompaignBattle()
    {
        m_CounterPartPutSoldier.Clear();
        m_CounterPartEnemys.Clear();
        m_CounterPartPutBulid.Clear();
        m_CounterPartInfo = StageM.GetCounterPartInfo(m_stageid);
        if (m_CounterPartInfo != null)
        {
            SetStageReward(m_stageid);
            //战斗模式
            if (m_CounterPartInfo.mode == 0)
            {
                m_CounterPartMap = StageM.GetCounterPartMap(m_CounterPartInfo.countershipcanvasid);
                StageM.GetCounterPartShipPut(m_stageid, ref m_CounterPartPutSoldier, ref m_CounterPartPutBulid);
                //加入战斗
                CmCarbon.ReadyCombat();
                CmCarbon.SetDefenseMap(m_CounterPartMap);
                CmCarbon.SetDefenseBuild(m_CounterPartPutBulid);
                CmCarbon.SetPVEMonisterSoldier(m_CounterPartPutSoldier);
                CmCarbon.SetDefenseFloor(m_CounterPartInfo.decklevel);
                CmCarbon.SetDefenseUserInfo(m_CounterPartInfo, m_CounterPartPutBulid);
            }
            else     //防守模式
            //StageM.GetCounterPartShipPut(m_stageid , ref m_CounterPartPutSoldier , ref m_CounterPartPutBulid);
            {
                StageM.GetCounterPartShipPut(m_stageid, ref m_CounterPartEnemys, ref m_CounterPartPutBulid);
                //加入战斗
                CmCarbon.ReadyCombat();
                CmCarbon.SetAttackSoldier(m_CounterPartEnemys);
            }

            if (GetPassStageStar(m_type, m_stageid) == 0 /*&& GetPassStageTimes (m_type ,m_stageid) == 0*/)
            {
                CmCarbon.SetStartTalk(m_CounterPartInfo.m_StageStartTalk);
                CmCarbon.SetEndTalk(m_CounterPartInfo.m_StageEndTalk);
            }
            return(true);
        }
        return(false);
    }
Example #14
0
    private void AddItemComeFrom()
    {
        List <int> lCounpart = StageM.GetRewardFromStage(m_itemInfo.id);

        if (lCounpart == null || lCounpart.Count < 1)
        {
            ShowAnotherFrom();
            return;
        }
        List <CounterPartInfo> lCounterInfo = StageM.GetCounterPartInfoList(lCounpart);

        if (lCounterInfo == null || lCounterInfo.Count < 1)
        {
            ShowAnotherFrom();
            return;
        }
        ShowAnotherFrom(false);
        Dictionary <int, int> dl = new Dictionary <int, int>();

        foreach (CounterPartInfo info in lCounterInfo)
        {
//			if(info.isboss == 0) continue;
            if (dl.ContainsKey(info.id))
            {
                continue;
            }
            dl.Add(info.id, info.id);
            GameObject go = NDLoad.LoadWndItem("ItemComeFromItem", MyHead.Table.transform);
            if (go != null)
            {
                ItemComeFromItem item = go.GetComponent <ItemComeFromItem>();
                if (item)
                {
                    item.SetCounterInfoData(info);
                }
            }
        }
        MyHead.Table.Reposition();
    }
Example #15
0
    /// <summary>
    /// 获取该章节下的所有关卡
    /// </summary>
    public static List <CounterPartInfo> GetChaptersGate(int Chapters, StageType type)
    {
        List <CounterPartInfo> l = StageM.GetChaptersGate(Chapters, type);

        if (l != null && l.Count > 1)
        {
            l.Sort((a, b) => {
                if (a.CounterNode > b.CounterNode)
                {
                    return(1);
                }
                else if (a.CounterNode == b.CounterNode)
                {
                    return(0);
                }
                else
                {
                    return(-1);
                }
            });
        }
        return(l);
    }
Example #16
0
    /// <summary>
    /// 获得途径.
    /// </summary>
    private void AddGetWay()
    {
        AddBanner(0);
        List <int> lCounpart = StageM.GetRewardFromStage(m_ItemInfo.itemType);

        if (lCounpart == null || lCounpart.Count < 1)
        {
            return;
        }
        List <CounterPartInfo> lCounterInfo = StageM.GetCounterPartInfoList(lCounpart);

        if (lCounterInfo == null || lCounterInfo.Count < 1)
        {
            return;
        }

        Dictionary <int, int> dl      = new Dictionary <int, int>();
        PdbbbItem             pbbItem = null;
        GameObject            go2     = NDLoad.LoadWndItem("PdbbbItem", MyHead.Table.transform);

        pbbItem = go2.GetComponent <PdbbbItem>();
        if (pbbItem != null && pbbItem.MyHead.Table != null)
        {
            pbbItem.MyHead.Table.columns   = 2;
            pbbItem.MyHead.Table.padding.y = 10f;
            foreach (CounterPartInfo info in lCounterInfo)
            {
//				if(info.isboss == 0) continue;
                if (dl.ContainsKey(info.id))
                {
                    continue;
                }
                dl.Add(info.id, info.id);
                GameObject go = NDLoad.LoadWndItem("EquipComeFromItem", pbbItem.MyHead.Table.transform);
                if (go != null)
                {
                    EquipComeFromItem item = go.GetComponent <EquipComeFromItem>();
                    if (item)
                    {
                        item.SetCounterInfoData(info);
                        item.MyHead.BtnItemClick.OnClickEventHandler += (UIButton sender) =>
                        {
                            bool Open = StageDC.CheckOpenStage((StageType)info.type, info.id);
                            if (!Open)
                            {
                                NGUIUtil.ShowTipWndByKey(10000175);
                                return;
                            }

                            StageMapWnd wnd = WndManager.GetDialog <StageMapWnd>();
                            if (wnd != null)
                            {
                                wnd.SetMainMenuTop(false);

                                int stageNode = StageDC.GetStageNode(info.id);
                                int chapter   = StageDC.GetStageChapter(info.id);
                                wnd.GotoChapter((StageType)info.type, chapter, stageNode);
                            }
                            EquipInfoWnd InfoWnd = WndManager.FindDialog <EquipInfoWnd>();
                            if (InfoWnd != null)
                            {
                                WndManager.SetBeforeWnd(wnd, InfoWnd);
                            }
                        };;
                    }
                }
                pbbItem.MyHead.Table.Reposition();
                pbbItem.MyHead.Table.repositionNow = true;
            }
        }
    }
Example #17
0
    void SetUI()
    {
        if (MyHead == null)
        {
            return;
        }
        bool PrevChapter = StageM.CheckHaveChapters(m_Chapter - 1, m_type);
        bool NextChapter = StageM.CheckHaveChapters(m_Chapter + 1, m_type);

        if (MyHead.Btn_Left)
        {
            MyHead.Btn_Left.gameObject.SetActive(PrevChapter);
        }

        if (MyHead.Btn_Right)
        {
            MyHead.Btn_Right.gameObject.SetActive(NextChapter);
        }

        bool HardLock = false;

        HardLock = StageM.CheckHaveChapters(m_Chapter, StageType.Hard);
        bool TeamLock = StageM.CheckHaveChapters(m_Chapter, StageType.Team);

        if (HardLock == false)
        {
            MyHead.SprEliteLock.gameObject.SetActive(true);
            MyHead.Btn_Elite.isEnabled = false;
            MyHead.LblElite.alignment  = NGUIText.Alignment.Right;
        }
        else
        {
            MyHead.SprEliteLock.gameObject.SetActive(false);
            MyHead.Btn_Elite.isEnabled = true;
            MyHead.LblElite.alignment  = NGUIText.Alignment.Center;
        }
        //
        if (TeamLock == false)
        {
            MyHead.SprEliteRaid.gameObject.SetActive(true);
            MyHead.Btn_Raid.isEnabled = false;
            MyHead.LblRaid.alignment  = NGUIText.Alignment.Right;
        }
        else
        {
            MyHead.SprEliteRaid.gameObject.SetActive(false);
            MyHead.Btn_Raid.isEnabled = true;
            MyHead.LblRaid.alignment  = NGUIText.Alignment.Center;
        }

        if (MyHead.Lbl_Star != null)
        {
            MyHead.Lbl_Star.text = /*"[c7945b]"+ */ m_haveStar.ToString() + /* "[-][3f3c2f]" + */ "/" + m_totalStar.ToString() /*+ "[-]"*/;
        }

        if (MyHead.Sprite_Progress != null)
        {
            MyHead.Sprite_Progress.fillAmount = CalcfillAmount(m_haveStar, m_totalStar);
        }


        if (MyHead.Lbl_NeedStartext1 != null)
        {
            MyHead.Lbl_NeedStartext1.text = GetNeedStar(0).ToString();
        }

        if (MyHead.Lbl_NeedStartext2 != null)
        {
            MyHead.Lbl_NeedStartext2.text = GetNeedStar(1).ToString();
        }

        if (MyHead.Lbl_NeedStartext3 != null)
        {
            MyHead.Lbl_NeedStartext3.text = GetNeedStar(2).ToString();
        }

        UpdataBoxState();
    }
Example #18
0
    /// <summary>
    /// 更新章节进度
    /// </summary>
    public static void UpdataStageScheduler(GatePassInfo Info)
    {
        if (Info == null)
        {
            return;
        }

        int type = Info.CouterType;

        if (type == (int)StageType.Normal)
        {
            if (Info.stageid > m_NormalStage)
            {
                m_NormalStage = Info.stageid;
                m_NormalStagePass.Add(Info);
                m_FirstNormalStage = StageM.FindFirstCanAttackStage(StageType.Normal, m_NormalStage);
            }
            else
            {
                bool IsHave = false;
                for (int i = 0; i < m_NormalStagePass.Count; i++)
                {
                    if (m_NormalStagePass[i].stageid == Info.stageid)
                    {
                        if (m_NormalStagePass[i].star < Info.star)
                        {
                            m_NormalStagePass[i].star = Info.star;
                        }
                        m_NormalStagePass[i].times++;
                        IsHave = true;
                        break;
                    }
                }
                if (IsHave == false)
                {
                    Info.times = 1;
                    m_NormalStagePass.Add(Info);
                }
            }
        }
        else if (type == (int)StageType.Hard)
        {
            if (Info.stageid > m_HardStage)
            {
                m_HardStage = Info.stageid;
                m_HardStagePass.Add(Info);
                m_FirstHardStage = StageM.FindFirstCanAttackStage(StageType.Hard, m_HardStage);
            }
            else
            {
                bool IsHave = false;
                for (int i = 0; i < m_HardStagePass.Count; i++)
                {
                    if (m_HardStagePass[i].stageid == Info.stageid)
                    {
                        if (m_HardStagePass[i].star < Info.star)
                        {
                            m_HardStagePass[i].star = Info.star;
                        }
                        m_HardStagePass[i].times++;
                        IsHave = true;
                        break;
                    }
                }
                if (IsHave == false)
                {
                    Info.times = 1;
                    m_HardStagePass.Add(Info);
                }
            }
        }
        else
        {
            if (Info.stageid > m_TeamStage)
            {
                m_TeamStage = Info.stageid;
                m_TeamStagePass.Add(Info);
                m_FirstTeamStage = StageM.FindFirstCanAttackStage(StageType.Team, m_TeamStage);
            }
            else
            {
                bool IsHave = false;
                for (int i = 0; i < m_TeamStagePass.Count; i++)
                {
                    if (m_TeamStagePass[i].stageid == Info.stageid)
                    {
                        if (m_TeamStagePass[i].star < Info.star)
                        {
                            m_TeamStagePass[i].star = Info.star;
                        }
                        m_TeamStagePass[i].times++;
                        IsHave = true;
                        break;
                    }
                }
                if (IsHave == false)
                {
                    Info.times = 1;
                    m_TeamStagePass.Add(Info);
                }
            }
        }
    }
Example #19
0
 /// <summary>
 /// 获取关卡名称
 /// </summary>
 public static string GetChaptersName(int Chapters, StageType type)
 {
     return(StageM.GetChaptersName(Chapters, type));
 }
Example #20
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;
    }