mirror of https://github.com/hykilpikonna/AquaDX
[DIVA] Use the old stage counting method to fix continue stage not saving
parent
161f258603
commit
8d3d40f838
|
@ -61,8 +61,6 @@ public class StageResultHandler extends BaseHandler {
|
|||
int[] pvIds = request.getStg_ply_pv_id();
|
||||
int stageIndex = session.getStageIndex();
|
||||
|
||||
// Only save to database when stage index is larger than stage result index to prevent duplicate request.
|
||||
if(stageIndex > session.getStageResultIndex()) {
|
||||
|
||||
// Convert to play log object
|
||||
PlayLog log = getLog(request, profile, stageIndex);
|
||||
|
@ -98,13 +96,12 @@ public class StageResultHandler extends BaseHandler {
|
|||
session.setLevelNumber(levelInfo.getLevelNumber());
|
||||
session.setLevelExp(levelInfo.getLevelExp());
|
||||
|
||||
session.setStageResultIndex(session.getStageResultIndex() + 1);
|
||||
session.setStageResultIndex(stageIndex);
|
||||
|
||||
pvRecordRepository.save(record);
|
||||
playLogRepository.save(log);
|
||||
gameSessionRepository.save(session);
|
||||
|
||||
}
|
||||
|
||||
response = new StageResultResponse(
|
||||
request.getCmd(),
|
||||
|
|
|
@ -36,12 +36,22 @@ public class StageStartHandler extends BaseHandler {
|
|||
PlayerProfile profile = profileRepository.findByPdId(request.getPd_id()).orElseThrow(ProfileNotFoundException::new);
|
||||
GameSession session = gameSessionRepository.findByPdId(profile).orElseThrow(SessionNotFoundException::new);
|
||||
|
||||
if(session.getStageResultIndex() <= session.getStageIndex()) {
|
||||
session.setStageIndex(session.getStageIndex() + 1);
|
||||
gameSessionRepository.save(session);
|
||||
} else {
|
||||
logger.warn("Stage index is greater than stage result index. Maybe due to duplicated request.");
|
||||
int[] stageArr = request.getStg_ply_pv_id();
|
||||
int stageIndex = 0;
|
||||
if(stageArr[0] != -1) {
|
||||
stageIndex = 0;
|
||||
}
|
||||
if(stageArr[1] != -1) {
|
||||
stageIndex = 1;
|
||||
}
|
||||
if(stageArr[2] != -1) {
|
||||
stageIndex = 2;
|
||||
}
|
||||
if(stageArr[3] != -1) {
|
||||
stageIndex = 3;
|
||||
}
|
||||
session.setStageIndex(stageIndex);
|
||||
gameSessionRepository.save(session);
|
||||
}
|
||||
|
||||
BaseResponse response = new BaseResponse(
|
||||
|
|
|
@ -94,6 +94,25 @@ public class EndHandler extends BaseHandler {
|
|||
}
|
||||
}
|
||||
|
||||
int savedIndex = session.getStageResultIndex();
|
||||
int[] stageArr = request.getStg_ply_pv_id();
|
||||
int stageIndex = 0;
|
||||
if(stageArr[0] != -1) {
|
||||
stageIndex = 0;
|
||||
}
|
||||
if(stageArr[1] != -1) {
|
||||
stageIndex = 1;
|
||||
}
|
||||
if(stageArr[2] != -1) {
|
||||
stageIndex = 2;
|
||||
}
|
||||
if(stageArr[3] != -1) {
|
||||
stageIndex = 3;
|
||||
}
|
||||
if(stageIndex != savedIndex) {
|
||||
logger.error("Some stage not saved");
|
||||
}
|
||||
|
||||
|
||||
playerProfileService.save(profile);
|
||||
gameSessionRepository.delete(session);
|
||||
|
|
Loading…
Reference in New Issue