整理持久化数据结构
This commit is contained in:
@@ -1,16 +1,17 @@
|
|||||||
|
|
||||||
|
|
||||||
|
import { DataBlock } from "../types/global";
|
||||||
import { StorageManager } from "./StorageManager"
|
import { StorageManager } from "./StorageManager"
|
||||||
|
|
||||||
export class DOBlock {
|
export class DOBlock {
|
||||||
|
|
||||||
private data: any
|
private data: DataBlock
|
||||||
private preset: boolean = false//预设格子
|
private preset: boolean = false//预设格子
|
||||||
private correct: number = 0;
|
private correct: number = 0;
|
||||||
private checked: boolean = false//是否正确
|
private checked: boolean = false//是否正确
|
||||||
|
|
||||||
|
|
||||||
constructor(dataBlock: any, preset: boolean, correct: number) {
|
constructor(dataBlock: DataBlock, preset: boolean, correct: number) {
|
||||||
this.data = dataBlock
|
this.data = dataBlock
|
||||||
this.preset = preset
|
this.preset = preset
|
||||||
this.correct = correct
|
this.correct = correct
|
||||||
|
|||||||
@@ -1,14 +1,15 @@
|
|||||||
|
|
||||||
|
|
||||||
|
import { DataCandy } from "../types/global"
|
||||||
import { StorageManager } from "./StorageManager"
|
import { StorageManager } from "./StorageManager"
|
||||||
|
|
||||||
|
|
||||||
export class DOCandy {
|
export class DOCandy {
|
||||||
|
|
||||||
private data: any
|
private data: DataCandy
|
||||||
private show: number
|
private show: number
|
||||||
|
|
||||||
constructor(dataCandy: any, show: number) {
|
constructor(dataCandy: DataCandy, show: number) {
|
||||||
this.data = dataCandy
|
this.data = dataCandy
|
||||||
this.show = show
|
this.show = show
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,18 +3,19 @@
|
|||||||
import { StorageManager } from "./StorageManager"
|
import { StorageManager } from "./StorageManager"
|
||||||
import { DOBlock } from "./DOBlock"
|
import { DOBlock } from "./DOBlock"
|
||||||
import { DOCandy } from "./DOCandy"
|
import { DOCandy } from "./DOCandy"
|
||||||
|
import { DataBlock, DataStage } from "../types/global"
|
||||||
|
|
||||||
|
|
||||||
export class DOStage {
|
export class DOStage {
|
||||||
|
|
||||||
private data: any
|
private data: DataStage
|
||||||
private blocks: Array<DOBlock> = new Array()
|
private blocks: Array<DOBlock> = new Array()
|
||||||
private candys: Array<DOCandy> = new Array()
|
private candys: Array<DOCandy> = new Array()
|
||||||
|
|
||||||
private letterToNumber: any;
|
private letterToNumber: Map<string, number>;
|
||||||
private numberToLetter: any;
|
private numberToLetter: Map<number, string>;
|
||||||
|
|
||||||
constructor(dataStage: any, levelStr: string) {
|
constructor(dataStage: DataStage, levelStr: string) {
|
||||||
this.data = dataStage
|
this.data = dataStage
|
||||||
|
|
||||||
this.letterToNumber = new Map();
|
this.letterToNumber = new Map();
|
||||||
@@ -39,7 +40,7 @@ export class DOStage {
|
|||||||
this.numberToLetter.set(8, "h");
|
this.numberToLetter.set(8, "h");
|
||||||
this.numberToLetter.set(9, "i");
|
this.numberToLetter.set(9, "i");
|
||||||
|
|
||||||
var blockMap: Map<number, any> = new Map()
|
var blockMap: Map<number, DataBlock> = new Map()
|
||||||
for (var i=0; i<this.data.blocks.length; i++) {
|
for (var i=0; i<this.data.blocks.length; i++) {
|
||||||
var dataBlock = this.data.blocks[i]
|
var dataBlock = this.data.blocks[i]
|
||||||
blockMap.set(dataBlock.index, dataBlock)
|
blockMap.set(dataBlock.index, dataBlock)
|
||||||
@@ -53,7 +54,7 @@ export class DOStage {
|
|||||||
var letter = levelStr[i];
|
var letter = levelStr[i];
|
||||||
if (this.letterToNumber.has(letter)) {//预设格子 使用配置文件初始化
|
if (this.letterToNumber.has(letter)) {//预设格子 使用配置文件初始化
|
||||||
var show = this.letterToNumber.get(letter)
|
var show = this.letterToNumber.get(letter)
|
||||||
var dataBlock = StorageManager.createDataBlock(i, show)
|
var dataBlock: DataBlock = {index: i, show: show, score: 0, notes: new Array()}
|
||||||
var doBlock = new DOBlock(dataBlock, true, show)
|
var doBlock = new DOBlock(dataBlock, true, show)
|
||||||
this.blocks.push(doBlock)
|
this.blocks.push(doBlock)
|
||||||
}
|
}
|
||||||
@@ -65,7 +66,7 @@ export class DOStage {
|
|||||||
this.blocks.push(doBlock)
|
this.blocks.push(doBlock)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
dataBlock = StorageManager.createDataBlock(i, 0)
|
dataBlock = {index: i, show: 0, score: 0, notes: new Array()}
|
||||||
this.data.blocks.push(dataBlock)
|
this.data.blocks.push(dataBlock)
|
||||||
var doBlock = new DOBlock(dataBlock, false, show)
|
var doBlock = new DOBlock(dataBlock, false, show)
|
||||||
this.blocks.push(doBlock)
|
this.blocks.push(doBlock)
|
||||||
@@ -90,7 +91,7 @@ export class DOStage {
|
|||||||
var c = this.numberToLetter.get(i)
|
var c = this.numberToLetter.get(i)
|
||||||
if (list.has(c))
|
if (list.has(c))
|
||||||
left = list.get(c);
|
left = list.get(c);
|
||||||
dataCandy = StorageManager.createDataCandy(left)
|
dataCandy = {left: left}
|
||||||
this.data.candys.push(dataCandy)
|
this.data.candys.push(dataCandy)
|
||||||
var doCandy = new DOCandy(dataCandy, i)
|
var doCandy = new DOCandy(dataCandy, i)
|
||||||
this.candys.push(doCandy)
|
this.candys.push(doCandy)
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
import { config } from "../constants/config"
|
import { config } from "../constants/config"
|
||||||
|
import { DataStage } from "../types/global"
|
||||||
import { DOStage } from "./DOStage"
|
import { DOStage } from "./DOStage"
|
||||||
|
|
||||||
|
|
||||||
@@ -12,41 +13,10 @@ export class StorageManager {
|
|||||||
return StorageManager.instance
|
return StorageManager.instance
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public static createDataBlock(index: number, show: number, score: number=0, notes: Array<number>=new Array()): any {//格子
|
|
||||||
var dataBlock = {
|
|
||||||
index: index,
|
|
||||||
show: show,
|
|
||||||
score: score,
|
|
||||||
notes: notes,
|
|
||||||
}
|
|
||||||
return dataBlock
|
|
||||||
}
|
|
||||||
|
|
||||||
public static createDataCandy(left: number): any {//可选数字
|
|
||||||
var dataCandy = {
|
|
||||||
left: left,
|
|
||||||
}
|
|
||||||
return dataCandy
|
|
||||||
}
|
|
||||||
|
|
||||||
public static createDataStage(mistake: number, difficulty: number, duration: number=0, blocks: Array<any>=new Array(), candys: Array<any>=new Array()): any {//关卡数据
|
|
||||||
var dataStage = {
|
|
||||||
mistake: mistake,
|
|
||||||
difficulty: difficulty,
|
|
||||||
duration: duration,
|
|
||||||
note_open: false,
|
|
||||||
blocks: blocks,
|
|
||||||
candys: candys,
|
|
||||||
}
|
|
||||||
return dataStage
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private changed = false
|
private changed = false
|
||||||
|
|
||||||
private stageID: string = "";
|
private stageID: string = "";
|
||||||
private stageMap: Map<string, any> = new Map();
|
private stageMap: Map<string, DataStage> = new Map();
|
||||||
|
|
||||||
public init(): void {
|
public init(): void {
|
||||||
this.changed = false
|
this.changed = false
|
||||||
@@ -54,7 +24,7 @@ export class StorageManager {
|
|||||||
|
|
||||||
public loadStage(stageID: string): DOStage {
|
public loadStage(stageID: string): DOStage {
|
||||||
this.stageID = stageID
|
this.stageID = stageID
|
||||||
var dataStage
|
var dataStage: DataStage
|
||||||
if (this.stageMap.has(stageID)) {
|
if (this.stageMap.has(stageID)) {
|
||||||
dataStage = this.stageMap.get(stageID)
|
dataStage = this.stageMap.get(stageID)
|
||||||
}
|
}
|
||||||
@@ -65,7 +35,7 @@ export class StorageManager {
|
|||||||
this.stageMap.set(stageID, dataStage)
|
this.stageMap.set(stageID, dataStage)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
dataStage = StorageManager.createDataStage(0, config.DIFFICULTY_TYPE.Easy)
|
dataStage = {mistake: 0, difficulty: config.DIFFICULTY_TYPE.Easy, duration: 0, note_open: false, blocks: new Array(), candys: new Array()}
|
||||||
this.stageMap.set(stageID, dataStage)
|
this.stageMap.set(stageID, dataStage)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
26
src/types/global.ts
Normal file
26
src/types/global.ts
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
|
||||||
|
|
||||||
|
//格子持久化数据结构
|
||||||
|
export interface DataBlock {
|
||||||
|
index: number,
|
||||||
|
show: number,
|
||||||
|
score: number
|
||||||
|
notes: Array<number>,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//可选数字
|
||||||
|
export interface DataCandy {
|
||||||
|
left: number,
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//关卡数据
|
||||||
|
export interface DataStage {
|
||||||
|
mistake: number,
|
||||||
|
difficulty: number,
|
||||||
|
duration: number,
|
||||||
|
note_open: boolean,
|
||||||
|
blocks: Array<DataBlock>,
|
||||||
|
candys: Array<DataCandy>,
|
||||||
|
}
|
||||||
3
src/types/global.ts.meta
Normal file
3
src/types/global.ts.meta
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"uuid": "c76d8037-4918-4ac5-a920-02fe0f4d8df7"
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user