Пример #1
0
        public Api_Result <SlotSetChkResult_Slot> SlotSet(int ship_rid, int slot_rid)
        {
            Api_Result <SlotSetChkResult_Slot> api_Result = new Api_Result <SlotSetChkResult_Slot>();
            SlotSetChkResult_Slot slotSetChkResult_Slot   = this.IsValidSlotSet(ship_rid, slot_rid);

            if (slotSetChkResult_Slot != SlotSetChkResult_Slot.Ok)
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                api_Result.data  = slotSetChkResult_Slot;
                return(api_Result);
            }
            Mem_ship     mem_ship     = Comm_UserDatas.Instance.User_ship.get_Item(ship_rid);
            Mem_slotitem mem_slotitem = null;

            Comm_UserDatas.Instance.User_slot.TryGetValue(slot_rid, ref mem_slotitem);
            Mem_shipBase mem_shipBase  = new Mem_shipBase(mem_ship);
            Mem_slotitem mem_slotitem2 = null;

            Comm_UserDatas.Instance.User_slot.TryGetValue(mem_ship.Exslot, ref mem_slotitem2);
            mem_shipBase.Exslot = slot_rid;
            if (mem_slotitem2 != null)
            {
                mem_slotitem2.UnEquip();
            }
            if (slot_rid != -1)
            {
                mem_slotitem.Equip(ship_rid);
            }
            mem_ship.Set_ShipParam(mem_shipBase, Mst_DataManager.Instance.Mst_ship.get_Item(mem_shipBase.Ship_id), false);
            return(api_Result);
        }
Пример #2
0
        public Api_Result <SlotSetChkResult_Slot> SlotSet(int ship_rid, int slot_rid)
        {
            Api_Result <SlotSetChkResult_Slot> api_Result = new Api_Result <SlotSetChkResult_Slot>();
            SlotSetChkResult_Slot slotSetChkResult_Slot   = IsValidSlotSet(ship_rid, slot_rid);

            if (slotSetChkResult_Slot != 0)
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                api_Result.data  = slotSetChkResult_Slot;
                return(api_Result);
            }
            Mem_ship     mem_ship = Comm_UserDatas.Instance.User_ship[ship_rid];
            Mem_slotitem value    = null;

            Comm_UserDatas.Instance.User_slot.TryGetValue(slot_rid, out value);
            Mem_shipBase mem_shipBase = new Mem_shipBase(mem_ship);
            Mem_slotitem value2       = null;

            Comm_UserDatas.Instance.User_slot.TryGetValue(mem_ship.Exslot, out value2);
            mem_shipBase.Exslot = slot_rid;
            value2?.UnEquip();
            if (slot_rid != -1)
            {
                value.Equip(ship_rid);
            }
            mem_ship.Set_ShipParam(mem_shipBase, Mst_DataManager.Instance.Mst_ship[mem_shipBase.Ship_id], enemy_flag: false);
            return(api_Result);
        }
