格式化代码

This commit is contained in:
2025-05-28 18:47:51 +08:00
parent 6d44fc21b4
commit a7df8ec739
38 changed files with 2768 additions and 2840 deletions

View File

@@ -1,43 +1,38 @@
import { respath } from "../constants/respath"
export const MONTH_LIST = [
{year: 2024, month: 12, begin: 0, dayCount: 31, icon_res: respath.trophy_12},
{ year: 2024, month: 12, begin: 0, dayCount: 31, icon_res: respath.trophy_12 },
{year: 2025, month: 1, begin: 3, dayCount: 31, icon_res: respath.trophy_01},
{year: 2025, month: 2, begin: 6, dayCount: 30, icon_res: respath.trophy_02},
{year: 2025, month: 3, begin: 6, dayCount: 31, icon_res: respath.trophy_03},
{year: 2025, month: 4, begin: 2, dayCount: 30, icon_res: respath.trophy_04},
{year: 2025, month: 5, begin: 4, dayCount: 31, icon_res: respath.trophy_05},
{year: 2025, month: 6, begin: 0, dayCount: 30, icon_res: respath.trophy_06},
{year: 2025, month: 7, begin: 2, dayCount: 31, icon_res: respath.trophy_07},
{year: 2025, month: 8, begin: 5, dayCount: 31, icon_res: respath.trophy_08},
{year: 2025, month: 9, begin: 1, dayCount: 30, icon_res: respath.trophy_09},
{year: 2025, month: 10, begin: 3, dayCount: 31, icon_res: respath.trophy_10},
{year: 2025, month: 11, begin: 6, dayCount: 30, icon_res: respath.trophy_11},
{year: 2025, month: 12, begin: 1, dayCount: 31, icon_res: respath.trophy_12},
{ year: 2025, month: 1, begin: 3, dayCount: 31, icon_res: respath.trophy_01 },
{ year: 2025, month: 2, begin: 6, dayCount: 30, icon_res: respath.trophy_02 },
{ year: 2025, month: 3, begin: 6, dayCount: 31, icon_res: respath.trophy_03 },
{ year: 2025, month: 4, begin: 2, dayCount: 30, icon_res: respath.trophy_04 },
{ year: 2025, month: 5, begin: 4, dayCount: 31, icon_res: respath.trophy_05 },
{ year: 2025, month: 6, begin: 0, dayCount: 30, icon_res: respath.trophy_06 },
{ year: 2025, month: 7, begin: 2, dayCount: 31, icon_res: respath.trophy_07 },
{ year: 2025, month: 8, begin: 5, dayCount: 31, icon_res: respath.trophy_08 },
{ year: 2025, month: 9, begin: 1, dayCount: 30, icon_res: respath.trophy_09 },
{ year: 2025, month: 10, begin: 3, dayCount: 31, icon_res: respath.trophy_10 },
{ year: 2025, month: 11, begin: 6, dayCount: 30, icon_res: respath.trophy_11 },
{ year: 2025, month: 12, begin: 1, dayCount: 31, icon_res: respath.trophy_12 },
{year: 2026, month: 1, begin: 4, dayCount: 31, icon_res: respath.trophy_01},
{year: 2026, month: 2, begin: 0, dayCount: 30, icon_res: respath.trophy_02},
{year: 2026, month: 3, begin: 0, dayCount: 31, icon_res: respath.trophy_03},
{year: 2026, month: 4, begin: 3, dayCount: 30, icon_res: respath.trophy_04},
{year: 2026, month: 5, begin: 5, dayCount: 31, icon_res: respath.trophy_05},
{year: 2026, month: 6, begin: 1, dayCount: 30, icon_res: respath.trophy_06},
{year: 2026, month: 7, begin: 3, dayCount: 31, icon_res: respath.trophy_07},
{year: 2026, month: 8, begin: 6, dayCount: 31, icon_res: respath.trophy_08},
{year: 2026, month: 9, begin: 2, dayCount: 30, icon_res: respath.trophy_09},
{year: 2026, month: 10, begin: 4, dayCount: 31, icon_res: respath.trophy_10},
{year: 2026, month: 11, begin: 0, dayCount: 30, icon_res: respath.trophy_11},
{year: 2026, month: 12, begin: 2, dayCount: 31, icon_res: respath.trophy_12},
{ year: 2026, month: 1, begin: 4, dayCount: 31, icon_res: respath.trophy_01 },
{ year: 2026, month: 2, begin: 0, dayCount: 30, icon_res: respath.trophy_02 },
{ year: 2026, month: 3, begin: 0, dayCount: 31, icon_res: respath.trophy_03 },
{ year: 2026, month: 4, begin: 3, dayCount: 30, icon_res: respath.trophy_04 },
{ year: 2026, month: 5, begin: 5, dayCount: 31, icon_res: respath.trophy_05 },
{ year: 2026, month: 6, begin: 1, dayCount: 30, icon_res: respath.trophy_06 },
{ year: 2026, month: 7, begin: 3, dayCount: 31, icon_res: respath.trophy_07 },
{ year: 2026, month: 8, begin: 6, dayCount: 31, icon_res: respath.trophy_08 },
{ year: 2026, month: 9, begin: 2, dayCount: 30, icon_res: respath.trophy_09 },
{ year: 2026, month: 10, begin: 4, dayCount: 31, icon_res: respath.trophy_10 },
{ year: 2026, month: 11, begin: 0, dayCount: 30, icon_res: respath.trophy_11 },
{ year: 2026, month: 12, begin: 2, dayCount: 31, icon_res: respath.trophy_12 }
]
export function G_getMonthInfo(year: number, month: number): any {
for (var i=0; i<MONTH_LIST.length; i++) {
var obj = MONTH_LIST[i]
for (let i = 0; i < MONTH_LIST.length; i++) {
const obj = MONTH_LIST[i]
if (obj.year == year && obj.month == month) {
return obj
}
@@ -46,14 +41,11 @@ export function G_getMonthInfo(year: number, month: number): any {
}
export class DCManager {
private static instance: DCManager
public static getInstance(): DCManager {
if (!DCManager.instance) {
DCManager.instance = new DCManager()
}
return DCManager.instance
private static instance: DCManager
public static getInstance(): DCManager {
if (!DCManager.instance) {
DCManager.instance = new DCManager()
}
}
return DCManager.instance
}
}

View File

@@ -1,81 +1,79 @@
import { DataBlock } from "../types/global";
import type { DataBlock } from "../types/global"
import { StorageManager } from "./StorageManager"
export class DOBlock {
private data: DataBlock
private preset: boolean = false// 预设格子
private correct: number = 0
private checked: boolean = false// 是否正确
private data: DataBlock
private preset: boolean = false//预设格子
private correct: number = 0;
private checked: boolean = false//是否正确
constructor(dataBlock: DataBlock, preset: boolean, correct: number) {
this.data = dataBlock
this.preset = preset
this.correct = correct
this.checked = preset || (dataBlock.show == correct)
}
constructor(dataBlock: DataBlock, preset: boolean, correct: number) {
this.data = dataBlock
this.preset = preset
this.correct = correct
this.checked = preset || (dataBlock.show == correct)
}
// ====================================持久化数据
public get_index(): number {
return this.data.index
}
//====================================持久化数据
public get_index(): number {
return this.data.index
}
public get_show(): number {
return this.data.show
}
public get_show(): number {
return this.data.show
}
public set_show(show: number): void {
this.data.show = show
this.checked = show == this.get_correct()
StorageManager.getInstance().onStageChanged()
}
public set_show(show: number): void {
this.data.show = show
this.checked = show == this.get_correct()
StorageManager.getInstance().onStageChanged()
}
public get_score(): number {
return this.data.score
}
public set_score(score: number): void {
this.data.score = score
StorageManager.getInstance().onStageChanged()
}
public get_score(): number {
return this.data.score
}
public get_notes(): Array<number> {
return this.data.notes
}
public add_note(noteNumber: number): void {
if (this.data.notes.indexOf(noteNumber) < 0) {
this.data.notes.push(noteNumber)
StorageManager.getInstance().onStageChanged()
}
}
public remove_note(noteNumber: number): void {
var find = this.data.notes.indexOf(noteNumber)
if (find >= 0) {
this.data.notes.splice(find, 1)
StorageManager.getInstance().onStageChanged()
}
}
public clean_notes(): void {
if (this.data.notes.length > 0) {
this.data.notes = new Array()
StorageManager.getInstance().onStageChanged()
}
}
//====================================持久化数据
public set_score(score: number): void {
this.data.score = score
StorageManager.getInstance().onStageChanged()
}
public get_preset(): boolean {
return this.preset
public get_notes(): Array<number> {
return this.data.notes
}
public add_note(noteNumber: number): void {
if (!this.data.notes.includes(noteNumber)) {
this.data.notes.push(noteNumber)
StorageManager.getInstance().onStageChanged()
}
}
public get_correct(): number {
return this.correct
public remove_note(noteNumber: number): void {
const find = this.data.notes.indexOf(noteNumber)
if (find >= 0) {
this.data.notes.splice(find, 1)
StorageManager.getInstance().onStageChanged()
}
}
public get_checked(): boolean {
return this.checked
public clean_notes(): void {
if (this.data.notes.length > 0) {
this.data.notes = []
StorageManager.getInstance().onStageChanged()
}
}
// ====================================持久化数据
public get_preset(): boolean {
return this.preset
}
public get_correct(): number {
return this.correct
}
}
public get_checked(): boolean {
return this.checked
}
}

View File

@@ -1,28 +1,21 @@
export class DOCandy {
private show: number
private left: number
private show: number
private left: number
constructor(show: number, left: number) {
this.show = show
this.left = left
}
constructor(show: number, left: number) {
this.show = show
this.left = left
}
public get_show(): number {
return this.show
}
public get_show(): number {
return this.show
}
public get_left(): number {
return this.left
}
public get_left(): number {
return this.left
}
public set_left(left: number): void {
this.left = left
}
}
public set_left(left: number): void {
this.left = left
}
}

View File

@@ -1,190 +1,197 @@
import { StorageManager } from "./StorageManager"
import type { DataBlock, DataStage, DataUndo } from "../types/global"
import { DOBlock } from "./DOBlock"
import { DataBlock, DataUndo, DataStage } from "../types/global"
import { LevelManager } from "./LevelManager"
import { StorageManager } from "./StorageManager"
export class DOStage {
private data: DataStage
private blocks: Array<DOBlock> = []
private data: DataStage
private blocks: Array<DOBlock> = new Array()
private letterToNumber: Map<string, number>
private numberToLetter: Map<number, string>
private letterToNumber: Map<string, number>;
private numberToLetter: Map<number, string>;
constructor(dataStage: DataStage) {
this.data = dataStage
constructor(dataStage: DataStage) {
this.data = dataStage
this.letterToNumber = new Map()
this.letterToNumber.set("A", 1)
this.letterToNumber.set("B", 2)
this.letterToNumber.set("C", 3)
this.letterToNumber.set("D", 4)
this.letterToNumber.set("E", 5)
this.letterToNumber.set("F", 6)
this.letterToNumber.set("G", 7)
this.letterToNumber.set("H", 8)
this.letterToNumber.set("I", 9)
this.letterToNumber = new Map();
this.letterToNumber.set("A", 1);
this.letterToNumber.set("B", 2);
this.letterToNumber.set("C", 3);
this.letterToNumber.set("D", 4);
this.letterToNumber.set("E", 5);
this.letterToNumber.set("F", 6);
this.letterToNumber.set("G", 7);
this.letterToNumber.set("H", 8);
this.letterToNumber.set("I", 9);
this.numberToLetter = new Map()
this.numberToLetter.set(1, "a")
this.numberToLetter.set(2, "b")
this.numberToLetter.set(3, "c")
this.numberToLetter.set(4, "d")
this.numberToLetter.set(5, "e")
this.numberToLetter.set(6, "f")
this.numberToLetter.set(7, "g")
this.numberToLetter.set(8, "h")
this.numberToLetter.set(9, "i")
this.numberToLetter = new Map();
this.numberToLetter.set(1, "a");
this.numberToLetter.set(2, "b");
this.numberToLetter.set(3, "c");
this.numberToLetter.set(4, "d");
this.numberToLetter.set(5, "e");
this.numberToLetter.set(6, "f");
this.numberToLetter.set(7, "g");
this.numberToLetter.set(8, "h");
this.numberToLetter.set(9, "i");
const blockMap: Map<number, DataBlock> = new Map()
for (var i = 0; i < this.data.blocks.length; i++) {
var dataBlock = this.data.blocks[i]
blockMap.set(dataBlock.index, dataBlock)
}
var blockMap: Map<number, DataBlock> = new Map()
for (var i=0; i<this.data.blocks.length; i++) {
var dataBlock = this.data.blocks[i]
blockMap.set(dataBlock.index, dataBlock)
const levelStr = LevelManager.getInstance().getLevelStr(this.data.difficulty, this.data.index)
if (!levelStr || levelStr.length != 81) {
console.log("levelStr error", this.data.difficulty, this.data.index, levelStr)
}
const list = new Map()
for (var i = 0; i < levelStr.length; i++) {
const letter = levelStr[i]
if (this.letterToNumber.has(letter)) { // 预设格子 使用配置文件初始化
var show = this.letterToNumber.get(letter)
var dataBlock: DataBlock = { index: i, show, score: 0, notes: [] }
var doBlock = new DOBlock(dataBlock, true, show)
this.blocks.push(doBlock)
} else {
var show = this.letterToNumber.get(letter.toUpperCase())
var dataBlock = blockMap.get(i)
if (dataBlock) { // 本地有持久化数据
var doBlock = new DOBlock(dataBlock, false, show)
this.blocks.push(doBlock)
} else {
dataBlock = { index: i, show: 0, score: 0, notes: [] }
this.data.blocks.push(dataBlock)
var doBlock = new DOBlock(dataBlock, false, show)
this.blocks.push(doBlock)
}
var levelStr = LevelManager.getInstance().getLevelStr(this.data.difficulty, this.data.index)
if (!levelStr || levelStr.length != 81) {
console.log("levelStr error", this.data.difficulty, this.data.index, levelStr)
if (list.has(letter)) {
list.set(letter, list.get(letter) + 1)
} else {
list.set(letter, 1)
}
var list = new Map();
for (var i=0; i<levelStr.length; i++) {
var letter = levelStr[i];
if (this.letterToNumber.has(letter)) {//预设格子 使用配置文件初始化
var show = this.letterToNumber.get(letter)
var dataBlock: DataBlock = {index: i, show: show, score: 0, notes: new Array()}
var doBlock = new DOBlock(dataBlock, true, show)
this.blocks.push(doBlock)
}
else {
var show = this.letterToNumber.get(letter.toUpperCase())
var dataBlock = blockMap.get(i)
if (dataBlock) {//本地有持久化数据
var doBlock = new DOBlock(dataBlock, false, show)
this.blocks.push(doBlock)
}
else {
dataBlock = {index: i, show: 0, score: 0, notes: new Array()}
this.data.blocks.push(dataBlock)
var doBlock = new DOBlock(dataBlock, false, show)
this.blocks.push(doBlock)
}
}
}
}
if (list.has(letter)) {
list.set(letter, list.get(letter)+1);
}
else {
list.set(letter, 1);
}
}
}
}
public getData(): DataStage {
return this.data
}
public getData(): DataStage {
return this.data
}
//====================================持久化数据
public get_stageID(): string {
return this.data.id
}
public get_stageType(): number {
return this.data.type
}
public get_stageName(): string {
return this.data.name
}
public get_difficulty(): string {
return this.data.difficulty
}
public get_stageIndex(): number {
return this.data.index
}
// ====================================持久化数据
public get_stageID(): string {
return this.data.id
}
public get_mistake(): number {
return this.data.mistake
}
public set_mistake(mistake: number): void {
this.data.mistake = mistake
StorageManager.getInstance().onStageChanged()
}
public get_stageType(): number {
return this.data.type
}
public get_score(): number {
return this.data.score
}
public set_score(score: number): void {
this.data.score = score
StorageManager.getInstance().onStageChanged()
}
public get_stageName(): string {
return this.data.name
}
public get_duration(): number {
return this.data.duration
}
public set_duration(duration: number): void {//关卡计时
this.data.duration = duration
StorageManager.getInstance().onStageChanged()
}
public get_difficulty(): string {
return this.data.difficulty
}
public get_last_hit_time(): number {
return this.data.last_hit_time
}
public set_last_hit_time(last_hit_time: number): void {
this.data.last_hit_time = last_hit_time
StorageManager.getInstance().onStageChanged()
}
public get_stageIndex(): number {
return this.data.index
}
public get_note_open(): boolean {
return this.data.note_open
}
public set_note_open(note_open: boolean): void {
this.data.note_open = note_open
StorageManager.getInstance().onStageChanged()
}
public get_mistake(): number {
return this.data.mistake
}
public get_select_index(): number {
return this.data.select_index
}
public set_select_index(select_index: number): void {//当前选中
this.data.select_index = select_index
StorageManager.getInstance().onStageChanged()
}
public set_mistake(mistake: number): void {
this.data.mistake = mistake
StorageManager.getInstance().onStageChanged()
}
public get_hint(): number {
return this.data.hint
}
public set_hint(hint: number): void {//提示
this.data.hint = hint
StorageManager.getInstance().onStageChanged()
}
public get_score(): number {
return this.data.score
}
public get_undos(): Array<DataUndo> {
return this.data.undos
}
public add_undo(index: number, show: number=0, notes: Array<number>=new Array()): void {
var _notes: Array<number>
if (notes) {
_notes = new Array()
for (var i=0; i<notes.length; i++)
_notes.push(notes[i])
}
var dataUndo: DataUndo = {index: index, show: show, notes: _notes}
console.log("add_undo >>>>>>>>>>>>>>>>>>>>>>>>>>>>", JSON.stringify(dataUndo))
this.data.undos.push(dataUndo)
StorageManager.getInstance().onStageChanged()
}
public pop_undo(): DataUndo {
var dataUndo: DataUndo
if (this.data.undos.length > 0) {
dataUndo = this.data.undos[this.data.undos.length-1]
this.data.undos.splice(this.data.undos.length-1, 1)
StorageManager.getInstance().onStageChanged()
}
return dataUndo
}
//====================================持久化数据
public set_score(score: number): void {
this.data.score = score
StorageManager.getInstance().onStageChanged()
}
public get_blocks(): Array<DOBlock> {
return this.blocks
public get_duration(): number {
return this.data.duration
}
public set_duration(duration: number): void { // 关卡计时
this.data.duration = duration
StorageManager.getInstance().onStageChanged()
}
public get_last_hit_time(): number {
return this.data.last_hit_time
}
public set_last_hit_time(last_hit_time: number): void {
this.data.last_hit_time = last_hit_time
StorageManager.getInstance().onStageChanged()
}
public get_note_open(): boolean {
return this.data.note_open
}
public set_note_open(note_open: boolean): void {
this.data.note_open = note_open
StorageManager.getInstance().onStageChanged()
}
public get_select_index(): number {
return this.data.select_index
}
public set_select_index(select_index: number): void { // 当前选中
this.data.select_index = select_index
StorageManager.getInstance().onStageChanged()
}
public get_hint(): number {
return this.data.hint
}
public set_hint(hint: number): void { // 提示
this.data.hint = hint
StorageManager.getInstance().onStageChanged()
}
public get_undos(): Array<DataUndo> {
return this.data.undos
}
public add_undo(index: number, show: number = 0, notes: Array<number> = []): void {
let _notes: Array<number>
if (notes) {
_notes = []
for (let i = 0; i < notes.length; i++)
_notes.push(notes[i])
}
}
const dataUndo: DataUndo = { index, show, notes: _notes }
console.log("add_undo >>>>>>>>>>>>>>>>>>>>>>>>>>>>", JSON.stringify(dataUndo))
this.data.undos.push(dataUndo)
StorageManager.getInstance().onStageChanged()
}
public pop_undo(): DataUndo {
let dataUndo: DataUndo
if (this.data.undos.length > 0) {
dataUndo = this.data.undos[this.data.undos.length - 1]
this.data.undos.splice(this.data.undos.length - 1, 1)
StorageManager.getInstance().onStageChanged()
}
return dataUndo
}
// ====================================持久化数据
public get_blocks(): Array<DOBlock> {
return this.blocks
}
}

View File

@@ -1,171 +1,177 @@
import { DataProgress, DataUser, StageProgress, TrophyRecord } from "../types/global";
import type { DataProgress, DataUser, StageProgress, TrophyRecord } from "../types/global"
import { StorageManager } from "./StorageManager"
export class DOUser {
private data: DataUser
private mapDones: Map<string, number> = new Map()
private data: DataUser
private mapDones: Map<string, number> = new Map()
constructor(dataUser: DataUser) {
this.data = dataUser
for (let i = 0; i < this.data.dones.length; i++) {
const obj = this.data.dones[i]
this.mapDones.set(obj.stageID, obj.progress)
}
}
constructor(dataUser: DataUser) {
this.data = dataUser
for (var i=0; i<this.data.dones.length; i++) {
var obj = this.data.dones[i]
this.mapDones.set(obj.stageID, obj.progress)
}
}
public getData(): DataUser {
return this.data
}
public getData(): DataUser {
return this.data
}
//====================================持久化数据
public get_done(stageID: string): number {
if (this.mapDones.has(stageID)) {
return this.mapDones.get(stageID)
}
return 0
}
public get_doneCountByDate(year: number, month: number): number {
var count = 0
var key = `${year}-${month}`
this.mapDones.forEach((progres: number, stageID: string)=>{
if (stageID.startsWith(key) && progres >= 1) {
count ++
}
})
return count
}
public get_isAllDoneByDate(year: number, month: number): boolean {
var boolean = true
var key = `${year}-${month}`
this.mapDones.forEach((progres: number, stageID: string)=>{
if (stageID.startsWith(key) && progres < 1) {
boolean = false
}
})
return boolean
}
public update_stage_done(stageID: string, progress: number): void {
var find: StageProgress
for (var i=0; i<this.data.dones.length; i++) {
var obj = this.data.dones[i]
if (obj.stageID == stageID) {
find = obj
break
}
}
if (find) {
find.progress = progress
}
else {
find = {stageID: stageID, progress: progress}
this.data.dones.push(find)
}
this.mapDones.set(find.stageID, find.progress)
StorageManager.getInstance().onUserChanged()
// ====================================持久化数据
public get_done(stageID: string): number {
if (this.mapDones.has(stageID)) {
return this.mapDones.get(stageID)
}
return 0
}
//================奖杯获得记录
public get_trophyRecord(year: number, month: number): TrophyRecord {
var find: TrophyRecord
for (var i=0; i<this.data.trophy_records.length; i++) {
var obj = this.data.trophy_records[i]
if (obj.year == year && obj.month == month) {
find = obj
break
}
}
return find
}
public get_trophyHasNew(): TrophyRecord {
var find: TrophyRecord
for (var i=0; i<this.data.trophy_records.length; i++) {
var obj = this.data.trophy_records[i]
if (obj.isNew) {
find = obj
break
}
}
return find
}
public set_trophyNew(record: TrophyRecord, isNew: boolean): void {
if (record.isNew != isNew) {
record.isNew = isNew
StorageManager.getInstance().onUserChanged()
}
}
public get_trophyHasUnread(): boolean {
var unread = false
for (var i=0; i<this.data.trophy_records.length; i++) {
var obj = this.data.trophy_records[i]
if (obj.read == false) {
unread = true
break
}
}
return unread
}
public set_trophyAllread(): void {
var changed = false
for (var i=0; i<this.data.trophy_records.length; i++) {
var obj = this.data.trophy_records[i]
if (obj.read == false) {
obj.read = true
changed = true
}
}
if (changed) {
StorageManager.getInstance().onUserChanged()
}
}
public add_trophy_record(year: number, month: number, day: number): void {
var find
for (var i=0; i<this.data.trophy_records.length; i++) {
var obj = this.data.trophy_records[i]
if (obj.year == year && obj.month == month) {
find = obj
break
}
}
if (!find) {
this.data.trophy_records.push({year: year, month: month, day: day, isNew: true, read: false})
StorageManager.getInstance().onUserChanged()
}
}
public get_doneCountByDate(year: number, month: number): number {
let count = 0
const key = `${year}-${month}`
this.mapDones.forEach((progres: number, stageID: string) => {
if (stageID.startsWith(key) && progres >= 1) {
count++
}
})
return count
}
//=======关卡难度进度
public get_progress(difficulty: string): number {
var find: DataProgress
for (var i=0; i<this.data.progresses.length; i++) {
var obj = this.data.progresses[i]
if (obj.difficulty == difficulty) {
find = obj
break
}
}
if (find) {
return find.index
}
return 0
}
public update_progress(difficulty: string, index: number): void {
var find: DataProgress
for (var i=0; i<this.data.progresses.length; i++) {
var obj = this.data.progresses[i]
if (obj.difficulty == difficulty) {
find = obj
break
}
}
if (find) {
find.index = index
}
else {
find = {difficulty: difficulty, index: index}
this.data.progresses.push(find)
}
StorageManager.getInstance().onUserChanged()
}
public get_isAllDoneByDate(year: number, month: number): boolean {
let boolean = true
const key = `${year}-${month}`
this.mapDones.forEach((progres: number, stageID: string) => {
if (stageID.startsWith(key) && progres < 1) {
boolean = false
}
})
return boolean
}
//====================================持久化数据
}
public update_stage_done(stageID: string, progress: number): void {
let find: StageProgress
for (let i = 0; i < this.data.dones.length; i++) {
const obj = this.data.dones[i]
if (obj.stageID == stageID) {
find = obj
break
}
}
if (find) {
find.progress = progress
} else {
find = { stageID, progress }
this.data.dones.push(find)
}
this.mapDones.set(find.stageID, find.progress)
StorageManager.getInstance().onUserChanged()
}
// ================奖杯获得记录
public get_trophyRecord(year: number, month: number): TrophyRecord {
let find: TrophyRecord
for (let i = 0; i < this.data.trophy_records.length; i++) {
const obj = this.data.trophy_records[i]
if (obj.year == year && obj.month == month) {
find = obj
break
}
}
return find
}
public get_trophyHasNew(): TrophyRecord {
let find: TrophyRecord
for (let i = 0; i < this.data.trophy_records.length; i++) {
const obj = this.data.trophy_records[i]
if (obj.isNew) {
find = obj
break
}
}
return find
}
public set_trophyNew(record: TrophyRecord, isNew: boolean): void {
if (record.isNew != isNew) {
record.isNew = isNew
StorageManager.getInstance().onUserChanged()
}
}
public get_trophyHasUnread(): boolean {
let unread = false
for (let i = 0; i < this.data.trophy_records.length; i++) {
const obj = this.data.trophy_records[i]
if (obj.read == false) {
unread = true
break
}
}
return unread
}
public set_trophyAllread(): void {
let changed = false
for (let i = 0; i < this.data.trophy_records.length; i++) {
const obj = this.data.trophy_records[i]
if (obj.read == false) {
obj.read = true
changed = true
}
}
if (changed) {
StorageManager.getInstance().onUserChanged()
}
}
public add_trophy_record(year: number, month: number, day: number): void {
let find
for (let i = 0; i < this.data.trophy_records.length; i++) {
const obj = this.data.trophy_records[i]
if (obj.year == year && obj.month == month) {
find = obj
break
}
}
if (!find) {
this.data.trophy_records.push({ year, month, day, isNew: true, read: false })
StorageManager.getInstance().onUserChanged()
}
}
// =======关卡难度进度
public get_progress(difficulty: string): number {
let find: DataProgress
for (let i = 0; i < this.data.progresses.length; i++) {
const obj = this.data.progresses[i]
if (obj.difficulty == difficulty) {
find = obj
break
}
}
if (find) {
return find.index
}
return 0
}
public update_progress(difficulty: string, index: number): void {
let find: DataProgress
for (let i = 0; i < this.data.progresses.length; i++) {
const obj = this.data.progresses[i]
if (obj.difficulty == difficulty) {
find = obj
break
}
}
if (find) {
find.index = index
} else {
find = { difficulty, index }
this.data.progresses.push(find)
}
StorageManager.getInstance().onUserChanged()
}
// ====================================持久化数据
}

View File

@@ -1,53 +1,48 @@
export const EVENT_TYPES = {
NOT_UPDATE_MISTAKE: "NOT_UPDATE_MISTAKE",//更新分数
NOT_UPDATE_PAUSE: "NOT_UPDATE_PAUSE",//更新暂停状态
NOT_UPDATE_MISTAKE: "NOT_UPDATE_MISTAKE", // 更新分数
NOT_UPDATE_PAUSE: "NOT_UPDATE_PAUSE", // 更新暂停状态
NOT_SET_TROPHY_BUTTON: "NOT_SET_TROPHY_BUTTON",
NOT_SET_TROPHY_BUTTON: "NOT_SET_TROPHY_BUTTON"
}
export class EventManager {
private static instance: EventManager
public static getInstance(): EventManager {
if (!EventManager.instance) {
EventManager.instance = new EventManager()
}
return EventManager.instance
private static instance: EventManager
public static getInstance(): EventManager {
if (!EventManager.instance) {
EventManager.instance = new EventManager()
}
return EventManager.instance
}
private listeners: Map<string, Array<any>> = new Map()
private listeners: Map<string, Array<any>> = new Map()
public RegisterEvent(eventID: string, func: any): void {
if (this.listeners.has(eventID) == false) {
this.listeners.set(eventID, new Array())
}
var list: Array<any> = this.listeners.get(eventID)
var find = list.indexOf(func)
if (find < 0) {
list.push(func)
}
public RegisterEvent(eventID: string, func: any): void {
if (this.listeners.has(eventID) == false) {
this.listeners.set(eventID, [])
}
public UnregisterEvent(eventID: string, func: any): void {
if (this.listeners.has(eventID)) {
var list: Array<any> = this.listeners.get(eventID)
var find = list.indexOf(func)
if (find >= 0) {
list.splice(find, 1)
}
}
const list: Array<any> = this.listeners.get(eventID)
const find = list.indexOf(func)
if (find < 0) {
list.push(func)
}
}
public DispatchEvent(eventID: string, arg: any=null): void {
if (this.listeners.has(eventID)) {
var list: Array<any> = this.listeners.get(eventID)
for (var i=0; i<list.length; i++) {
list[i](arg)
}
}
public UnregisterEvent(eventID: string, func: any): void {
if (this.listeners.has(eventID)) {
const list: Array<any> = this.listeners.get(eventID)
const find = list.indexOf(func)
if (find >= 0) {
list.splice(find, 1)
}
}
}
}
public DispatchEvent(eventID: string, arg: any = null): void {
if (this.listeners.has(eventID)) {
const list: Array<any> = this.listeners.get(eventID)
for (let i = 0; i < list.length; i++) {
list[i](arg)
}
}
}
}

View File

@@ -1,157 +1,153 @@
import { config } from "../constants/config"
const Easy = [
"aBCeIGFhdEDFcAHBGIhigBdfecAgHDiFBCaeBEAGHCIdffcIdEAHbgcABfGEdiHIFHaCDGEBDGEHbiaFC",
"abecfIgdhdICGhbAFEHGfeAdIcBCFAbigEHDGDhFeABICIEbHdCFGAFaGDBHcEIbCDIGehAFeHIaCFdbG",
"AbIGdeHFCHFDbCieaGgEcfaHbDIEiAdBFGcHFHGcEAIBddCBHIGFEaCdfiGBAHEbgeAHCDIfIaHefdCgB",
"ACEdBIGHFBHGFacDEIdiFheGAbCcEiBdFHaGhfBGIAecDGadcHeIfBIgCaFHbDEFdAegbcIHEBHICDfGa",
"acEIhbgFDFIDAgEBHCBGHfCdeaIDEaBFgicHcFGHAidebIHbDecaGFeBFCIAHdGGDCebHfIAHAiGdfCBE",
"aCfDbGHIEGHBIcEFdaedIAFhbCGDFahGiebCHbecaDIGFiGCbEFdAHBEHGIcAfDFiGedACHBCAdFHBgei",
"ACGBfIHDeHEBCdgFAIfdIHaegcBDgEAHCIBFIbhFEdaGCcAFGIbDEHgIDebHcfabHADcFEiGEfcigABHd",
"AcGFdihBEdHEbGCAifBFIEhaGDCEgADIBfcHhibGcfDEaFDChaEigbGBHCFdEAIIEdabHCFGcAfIEGbHD",
"ACGIFbEhdbFEDGhaCIIHDCAEBGFFAIHBDceggdbecfIahHEcAIGdFBeIHFDAGBcdGFbeCHIacbAgHifdE",
"aBCeIGFhdEDFcAHBGIhigBdfecAgHDiFBCaeBEAGHCIdffcIdEAHbgcABfGEdiHIFHaCDGEBDGEHbiaFC",
"abecfIgdhdICGhbAFEHGfeAdIcBCFAbigEHDGDhFeABICIEbHdCFGAFaGDBHcEIbCDIGehAFeHIaCFdbG",
"AbIGdeHFCHFDbCieaGgEcfaHbDIEiAdBFGcHFHGcEAIBddCBHIGFEaCdfiGBAHEbgeAHCDIfIaHefdCgB",
"ACEdBIGHFBHGFacDEIdiFheGAbCcEiBdFHaGhfBGIAecDGadcHeIfBIgCaFHbDEFdAegbcIHEBHICDfGa",
"acEIhbgFDFIDAgEBHCBGHfCdeaIDEaBFgicHcFGHAidebIHbDecaGFeBFCIAHdGGDCebHfIAHAiGdfCBE",
"aCfDbGHIEGHBIcEFdaedIAFhbCGDFahGiebCHbecaDIGFiGCbEFdAHBEHGIcAfDFiGedACHBCAdFHBgei",
"ACGBfIHDeHEBCdgFAIfdIHaegcBDgEAHCIBFIbhFEdaGCcAFGIbDEHgIDebHcfabHADcFEiGEfcigABHd",
"AcGFdihBEdHEbGCAifBFIEhaGDCEgADIBfcHhibGcfDEaFDChaEigbGBHCFdEAIIEdabHCFGcAfIEGbHD",
"ACGIFbEhdbFEDGhaCIIHDCAEBGFFAIHBDceggdbecfIahHEcAIGdFBeIHFDAGBcdGFbeCHIacbAgHifdE"
]
const Medium = [
"achEDIBFGgeIHbFaDCFDBaCGHeIbHaceDGiFCIFGHBeadeGDIFAChbDAGbIeFCHhfEdGCIbaiBcFAhdGE",
"ADBeIGhFCGhCDFabiefiECHBgDACGDbaFieHEBIHGCFADhFAIedCbGdAFGbheCIbEhaciDGFIcGFDeaHb",
"aDBIEcHFGEGHbDFcaiIFCAGHeDbgHdEIafBCCIaHFbdGeBefGcdIHADCGFbeAIHhbedAIGcFFaIcHgBEd",
"AdEGCHfibHGbefIacdCIFABdehgICgHDAbFefahbecDgIEBDIGFCAHbeICAGHDFGFCDheIbADHAFIBGec",
"ADeIBFgHCIHFcgabdebGCeDhaIfHfaDeIcGbgIBFacHEdECdBHGFaiFBHAIEDcGDeGHcBiFaCAIgFDEBH",
"aDFIEHbcGciHaGbFDEeGBcdFHIAbeadhCgfIGHIfBEcAdFCdGAIeHBDAeHcgibFHFGbIDaECIBcEFADGh",
"aDgEICFBHHCFdGBAeIIEBFHacdgcAEgBIdhFDGhCFEiabBFIADHEGCGbciaDHfEEHdbcFgiAFiAHeGbcd",
"adHEbCIfGegBfHIDAcIcfgDaHEBDFABIGcHEHIcdfegbaBEGcAHFdIFAdIgBeCHCbihEFAGdghEACDBIF",
"aecDbHIGFDGHCFIBEAfiBEGaHCdgAFBIedHcHCEaDFGBIbDIghCFAeibahcdeFGcHdfeGAIBefGIAbCDH",
"achEDIBFGgeIHbFaDCFDBaCGHeIbHaceDGiFCIFGHBeadeGDIFAChbDAGbIeFCHhfEdGCIbaiBcFAhdGE",
"ADBeIGhFCGhCDFabiefiECHBgDACGDbaFieHEBIHGCFADhFAIedCbGdAFGbheCIbEhaciDGFIcGFDeaHb",
"aDBIEcHFGEGHbDFcaiIFCAGHeDbgHdEIafBCCIaHFbdGeBefGcdIHADCGFbeAIHhbedAIGcFFaIcHgBEd",
"AdEGCHfibHGbefIacdCIFABdehgICgHDAbFefahbecDgIEBDIGFCAHbeICAGHDFGFCDheIbADHAFIBGec",
"ADeIBFgHCIHFcgabdebGCeDhaIfHfaDeIcGbgIBFacHEdECdBHGFaiFBHAIEDcGDeGHcBiFaCAIgFDEBH",
"aDFIEHbcGciHaGbFDEeGBcdFHIAbeadhCgfIGHIfBEcAdFCdGAIeHBDAeHcgibFHFGbIDaECIBcEFADGh",
"aDgEICFBHHCFdGBAeIIEBFHacdgcAEgBIdhFDGhCFEiabBFIADHEGCGbciaDHfEEHdbcFgiAFiAHeGbcd",
"adHEbCIfGegBfHIDAcIcfgDaHEBDFABIGcHEHIcdfegbaBEGcAHFdIFAdIgBeCHCbihEFAGdghEACDBIF",
"aecDbHIGFDGHCFIBEAfiBEGaHCdgAFBIedHcHCEaDFGBIbDIghCFAeibahcdeFGcHdfeGAIBefGIAbCDH"
]
const Hard = [
"AEdfiHgCBIFGECbahdcbHGADeIFGIFCDaBeHHDCbGEIFAeabhfICdgbCIAHFDGeFGadEcHBiDHeIBgFac",
"aEFGBihCdHcIefdGBAGdbcahIfeIBAFDcegHDHEAGBCiFFgcHIEadBeFHDCGBaicidBHAFEGbAGIeFDHC",
"AEGIdchFBFICbehgAdbHDFAGeIchdEgBaFCiGbfchIadeCAIefdbGHdfBaIeChGEGHdCFibAIcaHGbDEf",
"afbCGDehiIGhEaFCdBECDIbHAFGhEGADbfICdbifechGAFACHIGbeDgDFBHAIcEcIaDFeGBHBHegCIdaF",
"AFhIgCdEBcEGDBHAFIiDbfaeGCHhGIEcfbdafcdBIAHGEBaeHdGCIfEBACFdIHggHcAeiFbDdiFGHBEAC",
"agcfdHbEIHBDEIGCaFFiecBAhGDBEghcFIdaDHiAGbEfCCAFiEdGBHGCabfIdHeIDHgAEFCbEFBdHcAIg",
"agibdeFchcHDGIfeBAEFbHAcDIgiDCAEBGHFHBeDFGCaIFAGICHBdEgEaCBihfdbIfeHDAGCdCHFGaIeb",
"AHbIEDcGFCifgHBAdeGEDAfcIHBBdGHCEFaiIFcbdaHeGHaeFIGBCDeBAcGFdIhFGHDaieBcDcIebhGFA",
"AHEbCIGfdiBGDEFHCAdfcHGaBIEBGICfdaeHhCFEAbIdGEAdihgFbcFIAgDECHbcdBAIHegfGEHFbcdAI",
"AHECBgFdIBIGDAfhCECfDHIEagbIGHEDcBFAEBFAGichddCaBFHeigFEIgHadbChDcIeBGaFGabFcdiEH",
"AEdfiHgCBIFGECbahdcbHGADeIFGIFCDaBeHHDCbGEIFAeabhfICdgbCIAHFDGeFGadEcHBiDHeIBgFac",
"aEFGBihCdHcIefdGBAGdbcahIfeIBAFDcegHDHEAGBCiFFgcHIEadBeFHDCGBaicidBHAFEGbAGIeFDHC",
"AEGIdchFBFICbehgAdbHDFAGeIchdEgBaFCiGbfchIadeCAIefdbGHdfBaIeChGEGHdCFibAIcaHGbDEf",
"afbCGDehiIGhEaFCdBECDIbHAFGhEGADbfICdbifechGAFACHIGbeDgDFBHAIcEcIaDFeGBHBHegCIdaF",
"AFhIgCdEBcEGDBHAFIiDbfaeGCHhGIEcfbdafcdBIAHGEBaeHdGCIfEBACFdIHggHcAeiFbDdiFGHBEAC",
"agcfdHbEIHBDEIGCaFFiecBAhGDBEghcFIdaDHiAGbEfCCAFiEdGBHGCabfIdHeIDHgAEFCbEFBdHcAIg",
"agibdeFchcHDGIfeBAEFbHAcDIgiDCAEBGHFHBeDFGCaIFAGICHBdEgEaCBihfdbIfeHDAGCdCHFGaIeb",
"AHbIEDcGFCifgHBAdeGEDAfcIHBBdGHCEFaiIFcbdaHeGHaeFIGBCDeBAcGFdIhFGHDaieBcDcIebhGFA",
"AHEbCIGfdiBGDEFHCAdfcHGaBIEBGICfdaeHhCFEAbIdGEAdihgFbcFIAgDECHbcdBAIHegfGEHFbcdAI",
"AHECBgFdIBIGDAfhCECfDHIEagbIGHEDcBFAEBFAGichddCaBFHeigFEIgHadbChDcIeBGaFGabFcdiEH"
]
const Expert = [
"AHEIDCFGBiBFGaedchcdghbfIEADfHEIACBgbeADCGHfiGCibFHaDEeaBcHDGIFHIdFgBeAcFGCaeIBhD",
"AHEIFGcbDDgBacefhIFIcBdHGeACbdHIFAgehfgEAcIDbEaIGBDHFCIEAFGbdcHBDFchaeiGgCHDEIbAF",
"aIBCFDeHGcGFHaeIdbdHEIGBafCFDGahcbieBeaGDIHcFICHEBfdGAHADFEgcbIgBIdcaFEHEFCbiHGAd",
"AIBHEFDcGEFcaDGihbHDGBCIAefGHFiadEBCBCAeFHGIdIEDGBcHFaCAiFGebdhfbHdIaCgedgECHbfAi",
"aiDHBEfCGCGEFIdhBABFHCaGEdiIDGEHbcAfHABifcdgeECFgDaIHBFBaDEHGiCdECbGIafHGhiacFBed",
"aIgdfbhcEdBEHCiGFAFCHEGaBdIIFbCAGDEHcHABDeFigegdIHFCabBDiFEHAGcHACGIDEBFGefabcihd",
"AIGdFebCHBfHiaCdGEEDcgHbIaFgcBfeAHIdiHecgDfBAfaDbIhgeccbfaDIeHGhGIECFadbdeAHBGCFI",
"baDEHGIFCGIHDCfABEceFAIBgdhfdchGIEABIgAbdEHcFEHbfaCDGIABeGFhciddFiCEabhGHCgIBdFEA",
"baicHdegFHEdIFGcABGFCaebhidfbadGCIHEICEfAhBDGdGHBIeaFCAHBEDfGCICDGHBifEaeiFGCADBh",
"BaiGFcdEHdFCHEAIGBhEgbDIcfaCidFAeBHGFBACGhEIdghEDibAcfEdBIHFgAcaGHECdFBIICfabGHDe",
"bCFIGHADeHAGdFebCIDIEaBcFGHEbHGAFDIcgdCbhieFaafiCEDHBGCEBHdGIafIHAFcbgeDfgDeiACHb",
"BdaHFIEGCicHDgEafBEGFBACDIHfbDcEgIHAHAIFBdgceCeGihAbDFDIbEchFaggFCadbHEIaHEGIfcBD",
"BDCEFiGAHIHacGBeDFGEFHADIBcEIdfHACgBhCGbDEaFIFABgicdHeaFhiEgbCdDbiaChfeGCGEdbFHIa",
"bdEcFAHIGCAIegHFBDFGHBDICaEehfaBDIGCDCgiHeaFBIBAFcgedhaicgEbDHFGeDhAFbcIHFbDiCGEa",
"BEaihfcdgCFIGEDAHBgDHACBIFeFIdhaeGbcAHGcBIDEfebcdFGHAIDgeBIHFCaHCbFGAeiDIAfEdcbGH",
"BehdIcaFgCfGeAHIbdaIdfBGCheEgcIDFHAbdAFHeBGCiIHBGcaDefFCIBHdeGAHbeaGIFDCGDACfEBIH",
"BfHCEGADIIdchAFGbeGaEiBdCHFFBigCADEHHEGBdIfaCDCafhEiGBeGFDIHbCacHdaFBEiGaIbegcHFd",
"AHEIDCFGBiBFGaedchcdghbfIEADfHEIACBgbeADCGHfiGCibFHaDEeaBcHDGIFHIdFgBeAcFGCaeIBhD",
"AHEIFGcbDDgBacefhIFIcBdHGeACbdHIFAgehfgEAcIDbEaIGBDHFCIEAFGbdcHBDFchaeiGgCHDEIbAF",
"aIBCFDeHGcGFHaeIdbdHEIGBafCFDGahcbieBeaGDIHcFICHEBfdGAHADFEgcbIgBIdcaFEHEFCbiHGAd",
"AIBHEFDcGEFcaDGihbHDGBCIAefGHFiadEBCBCAeFHGIdIEDGBcHFaCAiFGebdhfbHdIaCgedgECHbfAi",
"aiDHBEfCGCGEFIdhBABFHCaGEdiIDGEHbcAfHABifcdgeECFgDaIHBFBaDEHGiCdECbGIafHGhiacFBed",
"aIgdfbhcEdBEHCiGFAFCHEGaBdIIFbCAGDEHcHABDeFigegdIHFCabBDiFEHAGcHACGIDEBFGefabcihd",
"AIGdFebCHBfHiaCdGEEDcgHbIaFgcBfeAHIdiHecgDfBAfaDbIhgeccbfaDIeHGhGIECFadbdeAHBGCFI",
"baDEHGIFCGIHDCfABEceFAIBgdhfdchGIEABIgAbdEHcFEHbfaCDGIABeGFhciddFiCEabhGHCgIBdFEA",
"baicHdegFHEdIFGcABGFCaebhidfbadGCIHEICEfAhBDGdGHBIeaFCAHBEDfGCICDGHBifEaeiFGCADBh",
"BaiGFcdEHdFCHEAIGBhEgbDIcfaCidFAeBHGFBACGhEIdghEDibAcfEdBIHFgAcaGHECdFBIICfabGHDe",
"bCFIGHADeHAGdFebCIDIEaBcFGHEbHGAFDIcgdCbhieFaafiCEDHBGCEBHdGIafIHAFcbgeDfgDeiACHb",
"BdaHFIEGCicHDgEafBEGFBACDIHfbDcEgIHAHAIFBdgceCeGihAbDFDIbEchFaggFCadbHEIaHEGIfcBD",
"BDCEFiGAHIHacGBeDFGEFHADIBcEIdfHACgBhCGbDEaFIFABgicdHeaFhiEgbCdDbiaChfeGCGEdbFHIa",
"bdEcFAHIGCAIegHFBDFGHBDICaEehfaBDIGCDCgiHeaFBIBAFcgedhaicgEbDHFGeDhAFbcIHFbDiCGEa",
"BEaihfcdgCFIGEDAHBgDHACBIFeFIdhaeGbcAHGcBIDEfebcdFGHAIDgeBIHFCaHCbFGAeiDIAfEdcbGH",
"BehdIcaFgCfGeAHIbdaIdfBGCheEgcIDFHAbdAFHeBGCiIHBGcaDefFCIBHdeGAHbeaGIFDCGDACfEBIH",
"BfHCEGADIIdchAFGbeGaEiBdCHFFBigCADEHHEGBdIfaCDCafhEiGBeGFDIHbCacHdaFBEiGaIbegcHFd"
]
const Extreme = [
"BGDiEAfchahcFBDIGEEIFhgCDabFAHGibedcDEGACHbIFCbIEdfGHagDACfEHBihFBDAIcegICEbHGaFd",
"BGFAIHDCEDHicegBAfEACFDbIGHidhbCEgFAaEGIhfcDBFCbgadeHIHIedGafBCcbdhFiAEGGFAEbcHID",
"BGFHIAdECaiCdBEFGHhDeFcgbaiGFBeAICHdICAGdHEFbdeHCFBGIAFhIBGDACEeBGaHcIDfcadiefhbg",
"BhAcGEIDFIGdBaFCHefeCHiDGbaeaBFcIdGHcDGEHAFIBhifgdBEACAcIDFHbEGGbHIEcaFDdFeabGhcI",
"BHeadfiCGICAgbHDEFdFgIEcHabgEHdFabICcadBHIfGEFBICGEAdHeiBFAGcHdHdCeIBGfAaGfHcDEBI",
"BHFcEdgaigIDAfbEHcCEaIGHBfDdfIGHCAeBhCBeIADGFAGedbFcihFdHBaGIceIacfDEHBGEbGHCIFdA",
"biADChGFEEHFIagbDCcGDBFEAHIIaeFHDCGBFBHgIcdEadcGebAhIFHfBAGIECDgDICEbFahaechdFibg",
"bICEGDHFAHFeaICdbGaDGbFHEcIEadfcgIHbFGHIbECAdICBhdAfGEcHiDAbgefGBFceiadhDEAGHFBIC",
"bieDFaGHcgcaeHiDbFHfDGcBiAECHIBgEFdaDGBHafEciAEFIDcbghFBcaIdheGIdHCEGAFBEAGFBHCID",
"BIFCAdhGeDhAEbgFCICEgFHiBDaFBEGDAIHCADHicBEfggciHFeDabHGDBicaefiacdeFGbHEFBaGHCID",
"bihCGEADfFAGIbDchEedCfahbigCFDEIGHbaIbEHdaFGCHGaBCfIEdGcFdHbeAIAEBGFIDcHdhIAEcGFB",
"CaBhedgfiidHcFGAEbEFGbiahCDAEIGDbFHcFGdIhcebahBCFaEDiGDHAECIBGFbCEdGFIAHGIfaBhCDE",
"cbFDEGiAHGIacFHdebdeHibAgFcfdIBCehGABHgAIFECdACEgHdfBIIGbFDCahEeAdHGBCIFHfceAIBDG",
"cbgHEaFdIaIdcbfGEHEHFigDBACbFEAIHdCGhcAEDGIBFDGIBFCehaGDCFABHIEiabGHecfdFehdcIaGB",
"CbhdAEIGfaEFgibCdhIGDHCFBEafDEBHaGICGibcfdhAehcAIeGFbddFIEbHAcGEHCagIDFBBAGfDCEHI",
"CDabGEHIFeFhIaCGDbbgIHdFcAEAcEGhbifdGIbCFdaEHdHfaEiBGciaDFCHEbghEgDbafCIFbceiGDha",
"cdgeAIBfhhbFDCgIAeAiEHbFcDGBFICGEdHAdGhBFaECIeACIdHGbfIedFHcagBGhbaEdficfCagiBHed",
"cDgIbFEAHehbdGaFICiafecHgDBACIGEBhfdgbdfhiCeAHFECAdbGIBIHAFedcgfGABdCIheDechIGabF",
"CEBIAFHGDIhAdEgbcfgFdCbheaIFGHACIDEbeBCGFdIhADaIbHEcFgBIEFGcAdHHdGEiaFbcAcFHDBgie",
"cEHGfdIABFIgCAbhedAbDeIHcGfeABFcGdHIHDFBEIACGigChdafbEbFaDHEgIcGCIAbfeDHDHeIGcBFA",
"ceIBaDGfhHaGcfiDEbBdFhGEIaCAHbFICEgDGiCdEahbFEfDGhbACIfbhEDGcIAiCeabHFdgdgaIcFBhe",
"CeiBaGHDfADGfeHIBCbFHidcegAdHCeFagIBIGECHBAFDFBAgIdcHEEaFHBIDcGgidacfBEHHCBdGefaI",
"cEIDAGFHbgDBEFhICAFHAIBCeGdbGFhIeadCACDBGFHIehIecDAGBFdacGEiBfHIfHAcbDEgEbgfhdCai",
"CFeabGHIDGBdHEIfcaihACDFBegEGIBadcHFbDcGFHEAIHAFEICgDBAcGihbDFEFIHdgeabcdebfCAIGH",
"CFEIAdbgHaHicbgDeFGDBEFhcIAeGHADCIfBIcFghbAdEBADFIEhcGFbcHGIeaDHEADCFGbidigBEaFHc",
"CGaBfHIdEHEiacDFBGDbFIgEHcaadcFBgEIHfhECDIGaBBiGHEadFcgCdEIBAHFiAbgHfCEdEFHdacBGI",
"CGhAIbfEDFAIEdhcBgDEBCGfHaIIDgbheACFHFcDaIbgeebAGFcIDHGCFibdEHABHDFEaGicaIeHcgDFB",
"cHbEFDGAIAdIcgBEFHegfhIAcbDHACbDGfieIbEACFDHgGFdIheACBBCaGEHidfdEhfaIBGcFIGDbCHEa",
"cidGHEBFAFaeBDcIGHbHgAFIECdgeIHafdbcAdfecbHIGHbCDIGAEFEFaCBHgDIDCbIGaFheighFEDCAB",
"cIFDHAEbgebHgicAfdaGDEFbhCIBDacGFIEHFHIABEGDCgcehdIFABdeGBAHCIFhfciEdbgAIABFCGDhe",
"CIFeBahdGHGDIcFebabaegDHIcfdhAbEcFGiIfcaHgdEbEBGDFIcAHFcbhaEgidaEIfGDBhCGdHciBAFE",
"DAeFBIHGcFiCHGeBadhGBadCFeIabgIHDECFIEDGCFabhChFBEAdIGbcadfGIHEEdhCiBgFAGfiEAHCdb",
"dafibcGHEHIEFdgcbaBCGAHEDIfeHcDgbfaIGBAHIFECDIFdEcAHGbaGBceDIfHFehGaIBdCCdIBfHAEG",
"DaFIcbHgebeHGDFAiccgiEAHDFBEBcAHgFDIGHdCfibEaIFabEdGcHHIGfBeCAdFCbDIAehGAdEHGcIBF",
"DaibFEGHCGHECIDaBFcFbGHaIDeHiAedbFcGEgFicHBAdBCDAgFheIIEHdAGcfBFDchBIEGAabgFecDiH",
"DaIbGFHeCFChaiebdGGeBdCHIFaCbGFADEHIHFAIEbGCdIDEcHgAbFBGcHDafiEEIFGbcdahahdEFiCGB",
"dAIcebGFHgBEHFaCiDhcFdgIAbeIDBFaGeHcCeAIDHFgBfGhBcEIdABFgAHCDEIAHdeIFBcGeICGbDhaf",
"dbFECIAgHIGaFDHBCeHEcAGbDiFFDBgheiacECGIAFHBDaIHDbceFGcHEbfaGDibfdHIGCEAgaiCEDFhb",
"DbgiCFaehcaehbdIGFHIfAEGCBDgfCeIHDABIHAbDCGFEEdbFGAhCIBEDcaiFHGaGHDfBEIcFciGhEbdA",
"DEbfcgaHIFaIHDbCegcHGaiEFbDAfebhdIGcidCEGABFHgBHcFIdAEhgfibceDaeIdGafHcBBCaDEhGIF",
"dEGHAfIbCBIHcEGFDACFABDIEGhFhbagCdIEEDCfibhAGGAIeHdBCFIGfdcHaEbHCeibaGFDAbdgFechI",
"DFACBhGIEgchaIeFDbBEIFDGaChAHFbgidEcedcHAfbGIIGbdecHAFFBGECDIHAcadIHbefGHiEgFACBD",
"dfbeahiCgECgiDbfHAAihGFCdeBGbFHCDEAihDIAgecBFcaEBIFgDHFGDCHaBIEIeADBGHFcBHcFEIaGd",
"dfeGchaIBICAFbeHgdgBHdAIfceCHIAeBGdfAGBIFDEHcFEDHGCIBaEDgcIFBAHHIfbdAceGbACehGDFi",
"dGaICHBFEFBIAedHcGCEhgBFIADHcEdfagBiaIbeHGCDfgDFciBEHAEAdHGCFIbbhgFdIaEcIFcbAEDGh",
"dGeihbaCFHFBCADgIECiaeFGBDHEDIgBHcfAbACFDiHEGGHFaEcibdaehBIFDGcFBGdcaEhIICDHgEfaB",
"dHcIFGABEIegCABFdHFbADHEIgCaGFebdCHIEDHaCIBFgciBHGFEadbaDGechiFhCIFDageBGfEBiHDca",
"dHGaicbeFEacFHBIDgIbFeDghcAHeIDcAFGBFdbHgECaIGcABFIDHeaIHcEFgbDBfDGAHEiCCGEIbdAFh",
"DICbAEhgfFaGIHDBCEbEHFCGADIEcBGDIFAhaDFCeHibggHiAFBdECIbehGAcFdcGadIFEhBhFDebcGia",
"diGbCEaHFAfCIdhEBghBeAGFCdiCEbDHGFIAIgdfEaBcHFaHcIBgedgcAhBdIFEEDiGfchabbHFEaidgc",
"diGEHFBCAHcaIBGEdfeFbCadIhgiGEDFAHBCaHFBcEDGICBDHGIfAegdcFEBAIHbehAIcGfDFaIGdhceb",
"eaBdfIHGcIGdCHbFAEfHCAGEDBigcebdHAIFhFAiECGdBBdifAGECHabFecdIHGDiHGBFCeaCEgHIabFD",
"EABFHiGcDHdICgaebfcGFBdeAHIaCDHIgBFEbFeaCDIGHiHGEFBdACfbaDECHIGgEHiBfcdadICGahFeB",
"eacIBFhdgGHBecDaFIDIfgAhCBECFGHDEiabIdHaGBECFabeCFIGHDfCiBHGdeAHgdFEabIcBEADiCFGh",
"EadCFbIhGbGCiahdeffhiGedcABGDbEiFHCACEadhgbFIIfHBcAeGddCfabegiHaBEHGIFDChIGFDcaBE",
"BGDiEAfchahcFBDIGEEIFhgCDabFAHGibedcDEGACHbIFCbIEdfGHagDACfEHBihFBDAIcegICEbHGaFd",
"BGFAIHDCEDHicegBAfEACFDbIGHidhbCEgFAaEGIhfcDBFCbgadeHIHIedGafBCcbdhFiAEGGFAEbcHID",
"BGFHIAdECaiCdBEFGHhDeFcgbaiGFBeAICHdICAGdHEFbdeHCFBGIAFhIBGDACEeBGaHcIDfcadiefhbg",
"BhAcGEIDFIGdBaFCHefeCHiDGbaeaBFcIdGHcDGEHAFIBhifgdBEACAcIDFHbEGGbHIEcaFDdFeabGhcI",
"BHeadfiCGICAgbHDEFdFgIEcHabgEHdFabICcadBHIfGEFBICGEAdHeiBFAGcHdHdCeIBGfAaGfHcDEBI",
"BHFcEdgaigIDAfbEHcCEaIGHBfDdfIGHCAeBhCBeIADGFAGedbFcihFdHBaGIceIacfDEHBGEbGHCIFdA",
"biADChGFEEHFIagbDCcGDBFEAHIIaeFHDCGBFBHgIcdEadcGebAhIFHfBAGIECDgDICEbFahaechdFibg",
"bICEGDHFAHFeaICdbGaDGbFHEcIEadfcgIHbFGHIbECAdICBhdAfGEcHiDAbgefGBFceiadhDEAGHFBIC",
"bieDFaGHcgcaeHiDbFHfDGcBiAECHIBgEFdaDGBHafEciAEFIDcbghFBcaIdheGIdHCEGAFBEAGFBHCID",
"BIFCAdhGeDhAEbgFCICEgFHiBDaFBEGDAIHCADHicBEfggciHFeDabHGDBicaefiacdeFGbHEFBaGHCID",
"bihCGEADfFAGIbDchEedCfahbigCFDEIGHbaIbEHdaFGCHGaBCfIEdGcFdHbeAIAEBGFIDcHdhIAEcGFB",
"CaBhedgfiidHcFGAEbEFGbiahCDAEIGDbFHcFGdIhcebahBCFaEDiGDHAECIBGFbCEdGFIAHGIfaBhCDE",
"cbFDEGiAHGIacFHdebdeHibAgFcfdIBCehGABHgAIFECdACEgHdfBIIGbFDCahEeAdHGBCIFHfceAIBDG",
"cbgHEaFdIaIdcbfGEHEHFigDBACbFEAIHdCGhcAEDGIBFDGIBFCehaGDCFABHIEiabGHecfdFehdcIaGB",
"CbhdAEIGfaEFgibCdhIGDHCFBEafDEBHaGICGibcfdhAehcAIeGFbddFIEbHAcGEHCagIDFBBAGfDCEHI",
"CDabGEHIFeFhIaCGDbbgIHdFcAEAcEGhbifdGIbCFdaEHdHfaEiBGciaDFCHEbghEgDbafCIFbceiGDha",
"cdgeAIBfhhbFDCgIAeAiEHbFcDGBFICGEdHAdGhBFaECIeACIdHGbfIedFHcagBGhbaEdficfCagiBHed",
"cDgIbFEAHehbdGaFICiafecHgDBACIGEBhfdgbdfhiCeAHFECAdbGIBIHAFedcgfGABdCIheDechIGabF",
"CEBIAFHGDIhAdEgbcfgFdCbheaIFGHACIDEbeBCGFdIhADaIbHEcFgBIEFGcAdHHdGEiaFbcAcFHDBgie",
"cEHGfdIABFIgCAbhedAbDeIHcGfeABFcGdHIHDFBEIACGigChdafbEbFaDHEgIcGCIAbfeDHDHeIGcBFA",
"ceIBaDGfhHaGcfiDEbBdFhGEIaCAHbFICEgDGiCdEahbFEfDGhbACIfbhEDGcIAiCeabHFdgdgaIcFBhe",
"CeiBaGHDfADGfeHIBCbFHidcegAdHCeFagIBIGECHBAFDFBAgIdcHEEaFHBIDcGgidacfBEHHCBdGefaI",
"cEIDAGFHbgDBEFhICAFHAIBCeGdbGFhIeadCACDBGFHIehIecDAGBFdacGEiBfHIfHAcbDEgEbgfhdCai",
"CFeabGHIDGBdHEIfcaihACDFBegEGIBadcHFbDcGFHEAIHAFEICgDBAcGihbDFEFIHdgeabcdebfCAIGH",
"CFEIAdbgHaHicbgDeFGDBEFhcIAeGHADCIfBIcFghbAdEBADFIEhcGFbcHGIeaDHEADCFGbidigBEaFHc",
"CGaBfHIdEHEiacDFBGDbFIgEHcaadcFBgEIHfhECDIGaBBiGHEadFcgCdEIBAHFiAbgHfCEdEFHdacBGI",
"CGhAIbfEDFAIEdhcBgDEBCGfHaIIDgbheACFHFcDaIbgeebAGFcIDHGCFibdEHABHDFEaGicaIeHcgDFB",
"cHbEFDGAIAdIcgBEFHegfhIAcbDHACbDGfieIbEACFDHgGFdIheACBBCaGEHidfdEhfaIBGcFIGDbCHEa",
"cidGHEBFAFaeBDcIGHbHgAFIECdgeIHafdbcAdfecbHIGHbCDIGAEFEFaCBHgDIDCbIGaFheighFEDCAB",
"cIFDHAEbgebHgicAfdaGDEFbhCIBDacGFIEHFHIABEGDCgcehdIFABdeGBAHCIFhfciEdbgAIABFCGDhe",
"CIFeBahdGHGDIcFebabaegDHIcfdhAbEcFGiIfcaHgdEbEBGDFIcAHFcbhaEgidaEIfGDBhCGdHciBAFE",
"DAeFBIHGcFiCHGeBadhGBadCFeIabgIHDECFIEDGCFabhChFBEAdIGbcadfGIHEEdhCiBgFAGfiEAHCdb",
"dafibcGHEHIEFdgcbaBCGAHEDIfeHcDgbfaIGBAHIFECDIFdEcAHGbaGBceDIfHFehGaIBdCCdIBfHAEG",
"DaFIcbHgebeHGDFAiccgiEAHDFBEBcAHgFDIGHdCfibEaIFabEdGcHHIGfBeCAdFCbDIAehGAdEHGcIBF",
"DaibFEGHCGHECIDaBFcFbGHaIDeHiAedbFcGEgFicHBAdBCDAgFheIIEHdAGcfBFDchBIEGAabgFecDiH",
"DaIbGFHeCFChaiebdGGeBdCHIFaCbGFADEHIHFAIEbGCdIDEcHgAbFBGcHDafiEEIFGbcdahahdEFiCGB",
"dAIcebGFHgBEHFaCiDhcFdgIAbeIDBFaGeHcCeAIDHFgBfGhBcEIdABFgAHCDEIAHdeIFBcGeICGbDhaf",
"dbFECIAgHIGaFDHBCeHEcAGbDiFFDBgheiacECGIAFHBDaIHDbceFGcHEbfaGDibfdHIGCEAgaiCEDFhb",
"DbgiCFaehcaehbdIGFHIfAEGCBDgfCeIHDABIHAbDCGFEEdbFGAhCIBEDcaiFHGaGHDfBEIcFciGhEbdA",
"DEbfcgaHIFaIHDbCegcHGaiEFbDAfebhdIGcidCEGABFHgBHcFIdAEhgfibceDaeIdGafHcBBCaDEhGIF",
"dEGHAfIbCBIHcEGFDACFABDIEGhFhbagCdIEEDCfibhAGGAIeHdBCFIGfdcHaEbHCeibaGFDAbdgFechI",
"DFACBhGIEgchaIeFDbBEIFDGaChAHFbgidEcedcHAfbGIIGbdecHAFFBGECDIHAcadIHbefGHiEgFACBD",
"dfbeahiCgECgiDbfHAAihGFCdeBGbFHCDEAihDIAgecBFcaEBIFgDHFGDCHaBIEIeADBGHFcBHcFEIaGd",
"dfeGchaIBICAFbeHgdgBHdAIfceCHIAeBGdfAGBIFDEHcFEDHGCIBaEDgcIFBAHHIfbdAceGbACehGDFi",
"dGaICHBFEFBIAedHcGCEhgBFIADHcEdfagBiaIbeHGCDfgDFciBEHAEAdHGCFIbbhgFdIaEcIFcbAEDGh",
"dGeihbaCFHFBCADgIECiaeFGBDHEDIgBHcfAbACFDiHEGGHFaEcibdaehBIFDGcFBGdcaEhIICDHgEfaB",
"dHcIFGABEIegCABFdHFbADHEIgCaGFebdCHIEDHaCIBFgciBHGFEadbaDGechiFhCIFDageBGfEBiHDca",
"dHGaicbeFEacFHBIDgIbFeDghcAHeIDcAFGBFdbHgECaIGcABFIDHeaIHcEFgbDBfDGAHEiCCGEIbdAFh",
"DICbAEhgfFaGIHDBCEbEHFCGADIEcBGDIFAhaDFCeHibggHiAFBdECIbehGAcFdcGadIFEhBhFDebcGia",
"diGbCEaHFAfCIdhEBghBeAGFCdiCEbDHGFIAIgdfEaBcHFaHcIBgedgcAhBdIFEEDiGfchabbHFEaidgc",
"diGEHFBCAHcaIBGEdfeFbCadIhgiGEDFAHBCaHFBcEDGICBDHGIfAegdcFEBAIHbehAIcGfDFaIGdhceb",
"eaBdfIHGcIGdCHbFAEfHCAGEDBigcebdHAIFhFAiECGdBBdifAGECHabFecdIHGDiHGBFCeaCEgHIabFD",
"EABFHiGcDHdICgaebfcGFBdeAHIaCDHIgBFEbFeaCDIGHiHGEFBdACfbaDECHIGgEHiBfcdadICGahFeB",
"eacIBFhdgGHBecDaFIDIfgAhCBECFGHDEiabIdHaGBECFabeCFIGHDfCiBHGdeAHgdFEabIcBEADiCFGh",
"EadCFbIhGbGCiahdeffhiGedcABGDbEiFHCACEadhgbFIIfHBcAeGddCfabegiHaBEHGIFDChIGFDcaBE"
]
export class LevelManager {
private static instance: LevelManager
public static getInstance(): LevelManager {
if (!LevelManager.instance) {
LevelManager.instance = new LevelManager()
}
return LevelManager.instance
}
private static instance: LevelManager
public static getInstance(): LevelManager {
if (!LevelManager.instance) {
LevelManager.instance = new LevelManager()
private levelMap: Map<string, Array<string>> = new Map()
public init(): void {
this.levelMap.set(config.DIFFICULTY_TYPE.Easy, Easy)
this.levelMap.set(config.DIFFICULTY_TYPE.Medium, Medium)
this.levelMap.set(config.DIFFICULTY_TYPE.Hard, Hard)
this.levelMap.set(config.DIFFICULTY_TYPE.Expert, Expert)
this.levelMap.set(config.DIFFICULTY_TYPE.Extreme, Extreme)
// 检查关卡配置
this.levelMap.forEach((list, key) => {
for (let i = 0; i < list.length; i++) {
if (list[i].length != 81) {
console.error("关卡配置有误>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", key, i)
}
return LevelManager.instance
}
}
})
}
private levelMap: Map<string, Array<string>> = new Map()
public init(): void {
this.levelMap.set(config.DIFFICULTY_TYPE.Easy, Easy)
this.levelMap.set(config.DIFFICULTY_TYPE.Medium, Medium)
this.levelMap.set(config.DIFFICULTY_TYPE.Hard, Hard)
this.levelMap.set(config.DIFFICULTY_TYPE.Expert, Expert)
this.levelMap.set(config.DIFFICULTY_TYPE.Extreme, Extreme)
//检查关卡配置
this.levelMap.forEach((list, key)=>{
for (var i=0; i<list.length; i++) {
if (list[i].length != 81) {
console.error("关卡配置有误>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", key, i)
}
}
})
}
public getLevelList(difficulty: string): Array<string> {
const list = this.levelMap.get(difficulty)
return list
}
public getLevelList(difficulty: string): Array<string> {
var list = this.levelMap.get(difficulty)
return list
public getLevelStr(difficulty: string, index: number): string {
const list = this.levelMap.get(difficulty)
if (list) {
return list[index]
}
public getLevelStr(difficulty: string, index: number): string {
var list = this.levelMap.get(difficulty)
if (list) {
return list[index]
}
return ""
}
return ""
}
}

View File

@@ -1,14 +1,11 @@
import type { DataStage } from "../types/global"
import { config } from "../constants/config"
import { DataStage, createDataStage } from "../types/global"
import { createDataStage } from "../types/global"
import { DOStage } from "./DOStage"
import { DOUser } from "./DOUser"
import { LevelManager } from "./LevelManager"
export class StorageManager {
private static instance: StorageManager
public static getInstance(): StorageManager {
if (!StorageManager.instance) {
@@ -17,23 +14,21 @@ export class StorageManager {
return StorageManager.instance
}
private user: DOUser;
private user: DOUser
private userChanged = false
private stageID: string = "";
private stageID: string = ""
private stageChanged = false
private stageMap: Map<string, DOStage> = new Map();
private stageMap: Map<string, DOStage> = new Map()
public init(): void {
if (!this.user) {
var jsonStr = Laya.LocalStorage.getItem("user")
if (jsonStr) {
this.user = new DOUser(JSON.parse(jsonStr))
}
else {
this.user = new DOUser({dones: new Array(), trophy_records: new Array(), progresses: new Array()})
}
const jsonStr = Laya.LocalStorage.getItem("user")
if (jsonStr) {
this.user = new DOUser(JSON.parse(jsonStr))
} else {
this.user = new DOUser({ dones: [], trophy_records: [], progresses: [] })
}
}
this.userChanged = false
@@ -41,72 +36,70 @@ export class StorageManager {
this.stageChanged = false
}
public getUser(): DOUser {
return this.user
}
public saveUser(): void {
if (this.userChanged) {
this.userChanged = false
if (this.user) {
var jsonStr = JSON.stringify(this.user.getData())
const jsonStr = JSON.stringify(this.user.getData())
Laya.LocalStorage.setItem("user", jsonStr)
}
}
}
public onUserChanged(): void {
this.userChanged = true
}
public newStage(stageID: string, type: number, name: string, difficulty: string = config.DIFFICULTY_TYPE.Easy): DOStage {
this.stageID = stageID
this.stageChanged = true
var index
if (type == config.STAGE_TYPE.MAIN) {//主线关卡
let index
if (type == config.STAGE_TYPE.MAIN) { // 主线关卡
index = this.user.get_progress(difficulty)
var levelStr = LevelManager.getInstance().getLevelStr(difficulty, index)
if (!levelStr || levelStr.length <= 0) {//说明当前难度已经打通了,所以给他从头开始
const levelStr = LevelManager.getInstance().getLevelStr(difficulty, index)
if (!levelStr || levelStr.length <= 0) { // 说明当前难度已经打通了,所以给他从头开始
index = 0
this.user.update_progress(difficulty, index)
}
}
else if (type == config.STAGE_TYPE.DC) {//每天调整如果已经创建过关卡那么就用之前的关卡配置
var value = this.getStage(stageID)
} else if (type == config.STAGE_TYPE.DC) { // 每天调整如果已经创建过关卡那么就用之前的关卡配置
const value = this.getStage(stageID)
if (value) {
difficulty = value.get_difficulty()
index = value.get_stageIndex()
}
else {
var random = Math.random()
difficulty = config.DIFFICULTY_LIST[Math.floor(random*config.DIFFICULTY_LIST.length)]
var list = LevelManager.getInstance().getLevelList(difficulty)
} else {
let random = Math.random()
difficulty = config.DIFFICULTY_LIST[Math.floor(random * config.DIFFICULTY_LIST.length)]
const list = LevelManager.getInstance().getLevelList(difficulty)
random = Math.random()
index = Math.floor(random*list.length)
index = Math.floor(random * list.length)
console.log("每日挑战随机一个关卡", difficulty, index)
}
}
this.user.update_stage_done(this.stageID, 0)//重置关卡进度
var dataStage: DataStage = createDataStage(stageID, type, name, difficulty, index)
var doStage: DOStage = new DOStage(dataStage)
this.user.update_stage_done(this.stageID, 0)// 重置关卡进度
const dataStage: DataStage = createDataStage(stageID, type, name, difficulty, index)
const doStage: DOStage = new DOStage(dataStage)
this.stageMap.set(stageID, doStage)
return doStage
}
public getStage(stageID: string): DOStage {//获取指定关卡数据对象,注意判空
public getStage(stageID: string): DOStage { // 获取指定关卡数据对象,注意判空
if (this.stageMap.has(stageID)) {
var doStage: DOStage = this.stageMap.get(stageID)
var doStage: DOStage = this.stageMap.get(stageID)
return doStage
} else {
const jsonStr = Laya.LocalStorage.getItem(stageID)
if (jsonStr) {
const dataStage: DataStage = JSON.parse(jsonStr)
var doStage: DOStage = new DOStage(dataStage)
this.stageMap.set(stageID, doStage)
return doStage
}
else {
var jsonStr = Laya.LocalStorage.getItem(stageID)
if (jsonStr) {
var dataStage: DataStage = JSON.parse(jsonStr)
var doStage: DOStage = new DOStage(dataStage)
this.stageMap.set(stageID, doStage)
return doStage
}
}
}
return null
}
@@ -118,8 +111,8 @@ export class StorageManager {
Laya.LocalStorage.removeItem(stageID)
}
public loadStage(stageID: string): DOStage {//载入关卡
var doStage = this.getStage(stageID)
public loadStage(stageID: string): DOStage { // 载入关卡
const doStage = this.getStage(stageID)
if (doStage) {
this.stageID = stageID
this.stageChanged = false
@@ -129,24 +122,23 @@ export class StorageManager {
return null
}
public saveStage(): void {
if (this.stageChanged) {
this.stageChanged = false
if (this.stageMap.has(this.stageID)) {
var doStage = this.stageMap.get(this.stageID)
var jsonStr = JSON.stringify(doStage.getData())
Laya.LocalStorage.setItem(this.stageID, jsonStr)
const doStage = this.stageMap.get(this.stageID)
const jsonStr = JSON.stringify(doStage.getData())
Laya.LocalStorage.setItem(this.stageID, jsonStr)
}
}
}
public onStageChanged(): void {
this.stageChanged = true
}
public cleanAll(): void {
this.user = new DOUser({dones: new Array(), trophy_records: new Array(), progresses: new Array()})
this.user = new DOUser({ dones: [], trophy_records: [], progresses: [] })
this.userChanged = false
this.stageID = ""
@@ -155,5 +147,4 @@ export class StorageManager {
Laya.LocalStorage.clear()
}
}
}

View File

@@ -1,18 +1,17 @@
import { respath } from "../constants/respath"
import { StorageManager } from "./StorageManager"
import { Stage } from "../views/Stage"
import { DailyChallenge } from "../views/dc/DailyChallenge"
import { TrophyRecord } from "../types/global"
import { TrophyClaim } from "../views/dc/TrophyClaim"
import { TrophyShow } from "../views/dc/TrophyShow"
import type { TrophyRecord } from "../types/global"
import type { DOStage } from "./DOStage"
import { config } from "../constants/config"
import { respath } from "../constants/respath"
import { DailyChallenge } from "../views/dc/DailyChallenge"
import { TrophyClaim } from "../views/dc/TrophyClaim"
import { TrophyRoom } from "../views/dc/TrophyRoom"
import { DOStage } from "./DOStage"
import { GamePause } from "../views/GamePause"
import { GameOver } from "../views/GameOver"
import { TrophyShow } from "../views/dc/TrophyShow"
import { GameDone } from "../views/GameDone"
import { GameOver } from "../views/GameOver"
import { GamePause } from "../views/GamePause"
import { Stage } from "../views/Stage"
import { TopBar } from "../views/TopBar"
import { StorageManager } from "./StorageManager"
const { regClass, property } = Laya
@@ -36,8 +35,7 @@ export class UIManager extends Laya.Script {
if (config.H_SCREEN) {
this.UIRoot.width = config.DESIGN_HEIGHT
this.UIRoot.height = config.DESIGN_WIDTH
}
else {
} else {
this.UIRoot.width = config.DESIGN_WIDTH
this.UIRoot.height = config.DESIGN_HEIGHT
}
@@ -45,48 +43,47 @@ export class UIManager extends Laya.Script {
return this.UIRoot
}
private topbar : TopBar
private topbar: TopBar
private stage: Stage
private dc_ui: DailyChallenge
private trophyRoom: TrophyRoom
onStart(): void {
if (config.H_SCREEN) {
this.loadTopBarUI()
}
else {
} else {
this.loadHomeUI()
}
}
public loadHomeUI(): void {
Laya.loader.load(respath.home_ui_res).then((go)=>{
var prefab = go.create()
Laya.loader.load(respath.home_ui_res).then((go) => {
const prefab = go.create()
this.getUIRoot().addChild(prefab)
})
}
public loadTopBarUI(): void {
Laya.loader.load(respath.topbar_ui_res).then((go)=>{
var prefab = go.create()
Laya.loader.load(respath.topbar_ui_res).then((go) => {
const prefab = go.create()
this.topbar = this.getUIRoot().addChild(prefab).getComponent(TopBar)
})
}
public setTopbarTo(isClassic: boolean): void {
if (this.topbar) {
this.topbar.onClickTab(isClassic)
}
}
public loadDCUI(): void {
Laya.loader.load(respath.dc_ui_res()).then((go)=>{
var prefab = go.create()
Laya.loader.load(respath.dc_ui_res()).then((go) => {
const prefab = go.create()
this.dc_ui = this.getUIRoot().addChild(prefab).getComponent(DailyChallenge)
this.dc_ui.loadWithMonth()
})
}
public closeDCUI(): void {
if (this.dc_ui) {
this.dc_ui.owner.destroy()
@@ -95,46 +92,47 @@ export class UIManager extends Laya.Script {
}
public loadTrophyClaimUI(record: TrophyRecord): void {
Laya.loader.load(respath.trophy_claim_ui_res()).then((go)=>{
var prefab = go.create()
var obj = this.getUIRoot().addChild(prefab).getComponent(TrophyClaim)
Laya.loader.load(respath.trophy_claim_ui_res()).then((go) => {
const prefab = go.create()
const obj = this.getUIRoot().addChild(prefab).getComponent(TrophyClaim)
obj.onSetShow(record)
})
}
public loadTrophyUI(): void {
Laya.loader.load(respath.trophy_ui_res()).then((go)=>{
var prefab = go.create()
Laya.loader.load(respath.trophy_ui_res()).then((go) => {
const prefab = go.create()
this.trophyRoom = this.getUIRoot().addChild(prefab).getComponent(TrophyRoom)
})
}
public closeTrophyUI(): void {
if (this.trophyRoom) {
this.trophyRoom.owner.destroy()
this.trophyRoom = null
}
}
}
public loadTrophyShowUI(record: TrophyRecord): void {
Laya.loader.load(respath.trophy_show_ui_res()).then((go)=>{
var prefab = go.create()
var obj = this.getUIRoot().addChild(prefab).getComponent(TrophyShow)
Laya.loader.load(respath.trophy_show_ui_res()).then((go) => {
const prefab = go.create()
const obj = this.getUIRoot().addChild(prefab).getComponent(TrophyShow)
obj.onSetShow(record)
})
}
public loadStageUI(stageID: string): void {
if (this.stage) {
this.stage.onLoadStage(StorageManager.getInstance().loadStage(stageID))
}
else {
Laya.loader.load(respath.stage_ui_res()).then((go)=>{
var prefab = go.create()
this.stage.onLoadStage(StorageManager.getInstance().loadStage(stageID))
} else {
Laya.loader.load(respath.stage_ui_res()).then((go) => {
const prefab = go.create()
this.stage = this.getUIRoot().addChild(prefab).getComponent(Stage)
this.stage.onLoadStage(StorageManager.getInstance().loadStage(stageID))
})
}
}
public closeStageUI(): void {
if (this.stage) {
this.stage.owner.destroy()
@@ -143,25 +141,26 @@ export class UIManager extends Laya.Script {
}
public loadGamePauseUI(doStage: DOStage): void {
Laya.loader.load(respath.gamepause_ui_res()).then((go)=>{
var prefab = go.create()
var ui = this.getUIRoot().addChild(prefab).getComponent(GamePause)
ui.onSetStageInfo(doStage)
})
}
public loadGameOverUI(doStage: DOStage): void {
Laya.loader.load(respath.gameover_ui_res()).then((go)=>{
var prefab = go.create()
var ui = this.getUIRoot().addChild(prefab).getComponent(GameOver)
ui.onSetStageInfo(doStage)
})
}
public loadGameDoneUI(isClassic: boolean, doStage: DOStage): void {
Laya.loader.load(respath.gamedone_ui_res(isClassic)).then((go)=>{
var prefab = go.create()
var ui = this.getUIRoot().addChild(prefab).getComponent(GameDone)
Laya.loader.load(respath.gamepause_ui_res()).then((go) => {
const prefab = go.create()
const ui = this.getUIRoot().addChild(prefab).getComponent(GamePause)
ui.onSetStageInfo(doStage)
})
}
public loadGameOverUI(doStage: DOStage): void {
Laya.loader.load(respath.gameover_ui_res()).then((go) => {
const prefab = go.create()
const ui = this.getUIRoot().addChild(prefab).getComponent(GameOver)
ui.onSetStageInfo(doStage)
})
}
public loadGameDoneUI(isClassic: boolean, doStage: DOStage): void {
Laya.loader.load(respath.gamedone_ui_res(isClassic)).then((go) => {
const prefab = go.create()
const ui = this.getUIRoot().addChild(prefab).getComponent(GameDone)
ui.onSetStageInfo(doStage)
})
}
}