예제 #1
0
        public Api_req_Kaisou.RemodelingChkResult ValidRemodeling(int ship_rid, out int reqDrawingNum)
        {
            Mem_ship mem_ship = null;

            reqDrawingNum = 0;
            if (!Comm_UserDatas.Instance.User_ship.TryGetValue(ship_rid, ref mem_ship))
            {
                return(Api_req_Kaisou.RemodelingChkResult.Invalid);
            }
            Mem_deck mem_deck = Enumerable.FirstOrDefault <Mem_deck>(Comm_UserDatas.Instance.User_deck.get_Values(), (Mem_deck x) => x.Ship.Find(ship_rid) != -1);

            if (mem_deck != null)
            {
                if (mem_deck.MissionState != MissionStates.NONE)
                {
                    return(Api_req_Kaisou.RemodelingChkResult.Mission);
                }
                if (mem_deck.IsActionEnd)
                {
                    return(Api_req_Kaisou.RemodelingChkResult.ActionEndDeck);
                }
            }
            if (Enumerable.Any <Mem_ndock>(Comm_UserDatas.Instance.User_ndock.get_Values(), (Mem_ndock x) => x.Ship_id == ship_rid))
            {
                return(Api_req_Kaisou.RemodelingChkResult.Repair);
            }
            Mst_ship mst_ship = Mst_DataManager.Instance.Mst_ship.get_Item(mem_ship.Ship_id);

            if (mst_ship.Aftershipid <= 0)
            {
                return(Api_req_Kaisou.RemodelingChkResult.Invalid);
            }
            if (mem_ship.Level < mst_ship.Afterlv)
            {
                return(Api_req_Kaisou.RemodelingChkResult.Level);
            }
            if (mem_ship.IsBlingShip())
            {
                return(Api_req_Kaisou.RemodelingChkResult.BlingShip);
            }
            Mst_shipupgrade mst_shipupgrade = null;

            if (Mst_DataManager.Instance.Mst_upgrade.TryGetValue(mst_ship.Aftershipid, ref mst_shipupgrade))
            {
                reqDrawingNum = mst_shipupgrade.Drawing_count;
            }
            if (mem_ship.Ship_id == 466 || mem_ship.Ship_id == 467)
            {
                reqDrawingNum = 0;
            }
            if (reqDrawingNum > 0)
            {
                Mem_useitem mem_useitem = null;
                if (!Comm_UserDatas.Instance.User_useItem.TryGetValue(58, ref mem_useitem))
                {
                    return(Api_req_Kaisou.RemodelingChkResult.Drawing);
                }
                if (mem_useitem.Value < reqDrawingNum)
                {
                    return(Api_req_Kaisou.RemodelingChkResult.Drawing);
                }
            }
            if (Comm_UserDatas.Instance.User_material.get_Item(enumMaterialCategory.Steel).Value < mst_ship.Afterfuel)
            {
                return(Api_req_Kaisou.RemodelingChkResult.Steel);
            }
            if (Comm_UserDatas.Instance.User_material.get_Item(enumMaterialCategory.Bull).Value < mst_ship.Afterbull)
            {
                return(Api_req_Kaisou.RemodelingChkResult.Bull);
            }
            int remodelDevKitNum = mst_ship.GetRemodelDevKitNum();

            if (Comm_UserDatas.Instance.User_material.get_Item(enumMaterialCategory.Dev_Kit).Value < remodelDevKitNum)
            {
                return(Api_req_Kaisou.RemodelingChkResult.Invalid);
            }
            return(Api_req_Kaisou.RemodelingChkResult.OK);
        }
예제 #2
0
        public RemodelingChkResult ValidRemodeling(int ship_rid, out int reqDrawingNum)
        {
            Mem_ship value = null;

            reqDrawingNum = 0;
            if (!Comm_UserDatas.Instance.User_ship.TryGetValue(ship_rid, out value))
            {
                return(RemodelingChkResult.Invalid);
            }
            Mem_deck mem_deck = Comm_UserDatas.Instance.User_deck.Values.FirstOrDefault((Mem_deck x) => (x.Ship.Find(ship_rid) != -1) ? true : false);

            if (mem_deck != null)
            {
                if (mem_deck.MissionState != 0)
                {
                    return(RemodelingChkResult.Mission);
                }
                if (mem_deck.IsActionEnd)
                {
                    return(RemodelingChkResult.ActionEndDeck);
                }
            }
            if (Comm_UserDatas.Instance.User_ndock.Values.Any((Mem_ndock x) => x.Ship_id == ship_rid))
            {
                return(RemodelingChkResult.Repair);
            }
            Mst_ship mst_ship = Mst_DataManager.Instance.Mst_ship[value.Ship_id];

            if (mst_ship.Aftershipid <= 0)
            {
                return(RemodelingChkResult.Invalid);
            }
            if (value.Level < mst_ship.Afterlv)
            {
                return(RemodelingChkResult.Level);
            }
            if (value.IsBlingShip())
            {
                return(RemodelingChkResult.BlingShip);
            }
            Mst_shipupgrade value2 = null;

            if (Mst_DataManager.Instance.Mst_upgrade.TryGetValue(mst_ship.Aftershipid, out value2))
            {
                reqDrawingNum = value2.Drawing_count;
            }
            if (value.Ship_id == 466 || value.Ship_id == 467)
            {
                reqDrawingNum = 0;
            }
            if (reqDrawingNum > 0)
            {
                Mem_useitem value3 = null;
                if (!Comm_UserDatas.Instance.User_useItem.TryGetValue(58, out value3))
                {
                    return(RemodelingChkResult.Drawing);
                }
                if (value3.Value < reqDrawingNum)
                {
                    return(RemodelingChkResult.Drawing);
                }
            }
            if (Comm_UserDatas.Instance.User_material[enumMaterialCategory.Steel].Value < mst_ship.Afterfuel)
            {
                return(RemodelingChkResult.Steel);
            }
            if (Comm_UserDatas.Instance.User_material[enumMaterialCategory.Bull].Value < mst_ship.Afterbull)
            {
                return(RemodelingChkResult.Bull);
            }
            int remodelDevKitNum = mst_ship.GetRemodelDevKitNum();

            if (Comm_UserDatas.Instance.User_material[enumMaterialCategory.Dev_Kit].Value < remodelDevKitNum)
            {
                return(RemodelingChkResult.Invalid);
            }
            return(RemodelingChkResult.OK);
        }