Пример #3
0
        public Api_Result <Mem_ship> Remodeling(int ship_rid, int drawingNum)
        {
            Api_Result <Mem_ship> api_Result = new Api_Result <Mem_ship>();
            Mem_ship mem_ship = null;

            if (!Comm_UserDatas.Instance.User_ship.TryGetValue(ship_rid, ref mem_ship))
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                return(api_Result);
            }
            if (mem_ship.IsBlingShip())
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                return(api_Result);
            }
            Mst_ship     mst_ship     = Mst_DataManager.Instance.Mst_ship.get_Item(mem_ship.Ship_id);
            int          aftershipid  = Mst_DataManager.Instance.Mst_ship.get_Item(mem_ship.Ship_id).Aftershipid;
            Mst_ship     mst_ship2    = Mst_DataManager.Instance.Mst_ship.get_Item(aftershipid);
            Mem_shipBase mem_shipBase = new Mem_shipBase(mem_ship);
            Dictionary <Mem_ship.enumKyoukaIdx, int> dictionary = new Dictionary <Mem_ship.enumKyoukaIdx, int>();

            dictionary.Add(Mem_ship.enumKyoukaIdx.Houg, mst_ship2.Houg);
            dictionary.Add(Mem_ship.enumKyoukaIdx.Raig, mst_ship2.Raig);
            dictionary.Add(Mem_ship.enumKyoukaIdx.Souk, mst_ship2.Souk);
            dictionary.Add(Mem_ship.enumKyoukaIdx.Tyku, mst_ship2.Tyku);
            Dictionary <Mem_ship.enumKyoukaIdx, int> dictionary2 = dictionary;

            dictionary = new Dictionary <Mem_ship.enumKyoukaIdx, int>();
            dictionary.Add(Mem_ship.enumKyoukaIdx.Houg, mst_ship2.Houg_max);
            dictionary.Add(Mem_ship.enumKyoukaIdx.Raig, mst_ship2.Raig_max);
            dictionary.Add(Mem_ship.enumKyoukaIdx.Souk, mst_ship2.Souk_max);
            dictionary.Add(Mem_ship.enumKyoukaIdx.Tyku, mst_ship2.Tyku_max);
            Dictionary <Mem_ship.enumKyoukaIdx, int> dictionary3 = dictionary;
            Dictionary <Mem_ship.enumKyoukaIdx, int> kyouka      = mem_ship.Kyouka;
            Random random = new Random();

            using (Dictionary <Mem_ship.enumKyoukaIdx, int> .Enumerator enumerator = dictionary2.GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    KeyValuePair <Mem_ship.enumKyoukaIdx, int> current = enumerator.get_Current();
                    int    num  = dictionary2.get_Item(current.get_Key());
                    int    num2 = dictionary3.get_Item(current.get_Key());
                    int    num3 = num2 - num;
                    double num4 = (double)num3 * (0.4 + 0.4 * (double)random.Next(2)) * (double)mem_ship.Level / 99.0;
                    int    num5 = (int)Math.Ceiling(num4);
                    kyouka.set_Item(current.get_Key(), num5);
                    if (num2 < kyouka.get_Item(current.get_Key()) + num)
                    {
                        kyouka.set_Item(current.get_Key(), num2 - num);
                    }
                }
            }
            if (kyouka.get_Item(Mem_ship.enumKyoukaIdx.Luck) + mst_ship2.Luck > mst_ship2.Luck_max)
            {
                kyouka.set_Item(Mem_ship.enumKyoukaIdx.Luck, mst_ship2.Luck_max - mst_ship2.Luck);
            }
            kyouka.set_Item(Mem_ship.enumKyoukaIdx.Taik_Powerup, 0);
            mem_shipBase.C_taik_powerup = 0;
            if (mem_shipBase.Level >= 100)
            {
                int remodelingTaik = this.getRemodelingTaik(mst_ship2.Taik);
                int num6           = mst_ship2.Taik + remodelingTaik;
                if (num6 > mst_ship2.Taik_max)
                {
                    num6 = mst_ship2.Taik_max;
                }
                kyouka.set_Item(Mem_ship.enumKyoukaIdx.Taik, num6 - mst_ship2.Taik);
            }
            List <int> list = Comm_UserDatas.Instance.Add_Slot(mst_ship2.Defeq);

            mem_shipBase.Slot.ForEach(delegate(int x)
            {
                if (x > 0)
                {
                    Comm_UserDatas.Instance.User_slot.get_Item(x).UnEquip();
                }
            });
            if (mem_ship.Exslot > 0)
            {
                Comm_UserDatas.Instance.User_slot.get_Item(mem_ship.Exslot).UnEquip();
                mem_shipBase.Exslot = -1;
            }
            mem_shipBase.Slot.Clear();
            mem_shipBase.Onslot.Clear();
            for (int i = 0; i < mst_ship2.Slot_num; i++)
            {
                if (list.get_Count() > i)
                {
                    mem_shipBase.Slot.Add(list.get_Item(i));
                    Mem_slotitem mem_slotitem = Comm_UserDatas.Instance.User_slot.get_Item(list.get_Item(i));
                    mem_slotitem.Equip(mem_shipBase.Rid);
                }
                else
                {
                    mem_shipBase.Slot.Add(mst_ship2.Defeq.get_Item(i));
                }
                mem_shipBase.Onslot.Add(mst_ship2.Maxeq.get_Item(i));
            }
            mem_shipBase.Nowhp = kyouka.get_Item(Mem_ship.enumKyoukaIdx.Taik) + mst_ship2.Taik;
            mem_shipBase.Fuel  = mst_ship2.Fuel_max;
            mem_shipBase.Bull  = mst_ship2.Bull_max;
            mem_shipBase.Cond  = 40;
            mem_shipBase.SetKyoukaValue(kyouka);
            mem_ship.Set_ShipParam(mem_shipBase, mst_ship2, false);
            mem_ship.SumLovToRemodeling();
            if (drawingNum > 0)
            {
                Comm_UserDatas.Instance.User_useItem.get_Item(58).Sub_UseItem(drawingNum);
            }
            int remodelDevKitNum = mst_ship2.GetRemodelDevKitNum();

            if (remodelDevKitNum > 0)
            {
                Comm_UserDatas.Instance.User_material.get_Item(enumMaterialCategory.Dev_Kit).Sub_Material(remodelDevKitNum);
            }
            Comm_UserDatas.Instance.User_material.get_Item(enumMaterialCategory.Steel).Sub_Material(mst_ship.Afterfuel);
            Comm_UserDatas.Instance.User_material.get_Item(enumMaterialCategory.Bull).Sub_Material(mst_ship.Afterbull);
            Comm_UserDatas.Instance.Add_Book(1, mem_ship.Ship_id);
            api_Result.data = mem_ship;
            return(api_Result);
        }
