thewar_server/Server/Service/EquipChange.cs

163 lines
6.0 KiB
C#

using Server.System;
using Newtonsoft.Json;
using Server.SQL;
namespace Server.Service
{
public class EquipChange : AbstractService
{
private EquipChangeReq req;
public void SaveSQL()
{
Statics.equipmentrSQL.SaveChanges();
Statics.deckUnitInfoSQL.SaveChanges();
}
public override string Process()
{
User user = Statics.userSQL.SelectUuid(req.uuid);
Equipment equipment = Statics.equipmentrSQL.SelectItem(user.id, req.equipment_id);
DeckUnitInfo deckUnitInfo = Statics.deckUnitInfoSQL.SelectItem(user.id, req.unit_id);
Equipment equipitem = null;
if (equipment == null || deckUnitInfo == null)
{
throw new RuntimeException("Not Data", Error.nodata);
}
EquipmentData equipmentData = Statics.equipmentExcel.getEquipmentData(equipment.equipment_data_id);
if (req.is_equipment)
{
switch (equipmentData.part)
{
case 0:
if (deckUnitInfo.equip0_id != 0)
{
equipitem = Statics.equipmentrSQL.SelectItem(user.id, deckUnitInfo.equip0_id);
equipitem.equip_unit = 0;
Statics.equipmentrSQL.Update(equipitem);
}
deckUnitInfo.equip0_id = equipment.id;
break;
case 1:
if (deckUnitInfo.equip1_id != 0)
{
equipitem = Statics.equipmentrSQL.SelectItem(user.id, deckUnitInfo.equip1_id);
equipitem.equip_unit = 0;
Statics.equipmentrSQL.Update(equipitem);
}
deckUnitInfo.equip1_id = equipment.id;
break;
case 2:
if (deckUnitInfo.equip2_id != 0)
{
equipitem = Statics.equipmentrSQL.SelectItem(user.id, deckUnitInfo.equip2_id);
equipitem.equip_unit = 0;
Statics.equipmentrSQL.Update(equipitem);
}
deckUnitInfo.equip2_id = equipment.id;
break;
case 3:
if (deckUnitInfo.equip3_id != 0)
{
equipitem = Statics.equipmentrSQL.SelectItem(user.id, deckUnitInfo.equip3_id);
equipitem.equip_unit = 0;
Statics.equipmentrSQL.Update(equipitem);
}
deckUnitInfo.equip3_id = equipment.id;
break;
case 4:
if (deckUnitInfo.equip4_id != 0)
{
equipitem = Statics.equipmentrSQL.SelectItem(user.id, deckUnitInfo.equip4_id);
equipitem.equip_unit = 0;
Statics.equipmentrSQL.Update(equipitem);
}
deckUnitInfo.equip4_id = equipment.id;
break;
case 5:
if (deckUnitInfo.equip5_id != 0)
{
equipitem = Statics.equipmentrSQL.SelectItem(user.id, deckUnitInfo.equip5_id);
equipitem.equip_unit = 0;
Statics.equipmentrSQL.Update(equipitem);
}
deckUnitInfo.equip5_id = equipment.id;
break;
}
equipment.equip_unit = deckUnitInfo.id;
}
else
{
equipment.equip_unit = 0;
switch (equipmentData.part)
{
case 0:
deckUnitInfo.equip0_id = 0;
break;
case 1:
deckUnitInfo.equip1_id = 0;
break;
case 2:
deckUnitInfo.equip2_id = 0;
break;
case 3:
deckUnitInfo.equip3_id = 0;
break;
case 4:
deckUnitInfo.equip4_id = 0;
break;
case 5:
deckUnitInfo.equip5_id = 0;
break;
}
}
Statics.equipmentrSQL.Update(equipment);
Statics.deckUnitInfoSQL.Update(deckUnitInfo);
return makeResp(equipment, deckUnitInfo, equipitem);
}
public override Protocol ProtocolValue() => Protocol.EquipChange;
public override Req Requst(string json)
{
req = JsonConvert.DeserializeObject<EquipChangeReq>(json);
return req;
}
private string makeResp(Equipment equipment, DeckUnitInfo deck_unit_info, Equipment change_equipment)
{
SaveSQL();
EquipChangeResp resp = new EquipChangeResp();
resp.status = 200;
resp.equipment = equipment;
resp.deck_unit_info = deck_unit_info;
resp.change_equipment = change_equipment;
return resp.ToJson();
}
}
public class EquipChangeReq : Req
{
public string uuid;
public long unit_id;
public long equipment_id;
public bool is_equipment;
public override bool IsReceivedAllField()
{
if(uuid == "" || unit_id == 0 || equipment_id == 0)
return false;
return true;
}
}
public class EquipChangeResp : Resp
{
public Equipment equipment;
public Equipment change_equipment;
public DeckUnitInfo deck_unit_info;
}
}