mirror of
https://github.com/MewoLab/AquaDX.git
synced 2025-10-26 04:22:38 +00:00
[DIVA] Use the old stage counting method to fix continue stage not saving
This commit is contained in:
parent
161f258603
commit
8d3d40f838
@ -61,8 +61,6 @@ public class StageResultHandler extends BaseHandler {
|
|||||||
int[] pvIds = request.getStg_ply_pv_id();
|
int[] pvIds = request.getStg_ply_pv_id();
|
||||||
int stageIndex = session.getStageIndex();
|
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
|
// Convert to play log object
|
||||||
PlayLog log = getLog(request, profile, stageIndex);
|
PlayLog log = getLog(request, profile, stageIndex);
|
||||||
@ -98,13 +96,12 @@ public class StageResultHandler extends BaseHandler {
|
|||||||
session.setLevelNumber(levelInfo.getLevelNumber());
|
session.setLevelNumber(levelInfo.getLevelNumber());
|
||||||
session.setLevelExp(levelInfo.getLevelExp());
|
session.setLevelExp(levelInfo.getLevelExp());
|
||||||
|
|
||||||
session.setStageResultIndex(session.getStageResultIndex() + 1);
|
session.setStageResultIndex(stageIndex);
|
||||||
|
|
||||||
pvRecordRepository.save(record);
|
pvRecordRepository.save(record);
|
||||||
playLogRepository.save(log);
|
playLogRepository.save(log);
|
||||||
gameSessionRepository.save(session);
|
gameSessionRepository.save(session);
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
response = new StageResultResponse(
|
response = new StageResultResponse(
|
||||||
request.getCmd(),
|
request.getCmd(),
|
||||||
|
|||||||
@ -36,12 +36,22 @@ public class StageStartHandler extends BaseHandler {
|
|||||||
PlayerProfile profile = profileRepository.findByPdId(request.getPd_id()).orElseThrow(ProfileNotFoundException::new);
|
PlayerProfile profile = profileRepository.findByPdId(request.getPd_id()).orElseThrow(ProfileNotFoundException::new);
|
||||||
GameSession session = gameSessionRepository.findByPdId(profile).orElseThrow(SessionNotFoundException::new);
|
GameSession session = gameSessionRepository.findByPdId(profile).orElseThrow(SessionNotFoundException::new);
|
||||||
|
|
||||||
if(session.getStageResultIndex() <= session.getStageIndex()) {
|
int[] stageArr = request.getStg_ply_pv_id();
|
||||||
session.setStageIndex(session.getStageIndex() + 1);
|
int stageIndex = 0;
|
||||||
gameSessionRepository.save(session);
|
if(stageArr[0] != -1) {
|
||||||
} else {
|
stageIndex = 0;
|
||||||
logger.warn("Stage index is greater than stage result index. Maybe due to duplicated request.");
|
|
||||||
}
|
}
|
||||||
|
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(
|
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);
|
playerProfileService.save(profile);
|
||||||
gameSessionRepository.delete(session);
|
gameSessionRepository.delete(session);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user