Пример #4
0
        public Api_Result <SlotSetChkResult_Slot> SlotSet(int ship_rid, int slot_rid, int equip_idx)
        {
            Api_Result <SlotSetChkResult_Slot> api_Result = new Api_Result <SlotSetChkResult_Slot>();
            SlotSetChkResult_Slot slotSetChkResult_Slot   = this.IsValidSlotSet(ship_rid, slot_rid, equip_idx);

            if (slotSetChkResult_Slot != SlotSetChkResult_Slot.Ok)
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                api_Result.data  = slotSetChkResult_Slot;
                return(api_Result);
            }
            Mem_ship     mem_ship     = Comm_UserDatas.Instance.User_ship.get_Item(ship_rid);
            Mem_slotitem mem_slotitem = null;

            Comm_UserDatas.Instance.User_slot.TryGetValue(slot_rid, ref mem_slotitem);
            int num = mem_ship.Slot.FindIndex((int x) => x == -1);

            if (num != -1 && num < equip_idx)
            {
                equip_idx = num;
            }
            Mem_shipBase mem_shipBase  = new Mem_shipBase(mem_ship);
            Mem_slotitem mem_slotitem2 = null;

            Comm_UserDatas.Instance.User_slot.TryGetValue(mem_ship.Slot.get_Item(equip_idx), ref mem_slotitem2);
            int preCost   = 0;
            int afterCost = 0;
            OnslotChangeType slotChangeCost = Mst_slotitem_cost.GetSlotChangeCost(mem_ship.Slot.get_Item(equip_idx), slot_rid, out preCost, out afterCost);
            int num2 = mem_ship.Onslot.get_Item(equip_idx);

            if (slotChangeCost == OnslotChangeType.OtherToPlane)
            {
                num2 = Mst_DataManager.Instance.Mst_ship.get_Item(mem_ship.Ship_id).Maxeq.get_Item(equip_idx);
            }
            int slotChangeBauxiteNum = Mst_slotitem_cost.GetSlotChangeBauxiteNum(slotChangeCost, preCost, afterCost, num2);

            if (slotChangeBauxiteNum < 0)
            {
                if (slotChangeCost == OnslotChangeType.PlaneToPlane)
                {
                    api_Result.data = SlotSetChkResult_Slot.OkBauxiteUseHighCost;
                }
                else if (slotChangeCost == OnslotChangeType.OtherToPlane)
                {
                    api_Result.data = SlotSetChkResult_Slot.OkBauxiteUse;
                    mem_shipBase.Onslot.set_Item(equip_idx, num2);
                }
                Comm_UserDatas.Instance.User_material.get_Item(enumMaterialCategory.Bauxite).Sub_Material(Math.Abs(slotChangeBauxiteNum));
            }
            else
            {
                if (slotChangeCost == OnslotChangeType.PlaneOther)
                {
                    mem_shipBase.Onslot.set_Item(equip_idx, 0);
                }
                api_Result.data = SlotSetChkResult_Slot.Ok;
                Comm_UserDatas.Instance.User_material.get_Item(enumMaterialCategory.Bauxite).Add_Material(slotChangeBauxiteNum);
            }
            mem_shipBase.Slot.set_Item(equip_idx, slot_rid);
            if (mem_slotitem2 != null)
            {
                mem_slotitem2.UnEquip();
            }
            if (slot_rid != -1)
            {
                mem_slotitem.Equip(ship_rid);
            }
            mem_ship.Set_ShipParam(mem_shipBase, Mst_DataManager.Instance.Mst_ship.get_Item(mem_shipBase.Ship_id), false);
            if (slot_rid == -1)
            {
                mem_ship.TrimSlot();
            }
            return(api_Result);
        }
