private bool _Supply(Api_req_Hokyu.enumHokyuType type) { Api_Result <bool> api_Result = new Api_req_Hokyu().Charge(_checked_ships, type); if (api_Result.state == Api_Result_State.Success) { _checked_ships = new List <int>(); for (int i = 0; i < _target_ships.Count; i++) { _checkbox_states[i] = _GetCheckBoxStatus(_target_ships[i], _selected_deck); } _CalcMaterialForSupply(); _SetCheckBoxAllState(); return(api_Result.data); } return(false); }
private bool ChargeDataSet(Api_req_Hokyu.enumHokyuType type, Mem_ship m_ship) { enumMaterialCategory enumMaterialCategory; int value; int num2; int fuel; int bull; if (type == Api_req_Hokyu.enumHokyuType.Fuel) { enumMaterialCategory = enumMaterialCategory.Fuel; int num = Mst_DataManager.Instance.Mst_ship.get_Item(m_ship.Ship_id).Fuel_max; value = Comm_UserDatas.Instance.User_material.get_Item(enumMaterialCategory).Value; num2 = m_ship.GetRequireChargeFuel(); fuel = num; bull = m_ship.Bull; } else { if (type != Api_req_Hokyu.enumHokyuType.Bull) { return(true); } enumMaterialCategory = enumMaterialCategory.Bull; int num = Mst_DataManager.Instance.Mst_ship.get_Item(m_ship.Ship_id).Bull_max; value = Comm_UserDatas.Instance.User_material.get_Item(enumMaterialCategory).Value; num2 = m_ship.GetRequireChargeBull(); fuel = m_ship.Fuel; bull = num; } if (value <= 0) { return(false); } if (num2 == 0) { return(true); } if (num2 > value) { return(true); } Comm_UserDatas.Instance.User_material.get_Item(enumMaterialCategory).Sub_Material(num2); m_ship.Set_ChargeData(bull, fuel, null); return(true); }
private HashSet <int> ChargeDataSet_Onslot(Api_req_Hokyu.enumHokyuType type, Mem_ship m_ship) { enumMaterialCategory enumMaterialCategory = enumMaterialCategory.Bauxite; int value = Comm_UserDatas.Instance.User_material.get_Item(enumMaterialCategory).Value; HashSet <int> hashSet = new HashSet <int>(); List <int> onslot; if (value == 0) { int num = 100; int requireUseBauxiteNum = this.GetRequireUseBauxiteNum(m_ship, ref num, out onslot); if (requireUseBauxiteNum > 0) { hashSet.Add(-2); } hashSet.Add(-1); return(hashSet); } int requireUseBauxiteNum2 = this.GetRequireUseBauxiteNum(m_ship, ref value, out onslot); m_ship.Set_ChargeData(m_ship.Bull, m_ship.Fuel, onslot); Comm_UserDatas.Instance.User_material.get_Item(enumMaterialCategory).Sub_Material(requireUseBauxiteNum2); List <int> maxeq = Mst_DataManager.Instance.Mst_ship.get_Item(m_ship.Ship_id).Maxeq; for (int i = 0; i < m_ship.Slotnum; i++) { if (maxeq.get_Item(i) > 0) { if (maxeq.get_Item(i) != m_ship.Onslot.get_Item(i)) { hashSet.Add(-2); } } } return(hashSet); }
public Api_Result <bool> Charge(List <int> ship_rids, Api_req_Hokyu.enumHokyuType type) { Api_Result <bool> rslt = new Api_Result <bool>(); rslt.data = false; if (ship_rids == null || ship_rids.get_Count() == 0) { rslt.state = Api_Result_State.Parameter_Error; return(rslt); } List <Mem_ship> ships = new List <Mem_ship>(); ship_rids.ForEach(delegate(int x) { Mem_ship mem_ship = null; if (!Comm_UserDatas.Instance.User_ship.TryGetValue(x, ref mem_ship)) { rslt.state = Api_Result_State.Parameter_Error; return; } ships.Add(mem_ship); }); if (rslt.state == Api_Result_State.Parameter_Error) { ships.Clear(); return(rslt); } HashSet <int> hashSet = new HashSet <int>(); int num = 0; using (List <Mem_ship> .Enumerator enumerator = ships.GetEnumerator()) { while (enumerator.MoveNext()) { Mem_ship current = enumerator.get_Current(); if (Mst_DataManager.Instance.Mst_ship.ContainsKey(current.Ship_id)) { int fuel = current.Fuel; int bull = current.Bull; if (type == Api_req_Hokyu.enumHokyuType.Fuel || type == Api_req_Hokyu.enumHokyuType.Bull) { bool flag = this.ChargeDataSet(type, current); if (bull < current.Bull || fuel < current.Fuel) { current.SumLovToCharge(); num++; } HashSet <int> hashSet2 = this.ChargeDataSet_Onslot(Api_req_Hokyu.enumHokyuType.All, current); using (HashSet <int> .Enumerator enumerator2 = hashSet2.GetEnumerator()) { while (enumerator2.MoveNext()) { int current2 = enumerator2.get_Current(); hashSet.Add(current2); } } if (!flag && hashSet2.Contains(-1)) { break; } } else if (type == Api_req_Hokyu.enumHokyuType.All) { bool flag2 = this.ChargeDataSet(Api_req_Hokyu.enumHokyuType.Bull, current); bool flag3 = this.ChargeDataSet(Api_req_Hokyu.enumHokyuType.Fuel, current); HashSet <int> hashSet3 = this.ChargeDataSet_Onslot(Api_req_Hokyu.enumHokyuType.All, current); if (bull < current.Bull || fuel < current.Fuel) { current.SumLovToCharge(); num++; } using (HashSet <int> .Enumerator enumerator3 = hashSet3.GetEnumerator()) { while (enumerator3.MoveNext()) { int current3 = enumerator3.get_Current(); hashSet.Add(current3); } } if (!flag2 && !flag3 && hashSet3.Contains(-1)) { break; } } } } } if (hashSet.Contains(-2)) { rslt.data = false; } else { rslt.data = true; } QuestSupply questSupply = new QuestSupply(num); questSupply.ExecuteCheck(); return(rslt); }