优化存档逻辑

This commit is contained in:
2025-05-14 10:14:55 +08:00
parent cbee313bb5
commit 2cc01c5570
11 changed files with 117 additions and 17 deletions

View File

@@ -43,10 +43,13 @@ export class StorageManager {
}
private changed = false
private stageID: string = "";
private stageMap: Map<string, any> = new Map();
public init(): void {
this.changed = false
}
public loadStage(stageID: string): DOStage {
@@ -66,14 +69,22 @@ export class StorageManager {
this.stageMap.set(stageID, dataStage)
}
}
return new DOStage(dataStage)
var levelStr = "aBCeIGFhdEDFcAHBGIhigBdfecAgHDiFBCaeBEAGHCIdffcIdEAHbgcABfGEdiHIFHaCDGEBDGEHbiaFC"
return new DOStage(dataStage, levelStr)
}
public saveStage(): void {
if (this.stageMap.has(this.stageID)) {
var dataStage = this.stageMap.get(this.stageID)
var jsonStr = JSON.stringify(dataStage)
Laya.LocalStorage.setItem(this.stageID, jsonStr)
if (this.changed) {
this.changed = false
if (this.stageMap.has(this.stageID)) {
var dataStage = this.stageMap.get(this.stageID)
var jsonStr = JSON.stringify(dataStage)
Laya.LocalStorage.setItem(this.stageID, jsonStr)
}
}
}
public onChanged(): void {
this.changed = true
}
}

View File

@@ -37,4 +37,8 @@ export class UIManager extends Laya.Script {
})
}
onLateUpdate(): void {
StorageManager.getInstance().saveStage()
}
}

View File

@@ -32,7 +32,7 @@ export class DOBlock {
this.checked = true
if (this.get_checked() || show == 0)
this.clean_notes()//正确或者擦除
StorageManager.getInstance().saveStage()
StorageManager.getInstance().onChanged()
}
public get_score(): number {
@@ -40,7 +40,7 @@ export class DOBlock {
}
public set_score(score: number): void {
this.data.score = score
StorageManager.getInstance().saveStage()
StorageManager.getInstance().onChanged()
}
public get_notes(): Array<number> {
@@ -50,7 +50,7 @@ export class DOBlock {
var b = false
if (this.data.notes.indexOf(noteNumber) < 0) {
this.data.notes.push(noteNumber)
StorageManager.getInstance().saveStage()
StorageManager.getInstance().onChanged()
b = true
}
return b
@@ -58,7 +58,7 @@ export class DOBlock {
public clean_notes(): void {
if (this.data.notes.length > 0) {
this.data.notes = new Array()
StorageManager.getInstance().saveStage()
StorageManager.getInstance().onChanged()
}
}
//====================================持久化数据

View File

@@ -19,7 +19,7 @@ export class DOCandy {
}
public set_left(left: number): void {
this.data.left = left
StorageManager.getInstance().saveStage()
StorageManager.getInstance().onChanged()
}
//====================================持久化数据

View File

@@ -14,7 +14,7 @@ export class DOStage {
private letterToNumber: any;
private numberToLetter: any;
constructor(dataStage: any) {
constructor(dataStage: any, levelStr: string) {
this.data = dataStage
this.letterToNumber = new Map();
@@ -44,7 +44,7 @@ export class DOStage {
var dataBlock = this.data.blocks[i]
blockMap.set(dataBlock.index, dataBlock)
}
var levelStr = "aBCeIGFhdEDFcAHBGIhigBdfecAgHDiFBCaeBEAGHCIdffcIdEAHbgcABfGEdiHIFHaCDGEBDGEHbiaFC"
if (levelStr.length != 81) {
console.log("levelStr error", levelStr.length)
}
@@ -105,7 +105,7 @@ export class DOStage {
}
public set_mistake(mistake: number): void {
this.data.mistake = mistake
StorageManager.getInstance().saveStage()
StorageManager.getInstance().onChanged()
}
public get_difficulty(): number {
@@ -117,7 +117,7 @@ export class DOStage {
}
public set_duration(duration: number): void {//关卡计时
this.data.duration = duration
// StorageManager.getInstance().saveStage()
// StorageManager.getInstance().onChanged()
}
public get_note_open(): boolean {
@@ -125,7 +125,7 @@ export class DOStage {
}
public set_note_open(note_open: boolean): void {
this.data.note_open = note_open
StorageManager.getInstance().saveStage()
StorageManager.getInstance().onChanged()
}
//====================================持久化数据