Пример #5
0
        public Api_Result <Mem_ship> Remodeling(int ship_rid, int drawingNum)
        {
            Api_Result <Mem_ship> api_Result = new Api_Result <Mem_ship>();
            Mem_ship value = null;

            if (!Comm_UserDatas.Instance.User_ship.TryGetValue(ship_rid, out value))
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                return(api_Result);
            }
            if (value.IsBlingShip())
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                return(api_Result);
            }
            Mst_ship     mst_ship     = Mst_DataManager.Instance.Mst_ship[value.Ship_id];
            int          aftershipid  = Mst_DataManager.Instance.Mst_ship[value.Ship_id].Aftershipid;
            Mst_ship     mst_ship2    = Mst_DataManager.Instance.Mst_ship[aftershipid];
            Mem_shipBase mem_shipBase = new Mem_shipBase(value);
            Dictionary <Mem_ship.enumKyoukaIdx, int> dictionary = new Dictionary <Mem_ship.enumKyoukaIdx, int>();

            dictionary.Add(Mem_ship.enumKyoukaIdx.Houg, mst_ship2.Houg);
            dictionary.Add(Mem_ship.enumKyoukaIdx.Raig, mst_ship2.Raig);
            dictionary.Add(Mem_ship.enumKyoukaIdx.Souk, mst_ship2.Souk);
            dictionary.Add(Mem_ship.enumKyoukaIdx.Tyku, mst_ship2.Tyku);
            Dictionary <Mem_ship.enumKyoukaIdx, int> dictionary2 = dictionary;

            dictionary = new Dictionary <Mem_ship.enumKyoukaIdx, int>();
            dictionary.Add(Mem_ship.enumKyoukaIdx.Houg, mst_ship2.Houg_max);
            dictionary.Add(Mem_ship.enumKyoukaIdx.Raig, mst_ship2.Raig_max);
            dictionary.Add(Mem_ship.enumKyoukaIdx.Souk, mst_ship2.Souk_max);
            dictionary.Add(Mem_ship.enumKyoukaIdx.Tyku, mst_ship2.Tyku_max);
            Dictionary <Mem_ship.enumKyoukaIdx, int> dictionary3 = dictionary;
            Dictionary <Mem_ship.enumKyoukaIdx, int> kyouka      = value.Kyouka;
            Random random = new Random();

            foreach (KeyValuePair <Mem_ship.enumKyoukaIdx, int> item in dictionary2)
            {
                int    num    = dictionary2[item.Key];
                int    num2   = dictionary3[item.Key];
                int    num3   = num2 - num;
                double a      = (double)num3 * (0.4 + 0.4 * (double)random.Next(2)) * (double)value.Level / 99.0;
                int    value2 = (int)Math.Ceiling(a);
                kyouka[item.Key] = value2;
                if (num2 < kyouka[item.Key] + num)
                {
                    kyouka[item.Key] = num2 - num;
                }
            }
            if (kyouka[Mem_ship.enumKyoukaIdx.Luck] + mst_ship2.Luck > mst_ship2.Luck_max)
            {
                kyouka[Mem_ship.enumKyoukaIdx.Luck] = mst_ship2.Luck_max - mst_ship2.Luck;
            }
            kyouka[Mem_ship.enumKyoukaIdx.Taik_Powerup] = 0;
            mem_shipBase.C_taik_powerup = 0;
            if (mem_shipBase.Level >= 100)
            {
                int remodelingTaik = getRemodelingTaik(mst_ship2.Taik);
                int num4           = mst_ship2.Taik + remodelingTaik;
                if (num4 > mst_ship2.Taik_max)
                {
                    num4 = mst_ship2.Taik_max;
                }
                kyouka[Mem_ship.enumKyoukaIdx.Taik] = num4 - mst_ship2.Taik;
            }
            List <int> list = Comm_UserDatas.Instance.Add_Slot(mst_ship2.Defeq);

            mem_shipBase.Slot.ForEach(delegate(int x)
            {
                if (x > 0)
                {
                    Comm_UserDatas.Instance.User_slot[x].UnEquip();
                }
            });
            if (value.Exslot > 0)
            {
                Comm_UserDatas.Instance.User_slot[value.Exslot].UnEquip();
                mem_shipBase.Exslot = -1;
            }
            mem_shipBase.Slot.Clear();
            mem_shipBase.Onslot.Clear();
            for (int i = 0; i < mst_ship2.Slot_num; i++)
            {
                if (list.Count > i)
                {
                    mem_shipBase.Slot.Add(list[i]);
                    Mem_slotitem mem_slotitem = Comm_UserDatas.Instance.User_slot[list[i]];
                    mem_slotitem.Equip(mem_shipBase.Rid);
                }
                else
                {
                    mem_shipBase.Slot.Add(mst_ship2.Defeq[i]);
                }
                mem_shipBase.Onslot.Add(mst_ship2.Maxeq[i]);
            }
            mem_shipBase.Nowhp = kyouka[Mem_ship.enumKyoukaIdx.Taik] + mst_ship2.Taik;
            mem_shipBase.Fuel  = mst_ship2.Fuel_max;
            mem_shipBase.Bull  = mst_ship2.Bull_max;
            mem_shipBase.Cond  = 40;
            mem_shipBase.SetKyoukaValue(kyouka);
            value.Set_ShipParam(mem_shipBase, mst_ship2, enemy_flag: false);
            value.SumLovToRemodeling();
            if (drawingNum > 0)
            {
                Comm_UserDatas.Instance.User_useItem[58].Sub_UseItem(drawingNum);
            }
            int remodelDevKitNum = mst_ship2.GetRemodelDevKitNum();

            if (remodelDevKitNum > 0)
            {
                Comm_UserDatas.Instance.User_material[enumMaterialCategory.Dev_Kit].Sub_Material(remodelDevKitNum);
            }
            Comm_UserDatas.Instance.User_material[enumMaterialCategory.Steel].Sub_Material(mst_ship.Afterfuel);
            Comm_UserDatas.Instance.User_material[enumMaterialCategory.Bull].Sub_Material(mst_ship.Afterbull);
            Comm_UserDatas.Instance.Add_Book(1, value.Ship_id);
            api_Result.data = value;
            return(api_Result);
        }
