thewar_server/Server/Service/EquipChange.cs

92 lines
2.9 KiB
C#

using Server.System;
using Newtonsoft.Json;
using Server.SQL;
namespace Server.Service
{
public class EquipChange : AbstractService
{
private EquipChangeReq req;
public override string Process()
{
//문제 1 장비 장착 저장이 안됨.
//문제 2 기존에 장비가 있다면 신규 장비로 교체가 되야함.
UserSQL userSQL = new UserSQL();
EquipmentrSQL equipmentrSQL = new EquipmentrSQL();
DeckUnitInfoSQL deckUnitInfoSQL = new DeckUnitInfoSQL();
User user = userSQL.SelectUuid(req.uuid);
Equipment equipment = equipmentrSQL.SelectItem(user.id, req.equipment_id);
DeckUnitInfo deckUnitInfo = deckUnitInfoSQL.SelectItem(user.id, req.unit_id);
if(equipment == null || deckUnitInfo == null)
{
throw new RuntimeException("Not Data", Error.nodata);
}
EquipmentData equipmentData = Statics.equipmentData[equipment.equipment_data_id];
switch (equipmentData.part)
{
case 0:
deckUnitInfo.equip0_id = equipment.id;
break;
case 1:
deckUnitInfo.equip1_id = equipment.id;
break;
case 2:
deckUnitInfo.equip2_id = equipment.id;
break;
case 3:
deckUnitInfo.equip3_id = equipment.id;
break;
case 4:
deckUnitInfo.equip4_id = equipment.id;
break;
case 5:
deckUnitInfo.equip5_id = equipment.id;
break;
}
equipment.equip_unit = deckUnitInfo.id;
equipmentrSQL.Update(equipment);
deckUnitInfoSQL.Update(deckUnitInfo);
return makeResp(equipment, deckUnitInfo);
}
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)
{
EquipChangeResp resp = new EquipChangeResp();
resp.status = 200;
resp.equipment = equipment;
resp.deck_unit_info = deck_unit_info;
return resp.ToJson();
}
}
public class EquipChangeReq : Req
{
public string uuid;
public long unit_id;
public long equipment_id;
public override bool IsReceivedAllField()
{
return true;
}
}
public class EquipChangeResp : Resp
{
public Equipment equipment;
public DeckUnitInfo deck_unit_info;
}
}