Пример #6
0
        public Api_Result <SlotSetChkResult_Slot> SlotSet(int ship_rid, int slot_rid, int equip_idx)
        {
            Api_Result <SlotSetChkResult_Slot> api_Result = new Api_Result <SlotSetChkResult_Slot>();
            SlotSetChkResult_Slot slotSetChkResult_Slot   = IsValidSlotSet(ship_rid, slot_rid, equip_idx);

            if (slotSetChkResult_Slot != 0)
            {
                api_Result.state = Api_Result_State.Parameter_Error;
                api_Result.data  = slotSetChkResult_Slot;
                return(api_Result);
            }
            Mem_ship     mem_ship = Comm_UserDatas.Instance.User_ship[ship_rid];
            Mem_slotitem value    = null;

            Comm_UserDatas.Instance.User_slot.TryGetValue(slot_rid, out value);
            int num = mem_ship.Slot.FindIndex((int x) => x == -1);

            if (num != -1 && num < equip_idx)
            {
                equip_idx = num;
            }
            Mem_shipBase mem_shipBase = new Mem_shipBase(mem_ship);
            Mem_slotitem value2       = null;

            Comm_UserDatas.Instance.User_slot.TryGetValue(mem_ship.Slot[equip_idx], out value2);
            int preCost   = 0;
            int afterCost = 0;
            OnslotChangeType slotChangeCost = Mst_slotitem_cost.GetSlotChangeCost(mem_ship.Slot[equip_idx], slot_rid, out preCost, out afterCost);
            int num2 = mem_ship.Onslot[equip_idx];

            if (slotChangeCost == OnslotChangeType.OtherToPlane)
            {
                num2 = Mst_DataManager.Instance.Mst_ship[mem_ship.Ship_id].Maxeq[equip_idx];
            }
            int slotChangeBauxiteNum = Mst_slotitem_cost.GetSlotChangeBauxiteNum(slotChangeCost, preCost, afterCost, num2);

            if (slotChangeBauxiteNum < 0)
            {
                switch (slotChangeCost)
                {
                case OnslotChangeType.PlaneToPlane:
                    api_Result.data = SlotSetChkResult_Slot.OkBauxiteUseHighCost;
                    break;

                case OnslotChangeType.OtherToPlane:
                    api_Result.data = SlotSetChkResult_Slot.OkBauxiteUse;
                    mem_shipBase.Onslot[equip_idx] = num2;
                    break;
                }
                Comm_UserDatas.Instance.User_material[enumMaterialCategory.Bauxite].Sub_Material(Math.Abs(slotChangeBauxiteNum));
            }
            else
            {
                if (slotChangeCost == OnslotChangeType.PlaneOther)
                {
                    mem_shipBase.Onslot[equip_idx] = 0;
                }
                api_Result.data = SlotSetChkResult_Slot.Ok;
                Comm_UserDatas.Instance.User_material[enumMaterialCategory.Bauxite].Add_Material(slotChangeBauxiteNum);
            }
            mem_shipBase.Slot[equip_idx] = slot_rid;
            value2?.UnEquip();
            if (slot_rid != -1)
            {
                value.Equip(ship_rid);
            }
            mem_ship.Set_ShipParam(mem_shipBase, Mst_DataManager.Instance.Mst_ship[mem_shipBase.Ship_id], enemy_flag: false);
            if (slot_rid == -1)
            {
                mem_ship.TrimSlot();
            }
            return(api_Result);
        }