格式化代码

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,21 +1,27 @@
# **项目名称** # **项目名称**
> 数独 > 数独
## **环境推荐** ## **环境推荐**
- Node.js (>= 22.x) - Node.js (>= 22.x)
- npm (>= 11.x) - npm (>= 11.x)
- LayaAir (> 3.2.x) - LayaAir (> 3.2.x)
## **打包构建** ## **打包构建**
(如有特殊配置或脚本,需备注) (如有特殊配置或脚本,需备注)
## **IDE插件** ## **IDE插件**
如有需提供IDE插件列表 如有需提供IDE插件列表
## **环境变量(宏)** ## **环境变量(宏)**
(如有,需提供宏列表) (如有,需提供宏列表)
## **其他** ## **其他**
- (接口文档)[link] - (接口文档)[link]
- (需求文档)[link] - (需求文档)[link]
- (技术设计文档)[link] - (技术设计文档)[link]

View File

@@ -1,4 +1,3 @@
import { config } from "./constants/config" import { config } from "./constants/config"
Laya.addBeforeInitCallback((stageConfig) => { Laya.addBeforeInitCallback((stageConfig) => {
@@ -8,8 +7,7 @@ Laya.addBeforeInitCallback((stageConfig) => {
stageConfig.designWidth = config.DESIGN_HEIGHT stageConfig.designWidth = config.DESIGN_HEIGHT
stageConfig.designHeight = config.DESIGN_WIDTH stageConfig.designHeight = config.DESIGN_WIDTH
config.H_SCREEN = true config.H_SCREEN = true
} } else {
else {
stageConfig.designWidth = config.DESIGN_WIDTH stageConfig.designWidth = config.DESIGN_WIDTH
stageConfig.designHeight = config.DESIGN_HEIGHT stageConfig.designHeight = config.DESIGN_HEIGHT
config.H_SCREEN = false config.H_SCREEN = false

View File

@@ -1,13 +1,11 @@
import { config } from "./constants/config"
import { LevelManager } from "./models/LevelManager"
import { StorageManager } from "./models/StorageManager"
const { regClass, property } = Laya
import { StorageManager } from "./models/StorageManager";
import { LevelManager } from "./models/LevelManager";
import { config } from "./constants/config";
const { regClass, property } = Laya;
@regClass() @regClass()
export class Main extends Laya.Script { export class Main extends Laya.Script {
@property(Boolean) @property(Boolean)
public debug: boolean = false public debug: boolean = false

View File

@@ -1,6 +1,3 @@
export const config = { export const config = {
DESIGN_WIDTH: 1080, DESIGN_WIDTH: 1080,
@@ -14,18 +11,17 @@ export const config = {
STAGE_TYPE: { // 关卡类型 STAGE_TYPE: { // 关卡类型
MAIN: 1, // 主线 MAIN: 1, // 主线
DC: 2,//每日挑战 DC: 2// 每日挑战
}, },
DEFAULT_STAGE_ID: "main", // 主线关卡标识 DEFAULT_STAGE_ID: "main", // 主线关卡标识
DIFFICULTY_TYPE: { // 难度 DIFFICULTY_TYPE: { // 难度
Easy: "Easy", Easy: "Easy",
Medium: "Medium", Medium: "Medium",
Hard: "Hard", Hard: "Hard",
Expert: "Expert", Expert: "Expert",
Extreme: "Extreme", Extreme: "Extreme"
}, },
DIFFICULTY_LIST: ["Easy", "Medium", "Hard", "Expert", "Extreme"], DIFFICULTY_LIST: ["Easy", "Medium", "Hard", "Expert", "Extreme"],
@@ -33,13 +29,10 @@ export const config = {
WHITE: "#ffffff", WHITE: "#ffffff",
GREY: "#f0f2f7", GREY: "#f0f2f7",
RED: "#ef3e67", RED: "#ef3e67",
BLUE: "#2559c0", BLUE: "#2559c0"
}, },
MONTH_ABBRS: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], MONTH_ABBRS: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"],
MONTH_FULLNAMES: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"], MONTH_FULLNAMES: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
} }

View File

@@ -1,5 +1,4 @@
import { config } from "./config"; import { config } from "./config"
export const respath = { export const respath = {
home_ui_res: "resources/Home.lh", home_ui_res: "resources/Home.lh",
@@ -18,8 +17,7 @@ export const respath = {
gamedone_ui_res: function func(isClassic: boolean): string { gamedone_ui_res: function func(isClassic: boolean): string {
if (isClassic) { if (isClassic) {
return config.H_SCREEN ? "resources/GameDone_Normal_H.lh" : "resources/GameDone_Normal.lh" return config.H_SCREEN ? "resources/GameDone_Normal_H.lh" : "resources/GameDone_Normal.lh"
} } else {
else {
return config.H_SCREEN ? "resources/GameDone_DC_H.lh" : "resources/GameDone_DC.lh" return config.H_SCREEN ? "resources/GameDone_DC_H.lh" : "resources/GameDone_DC.lh"
} }
}, },
@@ -56,7 +54,6 @@ export const respath = {
dc_top_bg_normal: "atlas/images/img_dc_bg2.png", dc_top_bg_normal: "atlas/images/img_dc_bg2.png",
dc_top_bg_month_finish: "atlas/images/img_dc_finished.png", dc_top_bg_month_finish: "atlas/images/img_dc_finished.png",
trophy_bg_light_gold: "atlas/trophys/img_trophy_bg_light_gold.png", trophy_bg_light_gold: "atlas/trophys/img_trophy_bg_light_gold.png",
trophy_bg_light_grey: "atlas/trophys/img_trophy_bg_light_gray.png", trophy_bg_light_grey: "atlas/trophys/img_trophy_bg_light_gray.png",
@@ -71,6 +68,5 @@ export const respath = {
trophy_09: "atlas/trophys/trophy_09.png", trophy_09: "atlas/trophys/trophy_09.png",
trophy_10: "atlas/trophys/trophy_10.png", trophy_10: "atlas/trophys/trophy_10.png",
trophy_11: "atlas/trophys/trophy_11.png", trophy_11: "atlas/trophys/trophy_11.png",
trophy_12: "atlas/trophys/trophy_12.png", trophy_12: "atlas/trophys/trophy_12.png"
} }

View File

@@ -1,9 +1,5 @@
import { respath } from "../constants/respath" import { respath } from "../constants/respath"
export const MONTH_LIST = [ 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 },
@@ -31,13 +27,12 @@ export const MONTH_LIST = [
{ year: 2026, month: 9, begin: 2, dayCount: 30, icon_res: respath.trophy_09 }, { 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: 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: 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: 12, begin: 2, dayCount: 31, icon_res: respath.trophy_12 }
] ]
export function G_getMonthInfo(year: number, month: number): any { export function G_getMonthInfo(year: number, month: number): any {
for (var i=0; i<MONTH_LIST.length; i++) { for (let i = 0; i < MONTH_LIST.length; i++) {
var obj = MONTH_LIST[i] const obj = MONTH_LIST[i]
if (obj.year == year && obj.month == month) { if (obj.year == year && obj.month == month) {
return obj return obj
} }
@@ -46,7 +41,6 @@ export function G_getMonthInfo(year: number, month: number): any {
} }
export class DCManager { export class DCManager {
private static instance: DCManager private static instance: DCManager
public static getInstance(): DCManager { public static getInstance(): DCManager {
if (!DCManager.instance) { if (!DCManager.instance) {
@@ -54,6 +48,4 @@ export class DCManager {
} }
return DCManager.instance return DCManager.instance
} }
} }

View File

@@ -1,16 +1,12 @@
import type { DataBlock } from "../types/global"
import { DataBlock } from "../types/global";
import { StorageManager } from "./StorageManager" import { StorageManager } from "./StorageManager"
export class DOBlock { export class DOBlock {
private data: DataBlock 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: DataBlock, preset: boolean, correct: number) { constructor(dataBlock: DataBlock, preset: boolean, correct: number) {
this.data = dataBlock this.data = dataBlock
this.preset = preset this.preset = preset
@@ -26,6 +22,7 @@ export class DOBlock {
public get_show(): number { public get_show(): number {
return this.data.show return this.data.show
} }
public set_show(show: number): void { public set_show(show: number): void {
this.data.show = show this.data.show = show
this.checked = show == this.get_correct() this.checked = show == this.get_correct()
@@ -35,6 +32,7 @@ export class DOBlock {
public get_score(): number { public get_score(): number {
return this.data.score return this.data.score
} }
public set_score(score: number): void { public set_score(score: number): void {
this.data.score = score this.data.score = score
StorageManager.getInstance().onStageChanged() StorageManager.getInstance().onStageChanged()
@@ -43,22 +41,25 @@ export class DOBlock {
public get_notes(): Array<number> { public get_notes(): Array<number> {
return this.data.notes return this.data.notes
} }
public add_note(noteNumber: number): void { public add_note(noteNumber: number): void {
if (this.data.notes.indexOf(noteNumber) < 0) { if (!this.data.notes.includes(noteNumber)) {
this.data.notes.push(noteNumber) this.data.notes.push(noteNumber)
StorageManager.getInstance().onStageChanged() StorageManager.getInstance().onStageChanged()
} }
} }
public remove_note(noteNumber: number): void { public remove_note(noteNumber: number): void {
var find = this.data.notes.indexOf(noteNumber) const find = this.data.notes.indexOf(noteNumber)
if (find >= 0) { if (find >= 0) {
this.data.notes.splice(find, 1) this.data.notes.splice(find, 1)
StorageManager.getInstance().onStageChanged() StorageManager.getInstance().onStageChanged()
} }
} }
public clean_notes(): void { public clean_notes(): void {
if (this.data.notes.length > 0) { if (this.data.notes.length > 0) {
this.data.notes = new Array() this.data.notes = []
StorageManager.getInstance().onStageChanged() StorageManager.getInstance().onStageChanged()
} }
} }
@@ -75,7 +76,4 @@ export class DOBlock {
public get_checked(): boolean { public get_checked(): boolean {
return this.checked return this.checked
} }
} }

View File

@@ -1,9 +1,4 @@
export class DOCandy { export class DOCandy {
private show: number private show: number
private left: number private left: number
@@ -19,10 +14,8 @@ export class DOCandy {
public get_left(): number { public get_left(): number {
return this.left return this.left
} }
public set_left(left: number): void { public set_left(left: number): void {
this.left = left this.left = left
} }
} }

View File

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

View File

@@ -1,19 +1,18 @@
import { DataProgress, DataUser, StageProgress, TrophyRecord } from "../types/global"; import type { DataProgress, DataUser, StageProgress, TrophyRecord } from "../types/global"
import { StorageManager } from "./StorageManager" import { StorageManager } from "./StorageManager"
export class DOUser { export class DOUser {
private data: DataUser private data: DataUser
private mapDones: Map<string, number> = new Map() private mapDones: Map<string, number> = new Map()
constructor(dataUser: DataUser) { constructor(dataUser: DataUser) {
this.data = dataUser this.data = dataUser
for (var i=0; i<this.data.dones.length; i++) { for (let i = 0; i < this.data.dones.length; i++) {
var obj = this.data.dones[i] const obj = this.data.dones[i]
this.mapDones.set(obj.stageID, obj.progress) this.mapDones.set(obj.stageID, obj.progress)
} }
} }
public getData(): DataUser { public getData(): DataUser {
return this.data return this.data
} }
@@ -25,9 +24,10 @@ export class DOUser {
} }
return 0 return 0
} }
public get_doneCountByDate(year: number, month: number): number { public get_doneCountByDate(year: number, month: number): number {
var count = 0 let count = 0
var key = `${year}-${month}` const key = `${year}-${month}`
this.mapDones.forEach((progres: number, stageID: string) => { this.mapDones.forEach((progres: number, stageID: string) => {
if (stageID.startsWith(key) && progres >= 1) { if (stageID.startsWith(key) && progres >= 1) {
count++ count++
@@ -35,9 +35,10 @@ export class DOUser {
}) })
return count return count
} }
public get_isAllDoneByDate(year: number, month: number): boolean { public get_isAllDoneByDate(year: number, month: number): boolean {
var boolean = true let boolean = true
var key = `${year}-${month}` const key = `${year}-${month}`
this.mapDones.forEach((progres: number, stageID: string) => { this.mapDones.forEach((progres: number, stageID: string) => {
if (stageID.startsWith(key) && progres < 1) { if (stageID.startsWith(key) && progres < 1) {
boolean = false boolean = false
@@ -45,10 +46,11 @@ export class DOUser {
}) })
return boolean return boolean
} }
public update_stage_done(stageID: string, progress: number): void { public update_stage_done(stageID: string, progress: number): void {
var find: StageProgress let find: StageProgress
for (var i=0; i<this.data.dones.length; i++) { for (let i = 0; i < this.data.dones.length; i++) {
var obj = this.data.dones[i] const obj = this.data.dones[i]
if (obj.stageID == stageID) { if (obj.stageID == stageID) {
find = obj find = obj
break break
@@ -56,9 +58,8 @@ export class DOUser {
} }
if (find) { if (find) {
find.progress = progress find.progress = progress
} } else {
else { find = { stageID, progress }
find = {stageID: stageID, progress: progress}
this.data.dones.push(find) this.data.dones.push(find)
} }
this.mapDones.set(find.stageID, find.progress) this.mapDones.set(find.stageID, find.progress)
@@ -67,9 +68,9 @@ export class DOUser {
// ================奖杯获得记录 // ================奖杯获得记录
public get_trophyRecord(year: number, month: number): TrophyRecord { public get_trophyRecord(year: number, month: number): TrophyRecord {
var find: TrophyRecord let find: TrophyRecord
for (var i=0; i<this.data.trophy_records.length; i++) { for (let i = 0; i < this.data.trophy_records.length; i++) {
var obj = this.data.trophy_records[i] const obj = this.data.trophy_records[i]
if (obj.year == year && obj.month == month) { if (obj.year == year && obj.month == month) {
find = obj find = obj
break break
@@ -77,10 +78,11 @@ export class DOUser {
} }
return find return find
} }
public get_trophyHasNew(): TrophyRecord { public get_trophyHasNew(): TrophyRecord {
var find: TrophyRecord let find: TrophyRecord
for (var i=0; i<this.data.trophy_records.length; i++) { for (let i = 0; i < this.data.trophy_records.length; i++) {
var obj = this.data.trophy_records[i] const obj = this.data.trophy_records[i]
if (obj.isNew) { if (obj.isNew) {
find = obj find = obj
break break
@@ -88,16 +90,18 @@ export class DOUser {
} }
return find return find
} }
public set_trophyNew(record: TrophyRecord, isNew: boolean): void { public set_trophyNew(record: TrophyRecord, isNew: boolean): void {
if (record.isNew != isNew) { if (record.isNew != isNew) {
record.isNew = isNew record.isNew = isNew
StorageManager.getInstance().onUserChanged() StorageManager.getInstance().onUserChanged()
} }
} }
public get_trophyHasUnread(): boolean { public get_trophyHasUnread(): boolean {
var unread = false let unread = false
for (var i=0; i<this.data.trophy_records.length; i++) { for (let i = 0; i < this.data.trophy_records.length; i++) {
var obj = this.data.trophy_records[i] const obj = this.data.trophy_records[i]
if (obj.read == false) { if (obj.read == false) {
unread = true unread = true
break break
@@ -105,10 +109,11 @@ export class DOUser {
} }
return unread return unread
} }
public set_trophyAllread(): void { public set_trophyAllread(): void {
var changed = false let changed = false
for (var i=0; i<this.data.trophy_records.length; i++) { for (let i = 0; i < this.data.trophy_records.length; i++) {
var obj = this.data.trophy_records[i] const obj = this.data.trophy_records[i]
if (obj.read == false) { if (obj.read == false) {
obj.read = true obj.read = true
changed = true changed = true
@@ -118,26 +123,27 @@ export class DOUser {
StorageManager.getInstance().onUserChanged() StorageManager.getInstance().onUserChanged()
} }
} }
public add_trophy_record(year: number, month: number, day: number): void { public add_trophy_record(year: number, month: number, day: number): void {
var find let find
for (var i=0; i<this.data.trophy_records.length; i++) { for (let i = 0; i < this.data.trophy_records.length; i++) {
var obj = this.data.trophy_records[i] const obj = this.data.trophy_records[i]
if (obj.year == year && obj.month == month) { if (obj.year == year && obj.month == month) {
find = obj find = obj
break break
} }
} }
if (!find) { if (!find) {
this.data.trophy_records.push({year: year, month: month, day: day, isNew: true, read: false}) this.data.trophy_records.push({ year, month, day, isNew: true, read: false })
StorageManager.getInstance().onUserChanged() StorageManager.getInstance().onUserChanged()
} }
} }
// =======关卡难度进度 // =======关卡难度进度
public get_progress(difficulty: string): number { public get_progress(difficulty: string): number {
var find: DataProgress let find: DataProgress
for (var i=0; i<this.data.progresses.length; i++) { for (let i = 0; i < this.data.progresses.length; i++) {
var obj = this.data.progresses[i] const obj = this.data.progresses[i]
if (obj.difficulty == difficulty) { if (obj.difficulty == difficulty) {
find = obj find = obj
break break
@@ -148,10 +154,11 @@ export class DOUser {
} }
return 0 return 0
} }
public update_progress(difficulty: string, index: number): void { public update_progress(difficulty: string, index: number): void {
var find: DataProgress let find: DataProgress
for (var i=0; i<this.data.progresses.length; i++) { for (let i = 0; i < this.data.progresses.length; i++) {
var obj = this.data.progresses[i] const obj = this.data.progresses[i]
if (obj.difficulty == difficulty) { if (obj.difficulty == difficulty) {
find = obj find = obj
break break
@@ -159,9 +166,8 @@ export class DOUser {
} }
if (find) { if (find) {
find.index = index find.index = index
} } else {
else { find = { difficulty, index }
find = {difficulty: difficulty, index: index}
this.data.progresses.push(find) this.data.progresses.push(find)
} }
StorageManager.getInstance().onUserChanged() StorageManager.getInstance().onUserChanged()

View File

@@ -1,16 +1,11 @@
export const EVENT_TYPES = { export const EVENT_TYPES = {
NOT_UPDATE_MISTAKE: "NOT_UPDATE_MISTAKE", // 更新分数 NOT_UPDATE_MISTAKE: "NOT_UPDATE_MISTAKE", // 更新分数
NOT_UPDATE_PAUSE: "NOT_UPDATE_PAUSE", // 更新暂停状态 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 { export class EventManager {
private static instance: EventManager private static instance: EventManager
public static getInstance(): EventManager { public static getInstance(): EventManager {
if (!EventManager.instance) { if (!EventManager.instance) {
@@ -23,10 +18,10 @@ export class EventManager {
public RegisterEvent(eventID: string, func: any): void { public RegisterEvent(eventID: string, func: any): void {
if (this.listeners.has(eventID) == false) { if (this.listeners.has(eventID) == false) {
this.listeners.set(eventID, new Array()) this.listeners.set(eventID, [])
} }
var list: Array<any> = this.listeners.get(eventID) const list: Array<any> = this.listeners.get(eventID)
var find = list.indexOf(func) const find = list.indexOf(func)
if (find < 0) { if (find < 0) {
list.push(func) list.push(func)
} }
@@ -34,8 +29,8 @@ export class EventManager {
public UnregisterEvent(eventID: string, func: any): void { public UnregisterEvent(eventID: string, func: any): void {
if (this.listeners.has(eventID)) { if (this.listeners.has(eventID)) {
var list: Array<any> = this.listeners.get(eventID) const list: Array<any> = this.listeners.get(eventID)
var find = list.indexOf(func) const find = list.indexOf(func)
if (find >= 0) { if (find >= 0) {
list.splice(find, 1) list.splice(find, 1)
} }
@@ -44,8 +39,8 @@ export class EventManager {
public DispatchEvent(eventID: string, arg: any = null): void { public DispatchEvent(eventID: string, arg: any = null): void {
if (this.listeners.has(eventID)) { if (this.listeners.has(eventID)) {
var list: Array<any> = this.listeners.get(eventID) const list: Array<any> = this.listeners.get(eventID)
for (var i=0; i<list.length; i++) { for (let i = 0; i < list.length; i++) {
list[i](arg) list[i](arg)
} }
} }

View File

@@ -1,7 +1,5 @@
import { config } from "../constants/config" import { config } from "../constants/config"
const Easy = [ const Easy = [
"aBCeIGFhdEDFcAHBGIhigBdfecAgHDiFBCaeBEAGHCIdffcIdEAHbgcABfGEdiHIFHaCDGEBDGEHbiaFC", "aBCeIGFhdEDFcAHBGIhigBdfecAgHDiFBCaeBEAGHCIdffcIdEAHbgcABfGEdiHIFHaCDGEBDGEHbiaFC",
"abecfIgdhdICGhbAFEHGfeAdIcBCFAbigEHDGDhFeABICIEbHdCFGAFaGDBHcEIbCDIGehAFeHIaCFdbG", "abecfIgdhdICGhbAFEHGfeAdIcBCFAbigEHDGDhFeABICIEbHdCFGAFaGDBHcEIbCDIGehAFeHIaCFdbG",
@@ -11,7 +9,7 @@ const Easy = [
"aCfDbGHIEGHBIcEFdaedIAFhbCGDFahGiebCHbecaDIGFiGCbEFdAHBEHGIcAfDFiGedACHBCAdFHBgei", "aCfDbGHIEGHBIcEFdaedIAFhbCGDFahGiebCHbecaDIGFiGCbEFdAHBEHGIcAfDFiGedACHBCAdFHBgei",
"ACGBfIHDeHEBCdgFAIfdIHaegcBDgEAHCIBFIbhFEdaGCcAFGIbDEHgIDebHcfabHADcFEiGEfcigABHd", "ACGBfIHDeHEBCdgFAIfdIHaegcBDgEAHCIBFIbhFEdaGCcAFGIbDEHgIDebHcfabHADcFEiGEfcigABHd",
"AcGFdihBEdHEbGCAifBFIEhaGDCEgADIBfcHhibGcfDEaFDChaEigbGBHCFdEAIIEdabHCFGcAfIEGbHD", "AcGFdihBEdHEbGCAifBFIEhaGDCEgADIBfcHhibGcfDEaFDChaEigbGBHCFdEAIIEdabHCFGcAfIEGbHD",
"ACGIFbEhdbFEDGhaCIIHDCAEBGFFAIHBDceggdbecfIahHEcAIGdFBeIHFDAGBcdGFbeCHIacbAgHifdE", "ACGIFbEhdbFEDGhaCIIHDCAEBGFFAIHBDceggdbecfIahHEcAIGdFBeIHFDAGBcdGFbeCHIacbAgHifdE"
] ]
const Medium = [ const Medium = [
"achEDIBFGgeIHbFaDCFDBaCGHeIbHaceDGiFCIFGHBeadeGDIFAChbDAGbIeFCHhfEdGCIbaiBcFAhdGE", "achEDIBFGgeIHbFaDCFDBaCGHeIbHaceDGiFCIFGHBeadeGDIFAChbDAGbIeFCHhfEdGCIbaiBcFAhdGE",
@@ -22,7 +20,7 @@ const Medium = [
"aDFIEHbcGciHaGbFDEeGBcdFHIAbeadhCgfIGHIfBEcAdFCdGAIeHBDAeHcgibFHFGbIDaECIBcEFADGh", "aDFIEHbcGciHaGbFDEeGBcdFHIAbeadhCgfIGHIfBEcAdFCdGAIeHBDAeHcgibFHFGbIDaECIBcEFADGh",
"aDgEICFBHHCFdGBAeIIEBFHacdgcAEgBIdhFDGhCFEiabBFIADHEGCGbciaDHfEEHdbcFgiAFiAHeGbcd", "aDgEICFBHHCFdGBAeIIEBFHacdgcAEgBIdhFDGhCFEiabBFIADHEGCGbciaDHfEEHdbcFgiAFiAHeGbcd",
"adHEbCIfGegBfHIDAcIcfgDaHEBDFABIGcHEHIcdfegbaBEGcAHFdIFAdIgBeCHCbihEFAGdghEACDBIF", "adHEbCIfGegBfHIDAcIcfgDaHEBDFABIGcHEHIcdfegbaBEGcAHFdIFAdIgBeCHCbihEFAGdghEACDBIF",
"aecDbHIGFDGHCFIBEAfiBEGaHCdgAFBIedHcHCEaDFGBIbDIghCFAeibahcdeFGcHdfeGAIBefGIAbCDH", "aecDbHIGFDGHCFIBEAfiBEGaHCdgAFBIedHcHCEaDFGBIbDIghCFAeibahcdeFGcHdfeGAIBefGIAbCDH"
] ]
const Hard = [ const Hard = [
"AEdfiHgCBIFGECbahdcbHGADeIFGIFCDaBeHHDCbGEIFAeabhfICdgbCIAHFDGeFGadEcHBiDHeIBgFac", "AEdfiHgCBIFGECbahdcbHGADeIFGIFCDaBeHHDCbGEIFAeabhfICdgbCIAHFDGeFGadEcHBiDHeIBgFac",
@@ -34,7 +32,7 @@ const Hard = [
"agibdeFchcHDGIfeBAEFbHAcDIgiDCAEBGHFHBeDFGCaIFAGICHBdEgEaCBihfdbIfeHDAGCdCHFGaIeb", "agibdeFchcHDGIfeBAEFbHAcDIgiDCAEBGHFHBeDFGCaIFAGICHBdEgEaCBihfdbIfeHDAGCdCHFGaIeb",
"AHbIEDcGFCifgHBAdeGEDAfcIHBBdGHCEFaiIFcbdaHeGHaeFIGBCDeBAcGFdIhFGHDaieBcDcIebhGFA", "AHbIEDcGFCifgHBAdeGEDAfcIHBBdGHCEFaiIFcbdaHeGHaeFIGBCDeBAcGFdIhFGHDaieBcDcIebhGFA",
"AHEbCIGfdiBGDEFHCAdfcHGaBIEBGICfdaeHhCFEAbIdGEAdihgFbcFIAgDECHbcdBAIHegfGEHFbcdAI", "AHEbCIGfdiBGDEFHCAdfcHGaBIEBGICfdaeHhCFEAbIdGEAdihgFbcFIAgDECHbcdBAIHegfGEHFbcdAI",
"AHECBgFdIBIGDAfhCECfDHIEagbIGHEDcBFAEBFAGichddCaBFHeigFEIgHadbChDcIeBGaFGabFcdiEH", "AHECBgFdIBIGDAfhCECfDHIEagbIGHEDcBFAEBFAGichddCaBFHeigFEIgHadbChDcIeBGaFGabFcdiEH"
] ]
const Expert = [ const Expert = [
"AHEIDCFGBiBFGaedchcdghbfIEADfHEIACBgbeADCGHfiGCibFHaDEeaBcHDGIFHIdFgBeAcFGCaeIBhD", "AHEIDCFGBiBFGaedchcdghbfIEADfHEIACBgbeADCGHfiGCibFHaDEeaBcHDGIFHIdFgBeAcFGCaeIBhD",
@@ -53,7 +51,7 @@ const Expert = [
"bdEcFAHIGCAIegHFBDFGHBDICaEehfaBDIGCDCgiHeaFBIBAFcgedhaicgEbDHFGeDhAFbcIHFbDiCGEa", "bdEcFAHIGCAIegHFBDFGHBDICaEehfaBDIGCDCgiHeaFBIBAFcgedhaicgEbDHFGeDhAFbcIHFbDiCGEa",
"BEaihfcdgCFIGEDAHBgDHACBIFeFIdhaeGbcAHGcBIDEfebcdFGHAIDgeBIHFCaHCbFGAeiDIAfEdcbGH", "BEaihfcdgCFIGEDAHBgDHACBIFeFIdhaeGbcAHGcBIDEfebcdFGHAIDgeBIHFCaHCbFGAeiDIAfEdcbGH",
"BehdIcaFgCfGeAHIbdaIdfBGCheEgcIDFHAbdAFHeBGCiIHBGcaDefFCIBHdeGAHbeaGIFDCGDACfEBIH", "BehdIcaFgCfGeAHIbdaIdfBGCheEgcIDFHAbdAFHeBGCiIHBGcaDefFCIBHdeGAHbeaGIFDCGDACfEBIH",
"BfHCEGADIIdchAFGbeGaEiBdCHFFBigCADEHHEGBdIfaCDCafhEiGBeGFDIHbCacHdaFBEiGaIbegcHFd", "BfHCEGADIIdchAFGbeGaEiBdCHFFBigCADEHHEGBdIfaCDCafhEiGBeGFDIHbCacHdaFBEiGaIbegcHFd"
] ]
const Extreme = [ const Extreme = [
"BGDiEAfchahcFBDIGEEIFhgCDabFAHGibedcDEGACHbIFCbIEdfGHagDACfEHBihFBDAIcegICEbHGaFd", "BGDiEAfchahcFBDIGEEIFhgCDabFAHGibedcDEGACHbIFCbIEdfGHagDACfEHBihFBDAIcegICEbHGaFd",
@@ -110,11 +108,10 @@ const Extreme = [
"eaBdfIHGcIGdCHbFAEfHCAGEDBigcebdHAIFhFAiECGdBBdifAGECHabFecdIHGDiHGBFCeaCEgHIabFD", "eaBdfIHGcIGdCHbFAEfHCAGEDBigcebdHAIFhFAiECGdBBdifAGECHabFecdIHGDiHGBFCeaCEgHIabFD",
"EABFHiGcDHdICgaebfcGFBdeAHIaCDHIgBFEbFeaCDIGHiHGEFBdACfbaDECHIGgEHiBfcdadICGahFeB", "EABFHiGcDHdICgaebfcGFBdeAHIaCDHIgBFEbFeaCDIGHiHGEFBdACfbaDECHIGgEHiBfcdadICGahFeB",
"eacIBFhdgGHBecDaFIDIfgAhCBECFGHDEiabIdHaGBECFabeCFIGHDfCiBHGdeAHgdFEabIcBEADiCFGh", "eacIBFhdgGHBecDaFIDIfgAhCBECFGHDEiabIdHaGBECFabeCFIGHDfCiBHGdeAHgdFEabIcBEADiCFGh",
"EadCFbIhGbGCiahdeffhiGedcABGDbEiFHCACEadhgbFIIfHBcAeGddCfabegiHaBEHGIFDChIGFDcaBE", "EadCFbIhGbGCiahdeffhiGedcABGDbEiFHCACEadhgbFIIfHBcAeGddCfabegiHaBEHGIFDChIGFDcaBE"
] ]
export class LevelManager { export class LevelManager {
private static instance: LevelManager private static instance: LevelManager
public static getInstance(): LevelManager { public static getInstance(): LevelManager {
if (!LevelManager.instance) { if (!LevelManager.instance) {
@@ -133,7 +130,7 @@ export class LevelManager {
this.levelMap.set(config.DIFFICULTY_TYPE.Extreme, Extreme) this.levelMap.set(config.DIFFICULTY_TYPE.Extreme, Extreme)
// 检查关卡配置 // 检查关卡配置
this.levelMap.forEach((list, key) => { this.levelMap.forEach((list, key) => {
for (var i=0; i<list.length; i++) { for (let i = 0; i < list.length; i++) {
if (list[i].length != 81) { if (list[i].length != 81) {
console.error("关卡配置有误>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", key, i) console.error("关卡配置有误>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>", key, i)
} }
@@ -142,16 +139,15 @@ export class LevelManager {
} }
public getLevelList(difficulty: string): Array<string> { public getLevelList(difficulty: string): Array<string> {
var list = this.levelMap.get(difficulty) const list = this.levelMap.get(difficulty)
return list return list
} }
public getLevelStr(difficulty: string, index: number): string { public getLevelStr(difficulty: string, index: number): string {
var list = this.levelMap.get(difficulty) const list = this.levelMap.get(difficulty)
if (list) { if (list) {
return list[index] return list[index]
} }
return "" return ""
} }
} }

View File

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

View File

@@ -1,18 +1,17 @@
import { respath } from "../constants/respath" import type { TrophyRecord } from "../types/global"
import { StorageManager } from "./StorageManager" import type { DOStage } from "./DOStage"
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 { config } from "../constants/config" 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 { TrophyRoom } from "../views/dc/TrophyRoom"
import { DOStage } from "./DOStage" import { TrophyShow } from "../views/dc/TrophyShow"
import { GamePause } from "../views/GamePause"
import { GameOver } from "../views/GameOver"
import { GameDone } from "../views/GameDone" 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 { TopBar } from "../views/TopBar"
import { StorageManager } from "./StorageManager"
const { regClass, property } = Laya const { regClass, property } = Laya
@@ -36,8 +35,7 @@ export class UIManager extends Laya.Script {
if (config.H_SCREEN) { if (config.H_SCREEN) {
this.UIRoot.width = config.DESIGN_HEIGHT this.UIRoot.width = config.DESIGN_HEIGHT
this.UIRoot.height = config.DESIGN_WIDTH this.UIRoot.height = config.DESIGN_WIDTH
} } else {
else {
this.UIRoot.width = config.DESIGN_WIDTH this.UIRoot.width = config.DESIGN_WIDTH
this.UIRoot.height = config.DESIGN_HEIGHT this.UIRoot.height = config.DESIGN_HEIGHT
} }
@@ -50,30 +48,28 @@ export class UIManager extends Laya.Script {
private dc_ui: DailyChallenge private dc_ui: DailyChallenge
private trophyRoom: TrophyRoom private trophyRoom: TrophyRoom
onStart(): void { onStart(): void {
if (config.H_SCREEN) { if (config.H_SCREEN) {
this.loadTopBarUI() this.loadTopBarUI()
} } else {
else {
this.loadHomeUI() this.loadHomeUI()
} }
} }
public loadHomeUI(): void { public loadHomeUI(): void {
Laya.loader.load(respath.home_ui_res).then((go) => { Laya.loader.load(respath.home_ui_res).then((go) => {
var prefab = go.create() const prefab = go.create()
this.getUIRoot().addChild(prefab) this.getUIRoot().addChild(prefab)
}) })
} }
public loadTopBarUI(): void { public loadTopBarUI(): void {
Laya.loader.load(respath.topbar_ui_res).then((go) => { Laya.loader.load(respath.topbar_ui_res).then((go) => {
var prefab = go.create() const prefab = go.create()
this.topbar = this.getUIRoot().addChild(prefab).getComponent(TopBar) this.topbar = this.getUIRoot().addChild(prefab).getComponent(TopBar)
}) })
} }
public setTopbarTo(isClassic: boolean): void { public setTopbarTo(isClassic: boolean): void {
if (this.topbar) { if (this.topbar) {
this.topbar.onClickTab(isClassic) this.topbar.onClickTab(isClassic)
@@ -82,11 +78,12 @@ export class UIManager extends Laya.Script {
public loadDCUI(): void { public loadDCUI(): void {
Laya.loader.load(respath.dc_ui_res()).then((go) => { Laya.loader.load(respath.dc_ui_res()).then((go) => {
var prefab = go.create() const prefab = go.create()
this.dc_ui = this.getUIRoot().addChild(prefab).getComponent(DailyChallenge) this.dc_ui = this.getUIRoot().addChild(prefab).getComponent(DailyChallenge)
this.dc_ui.loadWithMonth() this.dc_ui.loadWithMonth()
}) })
} }
public closeDCUI(): void { public closeDCUI(): void {
if (this.dc_ui) { if (this.dc_ui) {
this.dc_ui.owner.destroy() this.dc_ui.owner.destroy()
@@ -96,18 +93,19 @@ export class UIManager extends Laya.Script {
public loadTrophyClaimUI(record: TrophyRecord): void { public loadTrophyClaimUI(record: TrophyRecord): void {
Laya.loader.load(respath.trophy_claim_ui_res()).then((go) => { Laya.loader.load(respath.trophy_claim_ui_res()).then((go) => {
var prefab = go.create() const prefab = go.create()
var obj = this.getUIRoot().addChild(prefab).getComponent(TrophyClaim) const obj = this.getUIRoot().addChild(prefab).getComponent(TrophyClaim)
obj.onSetShow(record) obj.onSetShow(record)
}) })
} }
public loadTrophyUI(): void { public loadTrophyUI(): void {
Laya.loader.load(respath.trophy_ui_res()).then((go) => { Laya.loader.load(respath.trophy_ui_res()).then((go) => {
var prefab = go.create() const prefab = go.create()
this.trophyRoom = this.getUIRoot().addChild(prefab).getComponent(TrophyRoom) this.trophyRoom = this.getUIRoot().addChild(prefab).getComponent(TrophyRoom)
}) })
} }
public closeTrophyUI(): void { public closeTrophyUI(): void {
if (this.trophyRoom) { if (this.trophyRoom) {
this.trophyRoom.owner.destroy() this.trophyRoom.owner.destroy()
@@ -117,8 +115,8 @@ export class UIManager extends Laya.Script {
public loadTrophyShowUI(record: TrophyRecord): void { public loadTrophyShowUI(record: TrophyRecord): void {
Laya.loader.load(respath.trophy_show_ui_res()).then((go) => { Laya.loader.load(respath.trophy_show_ui_res()).then((go) => {
var prefab = go.create() const prefab = go.create()
var obj = this.getUIRoot().addChild(prefab).getComponent(TrophyShow) const obj = this.getUIRoot().addChild(prefab).getComponent(TrophyShow)
obj.onSetShow(record) obj.onSetShow(record)
}) })
} }
@@ -126,15 +124,15 @@ export class UIManager extends Laya.Script {
public loadStageUI(stageID: string): void { public loadStageUI(stageID: string): void {
if (this.stage) { if (this.stage) {
this.stage.onLoadStage(StorageManager.getInstance().loadStage(stageID)) this.stage.onLoadStage(StorageManager.getInstance().loadStage(stageID))
} } else {
else {
Laya.loader.load(respath.stage_ui_res()).then((go) => { Laya.loader.load(respath.stage_ui_res()).then((go) => {
var prefab = go.create() const prefab = go.create()
this.stage = this.getUIRoot().addChild(prefab).getComponent(Stage) this.stage = this.getUIRoot().addChild(prefab).getComponent(Stage)
this.stage.onLoadStage(StorageManager.getInstance().loadStage(stageID)) this.stage.onLoadStage(StorageManager.getInstance().loadStage(stageID))
}) })
} }
} }
public closeStageUI(): void { public closeStageUI(): void {
if (this.stage) { if (this.stage) {
this.stage.owner.destroy() this.stage.owner.destroy()
@@ -144,24 +142,25 @@ export class UIManager extends Laya.Script {
public loadGamePauseUI(doStage: DOStage): void { public loadGamePauseUI(doStage: DOStage): void {
Laya.loader.load(respath.gamepause_ui_res()).then((go) => { Laya.loader.load(respath.gamepause_ui_res()).then((go) => {
var prefab = go.create() const prefab = go.create()
var ui = this.getUIRoot().addChild(prefab).getComponent(GamePause) 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)=>{
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)
ui.onSetStageInfo(doStage) 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)
})
}
} }

View File

@@ -1,39 +1,37 @@
// 格子持久化数据结构 // 格子持久化数据结构
export interface DataBlock { export interface DataBlock {
index: number, index: number
show: number, show: number
score: number score: number
notes: Array<number>, notes: Array<number>
} }
// 撤回数据结构 // 撤回数据结构
export interface DataUndo { export interface DataUndo {
index: number, index: number
show: number, show: number
notes?: Array<number>, notes?: Array<number>
} }
// 关卡数据 // 关卡数据
export interface DataStage { export interface DataStage {
id: string,//关卡ID dc关卡格式为年-月-日 id: string// 关卡ID dc关卡格式为年-月-日
type: number, type: number
name: string, name: string
difficulty: string, difficulty: string
index: number, index: number
mistake?: number, mistake?: number
score?: number, score?: number
duration?: number, duration?: number
last_hit_time?: number,//上一次填对计时 last_hit_time?: number// 上一次填对计时
note_open?: boolean, note_open?: boolean
hint?: number, hint?: number
select_index?: number, select_index?: number
blocks?: Array<DataBlock>, blocks?: Array<DataBlock>
undos?: Array<DataUndo>, undos?: Array<DataUndo>
} }
export function createDataStage(id: string, type: number, name: string, difficulty: string, index: number): DataStage { export function createDataStage(id: string, type: number, name: string, difficulty: string, index: number): DataStage {
var data: DataStage = {id: id, type: type, name: name, difficulty: difficulty, index: index} const data: DataStage = { id, type, name, difficulty, index }
data.mistake = 0 data.mistake = 0
data.score = 0 data.score = 0
data.duration = 0 data.duration = 0
@@ -41,29 +39,28 @@ export function createDataStage(id: string, type: number, name: string, difficul
data.note_open = false data.note_open = false
data.hint = 2 data.hint = 2
data.select_index = 0 data.select_index = 0
data.blocks = new Array() data.blocks = []
data.undos = new Array() data.undos = []
return data return data
} }
export interface StageProgress { // 关卡完成进度 export interface StageProgress { // 关卡完成进度
stageID: string,//关卡ID dc关卡格式为年-月-日 stageID: string// 关卡ID dc关卡格式为年-月-日
progress: number, progress: number
} }
export interface TrophyRecord { export interface TrophyRecord {
year: number, year: number
month: number, month: number
day: number, day: number
isNew: boolean, isNew: boolean
read: boolean, read: boolean
} }
export interface DataProgress { // 关卡难度进度 export interface DataProgress { // 关卡难度进度
difficulty: string, difficulty: string
index: number, index: number
} }
export interface DataUser { export interface DataUser {
dones: Array<StageProgress>,//关卡完成进度 dones: Array<StageProgress>// 关卡完成进度
trophy_records: Array<TrophyRecord>,//奖杯获得记录 trophy_records: Array<TrophyRecord>// 奖杯获得记录
progresses: Array<DataProgress>,//主线各个难度进度 progresses: Array<DataProgress>// 主线各个难度进度
} }

View File

@@ -1,37 +1,31 @@
import { config } from "../constants/config" import { config } from "../constants/config"
export function Utility_ConvertSecondToString(second: number) { export function Utility_ConvertSecondToString(second: number) {
var last = second let last = second
var hour = Math.floor(last/3600) const hour = Math.floor(last / 3600)
last = last - hour * 3600 last = last - hour * 3600
var minite = Math.floor(last/60) const minite = Math.floor(last / 60)
last = last - minite * 60 last = last - minite * 60
var second = Math.floor(last) var second = Math.floor(last)
function format(value: number) { function format(value: number) {
return value>=10?value.toString():("0"+value) return value >= 10 ? value.toString() : (`0${value}`)
} }
return `${format(hour)}:${format(minite)}:${format(second)}` return `${format(hour)}:${format(minite)}:${format(second)}`
} }
// 计算积分 // 计算积分
export function Utility_CalculateScore(difficulty: string, second: number): number { export function Utility_CalculateScore(difficulty: string, second: number): number {
var score = 0 let score = 0
var currentTime = Math.min(120, second) const currentTime = Math.min(120, second)
if (difficulty == config.DIFFICULTY_TYPE.Easy) { if (difficulty == config.DIFFICULTY_TYPE.Easy) {
score = 270 - currentTime score = 270 - currentTime
} } else if (difficulty == config.DIFFICULTY_TYPE.Medium) {
else if (difficulty == config.DIFFICULTY_TYPE.Medium) {
score = 420 - currentTime * 2 score = 420 - currentTime * 2
} } else if (difficulty == config.DIFFICULTY_TYPE.Hard) {
else if (difficulty == config.DIFFICULTY_TYPE.Hard) {
score = 760 - currentTime * 3 score = 760 - currentTime * 3
} } else if (difficulty == config.DIFFICULTY_TYPE.Expert) {
else if (difficulty == config.DIFFICULTY_TYPE.Expert) {
score = 1120 - currentTime * 3 score = 1120 - currentTime * 3
} } else if (difficulty == config.DIFFICULTY_TYPE.Extreme) {
else if (difficulty == config.DIFFICULTY_TYPE.Extreme) {
score = 1320 - currentTime * 4 score = 1320 - currentTime * 4
} }
// console.log("计算积分 >>>>>", difficulty, second, score) // console.log("计算积分 >>>>>", difficulty, second, score)

View File

@@ -1,42 +1,44 @@
import { G_ShowScoreTips } from "../views/common/GUITips"; import type { DOBlock } from "../models/DOBlock"
import { DOBlock } from "../models/DOBlock"; import { config } from "../constants/config"
import { config } from "../constants/config"; import { G_ShowScoreTips } from "../views/common/GUITips"
const { regClass, property } = Laya; const { regClass, property } = Laya
@regClass() @regClass()
export class Block extends Laya.Script { export class Block extends Laya.Script {
declare owner : Laya.Sprite; declare owner: Laya.Sprite
@property(Number) @property(Number)
public XIndex: number = 0; public XIndex: number = 0
@property(Number)
public YIndex: number = 0;
@property(Number)
public XGroup: number = 0;
@property(Number)
public YGroup: number = 0;
private tips_bgs: Array<Laya.Sprite> = new Array(); @property(Number)
private label_show: Laya.Label; public YIndex: number = 0
private tips_labels: Array<Laya.Label> = new Array();
@property(Number)
public XGroup: number = 0
@property(Number)
public YGroup: number = 0
private tips_bgs: Array<Laya.Sprite> = []
private label_show: Laya.Label
private tips_labels: Array<Laya.Label> = []
private selected: boolean = false private selected: boolean = false
private data: DOBlock private data: DOBlock
public onInit(XIndex: number, YIndex: number, XGroup: number, YGroup: number, label_obj: Laya.Box, handler: any, func: any): void { public onInit(XIndex: number, YIndex: number, XGroup: number, YGroup: number, label_obj: Laya.Box, handler: any, func: any): void {
this.XIndex = XIndex; this.XIndex = XIndex
this.YIndex = YIndex; this.YIndex = YIndex
this.XGroup = XGroup; this.XGroup = XGroup
this.YGroup = YGroup; this.YGroup = YGroup
var VBox = this.owner.getChildByName("VBox") let VBox = this.owner.getChildByName("VBox")
for (var i = 0; i < VBox.numChildren; i++) { for (var i = 0; i < VBox.numChildren; i++) {
var hbox = VBox.getChildAt(i) var hbox = VBox.getChildAt(i)
for (var j = 0; j < hbox.numChildren; j++) { for (var j = 0; j < hbox.numChildren; j++) {
var sp = hbox.getChildAt(j) as Laya.Sprite const sp = hbox.getChildAt(j) as Laya.Sprite
this.tips_bgs.push(sp) this.tips_bgs.push(sp)
} }
} }
@@ -44,14 +46,14 @@ export class Block extends Laya.Script {
// this.label_show.text = XGroup + "" + YGroup // this.label_show.text = XGroup + "" + YGroup
VBox = label_obj.getChildByName("VBox") VBox = label_obj.getChildByName("VBox")
for (var i = 0; i < VBox.numChildren; i++) { for (var i = 0; i < VBox.numChildren; i++) {
var hbox = VBox.getChildAt(i); var hbox = VBox.getChildAt(i)
for (var j = 0; j < hbox.numChildren; j++) { for (var j = 0; j < hbox.numChildren; j++) {
var Label = hbox.getChildAt(j) as Laya.Label const Label = hbox.getChildAt(j) as Laya.Label
Label.text = "" Label.text = ""
this.tips_labels.push(Label) this.tips_labels.push(Label)
} }
} }
this.owner.on(Laya.Event.CLICK, handler, func); this.owner.on(Laya.Event.CLICK, handler, func)
} }
public setSelected(selected: boolean): void { public setSelected(selected: boolean): void {
@@ -60,22 +62,21 @@ export class Block extends Laya.Script {
} }
public setBlockColor(color: string, alpha: number = 1, animated: boolean = false, completedColor: string = "", completedAlpha: number = 1): void { public setBlockColor(color: string, alpha: number = 1, animated: boolean = false, completedColor: string = "", completedAlpha: number = 1): void {
var blockSize = 116 let blockSize = 116
if (config.H_SCREEN) if (config.H_SCREEN)
blockSize = 96 blockSize = 96
this.owner.graphics.clear() this.owner.graphics.clear()
this.owner.graphics.drawRect(0, 0, blockSize, blockSize, color) this.owner.graphics.drawRect(0, 0, blockSize, blockSize, color)
if (animated) { if (animated) {
this.owner.alpha = 0 this.owner.alpha = 0
Laya.Tween.to(this.owner, {alpha:alpha}, 100, Laya.Ease.linearIn) Laya.Tween.to(this.owner, { alpha }, 100, Laya.Ease.linearIn)
Laya.Tween.to(this.owner, { alpha: 0 }, 150, Laya.Ease.linearIn, null, 100) Laya.Tween.to(this.owner, { alpha: 0 }, 150, Laya.Ease.linearIn, null, 100)
Laya.Tween.to(this.owner, {alpha:alpha}, 100, Laya.Ease.linearIn, Laya.Handler.create(this, () => { Laya.Tween.to(this.owner, { alpha }, 100, Laya.Ease.linearIn, Laya.Handler.create(this, () => {
this.owner.graphics.clear() this.owner.graphics.clear()
this.owner.graphics.drawRect(0, 0, blockSize, blockSize, completedColor) this.owner.graphics.drawRect(0, 0, blockSize, blockSize, completedColor)
this.owner.alpha = completedAlpha this.owner.alpha = completedAlpha
}), 250) }), 250)
} } else {
else {
this.owner.alpha = alpha this.owner.alpha = alpha
} }
} }
@@ -96,7 +97,7 @@ export class Block extends Laya.Script {
} }
public setTipsBgColor(visible: boolean, noteNumber: number = 0, color: string = "", alpha: number = 1): void { public setTipsBgColor(visible: boolean, noteNumber: number = 0, color: string = "", alpha: number = 1): void {
var blockSize = 38 let blockSize = 38
if (config.H_SCREEN) if (config.H_SCREEN)
blockSize = 30 blockSize = 30
if (visible) { if (visible) {
@@ -105,9 +106,8 @@ export class Block extends Laya.Script {
obj.graphics.clear() obj.graphics.clear()
obj.graphics.drawRect(0, 0, blockSize, blockSize, color) obj.graphics.drawRect(0, 0, blockSize, blockSize, color)
obj.alpha = alpha obj.alpha = alpha
} } else {
else { for (let i = 0; i < this.tips_bgs.length; i++) {
for (var i=0; i<this.tips_bgs.length; i++) {
var obj = this.tips_bgs[i] var obj = this.tips_bgs[i]
obj.visible = false obj.visible = false
} }
@@ -115,9 +115,10 @@ export class Block extends Laya.Script {
} }
public setBlock(data: DOBlock): void { public setBlock(data: DOBlock): void {
this.data = data; this.data = data
this.updateBlock(); this.updateBlock()
} }
public getData(): DOBlock { public getData(): DOBlock {
return this.data return this.data
} }
@@ -128,8 +129,7 @@ export class Block extends Laya.Script {
this.data.set_score(score) this.data.set_score(score)
if (score > 0) if (score > 0)
G_ShowScoreTips(score.toString(), this.label_show.parent) G_ShowScoreTips(score.toString(), this.label_show.parent)
} } else {
else {
if (this.data.get_score() != 0) if (this.data.get_score() != 0)
this.data.set_score(0) this.data.set_score(0)
} }
@@ -140,21 +140,21 @@ export class Block extends Laya.Script {
public addNoteNumber(noteNumber: number): void { public addNoteNumber(noteNumber: number): void {
this.data.set_show(0) this.data.set_show(0)
var note_numbers = this.data.get_notes() const note_numbers = this.data.get_notes()
var find = note_numbers.indexOf(noteNumber) const find = note_numbers.indexOf(noteNumber)
if (find >= 0) { if (find >= 0) {
this.data.remove_note(noteNumber) this.data.remove_note(noteNumber)
} } else {
else {
this.data.add_note(noteNumber) this.data.add_note(noteNumber)
} }
this.updateBlock() this.updateBlock()
} }
public setNotes(notes: Array<number>): void { public setNotes(notes: Array<number>): void {
this.data.set_show(0) this.data.set_show(0)
this.data.clean_notes() this.data.clean_notes()
for (var i=0; i<notes.length; i++) { for (let i = 0; i < notes.length; i++) {
this.data.add_note(notes[i]) this.data.add_note(notes[i])
} }
this.updateBlock() this.updateBlock()
@@ -167,17 +167,14 @@ export class Block extends Laya.Script {
for (var i = 0; i < this.tips_labels.length; i++) { for (var i = 0; i < this.tips_labels.length; i++) {
this.tips_labels[i].color = "#ffffff" this.tips_labels[i].color = "#ffffff"
} }
} } else {
else {
if (this.data.get_show() == this.data.get_correct()) { if (this.data.get_show() == this.data.get_correct()) {
if (this.data.get_preset()) { if (this.data.get_preset()) {
this.label_show.color = "#2d3138" this.label_show.color = "#2d3138"
} } else {
else {
this.label_show.color = "#2559c0" this.label_show.color = "#2559c0"
} }
} } else {
else {
this.label_show.color = "#cb3256" this.label_show.color = "#cb3256"
} }
for (var i = 0; i < this.tips_labels.length; i++) { for (var i = 0; i < this.tips_labels.length; i++) {
@@ -190,16 +187,14 @@ export class Block extends Laya.Script {
} }
if (this.data.get_show() > 0) { if (this.data.get_show() > 0) {
this.label_show.text = this.data.get_show().toString() this.label_show.text = this.data.get_show().toString()
} } else {
else { this.label_show.text = ""
this.label_show.text = ""; const note_numbers = this.data.get_notes()
var note_numbers = this.data.get_notes()
for (var i = 0; i < note_numbers.length; i++) { for (var i = 0; i < note_numbers.length; i++) {
var value = note_numbers[i] const value = note_numbers[i]
var label = this.tips_labels[value-1] const label = this.tips_labels[value - 1]
label.text = value.toString() label.text = value.toString()
} }
} }
} }
} }

View File

@@ -1,14 +1,12 @@
const { regClass, property } = Laya
const { regClass, property } = Laya;
@regClass() @regClass()
export class Candy extends Laya.Script { export class Candy extends Laya.Script {
declare owner : Laya.Box; declare owner: Laya.Box
private show_sprite: Laya.Sprite private show_sprite: Laya.Sprite
private label_show: Laya.Label; private label_show: Laya.Label
private label_left: Laya.Label; private label_left: Laya.Label
private show: number private show: number
private left: number private left: number
@@ -24,8 +22,7 @@ export class Candy extends Laya.Script {
if (note_open) { if (note_open) {
this.show_sprite.visible = false this.show_sprite.visible = false
this.label_show.color = "#7b818c" this.label_show.color = "#7b818c"
} } else {
else {
this.show_sprite.visible = true this.show_sprite.visible = true
this.label_show.color = "#2559c0" this.label_show.color = "#2559c0"
} }
@@ -44,16 +41,14 @@ export class Candy extends Laya.Script {
updateCandy(): void { updateCandy(): void {
if (this.show > 0) { if (this.show > 0) {
this.label_show.text = this.show.toString() this.label_show.text = this.show.toString()
} } else {
else {
this.label_show.text = "" this.label_show.text = ""
} }
if (this.left > 0) { if (this.left > 0) {
this.label_left.text = this.left.toString(); this.label_left.text = this.left.toString()
this.owner.visible = true this.owner.visible = true
} } else {
else {
this.label_left.text = "" this.label_left.text = ""
this.owner.visible = false this.owner.visible = false
this.label_show.text = "" this.label_show.text = ""

View File

@@ -1,35 +1,38 @@
import { respath } from "../constants/respath"; import { respath } from "../constants/respath"
import { UIManager } from "../models/UIManager"; import { UIManager } from "../models/UIManager"
const { regClass, property } = Laya;
const { regClass, property } = Laya
export function G_ShowCommonTips(title: string, content: string, showToggle: boolean, func: any): void { export function G_ShowCommonTips(title: string, content: string, showToggle: boolean, func: any): void {
Laya.loader.load(respath.common_tips_ui_res).then((go) => { Laya.loader.load(respath.common_tips_ui_res).then((go) => {
var prefab = go.create() const prefab = go.create()
var obj = UIManager.getInstance().getUIRoot().addChild(prefab).getComponent(CommonTips) const obj = UIManager.getInstance().getUIRoot().addChild(prefab).getComponent(CommonTips)
obj.showCommonTips(title, content, showToggle, func) obj.showCommonTips(title, content, showToggle, func)
}) })
} }
@regClass() @regClass()
export class CommonTips extends Laya.Script { export class CommonTips extends Laya.Script {
declare owner : Laya.Box; declare owner: Laya.Box
@property(Laya.Label) @property(Laya.Label)
public label_title: Laya.Label public label_title: Laya.Label
@property(Laya.Label) @property(Laya.Label)
public label_content: Laya.Label public label_content: Laya.Label
@property(Laya.Box) @property(Laya.Box)
public btn_ok: Laya.Box public btn_ok: Laya.Box
@property(Laya.Box) @property(Laya.Box)
public btn_cancel: Laya.Box public btn_cancel: Laya.Box
@property(Laya.Box) @property(Laya.Box)
public toggle: Laya.Box public toggle: Laya.Box
@property(Laya.Image) @property(Laya.Image)
public check: Laya.Image public check: Laya.Image
private isChecked = false private isChecked = false
public showCommonTips(title: string, content: string, showToggle: boolean, func: any): void { public showCommonTips(title: string, content: string, showToggle: boolean, func: any): void {
@@ -54,6 +57,5 @@ export class CommonTips extends Laya.Script {
} }
this.owner.destroy() this.owner.destroy()
}) })
} }
} }

View File

@@ -1,27 +1,25 @@
import { config } from "../constants/config"; import { config } from "../constants/config"
import { CommonData } from "./common/CommonData"; import { CommonData } from "./common/CommonData"
const { regClass, property } = Laya; const { regClass, property } = Laya
@regClass() @regClass()
export class Difficulty extends Laya.Script { export class Difficulty extends Laya.Script {
declare owner : Laya.Box; declare owner: Laya.Box
@property(Laya.Box) @property(Laya.Box)
public obj_items: Laya.Box; public obj_items: Laya.Box
// 组件被激活后执行,此时所有节点和组件均已创建完毕,此方法只执行一次 // 组件被激活后执行,此时所有节点和组件均已创建完毕,此方法只执行一次
onAwake(): void { onAwake(): void {
var offset = this.owner.getChildByName("offset") as Laya.Box const offset = this.owner.getChildByName("offset") as Laya.Box
var bg = offset.getChildByName("bg") as Laya.Sprite const bg = offset.getChildByName("bg") as Laya.Sprite
bg.graphics.clear() bg.graphics.clear()
bg.graphics.drawRoundRect(0, 0, offset.width, offset.height, 20, 20, 0, 0, "#f5f7fb") bg.graphics.drawRoundRect(0, 0, offset.width, offset.height, 20, 20, 0, 0, "#f5f7fb")
Laya.Tween.to(offset, { y: 705 }, 500) Laya.Tween.to(offset, { y: 705 }, 500)
var mask = this.owner.getChildByName("mask") const mask = this.owner.getChildByName("mask")
mask.on(Laya.Event.CLICK, this, () => { mask.on(Laya.Event.CLICK, this, () => {
Laya.Tween.to(offset, { y: 2400 }, 500, null, Laya.Handler.create(this, () => { Laya.Tween.to(offset, { y: 2400 }, 500, null, Laya.Handler.create(this, () => {
this.owner.destroy() this.owner.destroy()
@@ -30,14 +28,14 @@ export class Difficulty extends Laya.Script {
} }
public onInit(callback: any): void { public onInit(callback: any): void {
for (var i=0; i<config.DIFFICULTY_LIST.length; i++) { for (let i = 0; i < config.DIFFICULTY_LIST.length; i++) {
var obj = this.obj_items.getChildAt(i) const obj = this.obj_items.getChildAt(i)
var Label = obj.getChildByName("Label") as Laya.Label const Label = obj.getChildByName("Label") as Laya.Label
Label.text = config.DIFFICULTY_LIST[i] Label.text = config.DIFFICULTY_LIST[i]
var data = obj.getComponent(CommonData) const data = obj.getComponent(CommonData)
data.strValue = config.DIFFICULTY_LIST[i] data.strValue = config.DIFFICULTY_LIST[i]
obj.on(Laya.Event.CLICK, this, (evt: Laya.Event) => { obj.on(Laya.Event.CLICK, this, (evt: Laya.Event) => {
var data = evt.target.getComponent(CommonData) const data = evt.target.getComponent(CommonData)
if (callback) { if (callback) {
callback(data.strValue) callback(data.strValue)
} }

View File

@@ -1,32 +1,35 @@
import { UIManager } from "../models/UIManager"; import type { DOStage } from "../models/DOStage"
import { StorageManager } from "../models/StorageManager"; import { config } from "../constants/config"
import { Utility_ConvertSecondToString } from "../utils/utility"; import { respath } from "../constants/respath"
import { respath } from "../constants/respath"; import { StorageManager } from "../models/StorageManager"
import { Difficulty } from "./Difficulty"; import { UIManager } from "../models/UIManager"
import { config } from "../constants/config"; import { Utility_ConvertSecondToString } from "../utils/utility"
import { DOStage } from "../models/DOStage"; import { Difficulty } from "./Difficulty"
const { regClass, property } = Laya; const { regClass, property } = Laya
@regClass() @regClass()
export class GameDone extends Laya.Script { export class GameDone extends Laya.Script {
declare owner : Laya.Box; declare owner: Laya.Box
@property(Laya.Label) @property(Laya.Label)
public label_diffucuty: Laya.Label public label_diffucuty: Laya.Label
@property(Laya.Label) @property(Laya.Label)
public label_time: Laya.Label public label_time: Laya.Label
@property(Laya.Label) @property(Laya.Label)
public label_score: Laya.Label public label_score: Laya.Label
@property(Laya.Box) @property(Laya.Box)
public btn_new: Laya.Box public btn_new: Laya.Box
@property(Laya.Box) @property(Laya.Box)
public btn_home: Laya.Box public btn_home: Laya.Box
@property(Laya.Box) @property(Laya.Box)
public btn_continue: Laya.Box public btn_continue: Laya.Box
onStart(): void { onStart(): void {
} }
@@ -38,20 +41,19 @@ export class GameDone extends Laya.Script {
this.btn_new.on(Laya.Event.CLICK, this, (evt: Laya.Event) => { this.btn_new.on(Laya.Event.CLICK, this, (evt: Laya.Event) => {
if (config.H_SCREEN) { if (config.H_SCREEN) {
var user = StorageManager.getInstance().getUser() const user = StorageManager.getInstance().getUser()
user.update_progress(doStage.get_difficulty(), doStage.get_stageIndex() + 1)// 主线关卡更新难度进度 user.update_progress(doStage.get_difficulty(), doStage.get_stageIndex() + 1)// 主线关卡更新难度进度
StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, doStage.get_difficulty(), doStage.get_difficulty()) StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, doStage.get_difficulty(), doStage.get_difficulty())
UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID); UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID)
this.owner.destroy() this.owner.destroy()
} } else {
else {
Laya.loader.load(respath.difficulty_ui_res).then((go) => { Laya.loader.load(respath.difficulty_ui_res).then((go) => {
var prefab = go.create() const prefab = go.create()
var d = UIManager.getInstance().getUIRoot().addChild(prefab).getComponent(Difficulty) const d = UIManager.getInstance().getUIRoot().addChild(prefab).getComponent(Difficulty)
d.onInit((value: string) => { d.onInit((value: string) => {
console.log("选择难度", value) console.log("选择难度", value)
StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, value, value) StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, value, value)
UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID); UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID)
this.owner.destroy() this.owner.destroy()
}) })
}) })
@@ -60,7 +62,7 @@ export class GameDone extends Laya.Script {
this.btn_continue.on(Laya.Event.CLICK, this, (evt: Laya.Event) => { // 这个按钮只有从DC来的会显示 this.btn_continue.on(Laya.Event.CLICK, this, (evt: Laya.Event) => { // 这个按钮只有从DC来的会显示
UIManager.getInstance().loadDCUI() UIManager.getInstance().loadDCUI()
UIManager.getInstance().closeStageUI(); UIManager.getInstance().closeStageUI()
this.owner.destroy() this.owner.destroy()
}) })
@@ -68,21 +70,18 @@ export class GameDone extends Laya.Script {
if (config.H_SCREEN) { if (config.H_SCREEN) {
UIManager.getInstance().closeDCUI() UIManager.getInstance().closeDCUI()
if (doStage.get_stageType() == config.STAGE_TYPE.MAIN) { if (doStage.get_stageType() == config.STAGE_TYPE.MAIN) {
var user = StorageManager.getInstance().getUser() const user = StorageManager.getInstance().getUser()
user.update_progress(doStage.get_difficulty(), doStage.get_stageIndex() + 1)// 主线关卡更新难度进度 user.update_progress(doStage.get_difficulty(), doStage.get_stageIndex() + 1)// 主线关卡更新难度进度
StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, doStage.get_difficulty(), doStage.get_difficulty()) StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, doStage.get_difficulty(), doStage.get_difficulty())
UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID); UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID)
} } else if (doStage.get_stageType() == config.STAGE_TYPE.DC) {
else if (doStage.get_stageType() == config.STAGE_TYPE.DC) {
UIManager.getInstance().setTopbarTo(true) UIManager.getInstance().setTopbarTo(true)
} }
} } else {
else {
UIManager.getInstance().loadHomeUI() UIManager.getInstance().loadHomeUI()
UIManager.getInstance().closeStageUI(); UIManager.getInstance().closeStageUI()
} }
this.owner.destroy() this.owner.destroy()
}) })
} }
} }

View File

@@ -1,17 +1,16 @@
import { respath } from "../constants/respath"; import type { DOStage } from "../models/DOStage"
import { config } from "../constants/config"; import { config } from "../constants/config"
import { UIManager } from "../models/UIManager"; import { respath } from "../constants/respath"
import { StorageManager } from "../models/StorageManager"; import { EVENT_TYPES, EventManager } from "../models/EventManager"
import { EventManager, EVENT_TYPES } from "../models/EventManager"; import { StorageManager } from "../models/StorageManager"
import { Difficulty } from "./Difficulty"; import { UIManager } from "../models/UIManager"
import { DOStage } from "../models/DOStage"; import { Difficulty } from "./Difficulty"
const { regClass, property } = Laya; const { regClass, property } = Laya
@regClass() @regClass()
export class GameOver extends Laya.Script { export class GameOver extends Laya.Script {
declare owner : Laya.Box; declare owner: Laya.Box
@property(Laya.Sprite) @property(Laya.Sprite)
public btn_second: Laya.Sprite public btn_second: Laya.Sprite
@@ -21,12 +20,11 @@ export class GameOver extends Laya.Script {
@property(Laya.Sprite) @property(Laya.Sprite)
public btn_newOrClose: Laya.Sprite public btn_newOrClose: Laya.Sprite
@property(Laya.Label) @property(Laya.Label)
public label_newOrClose: Laya.Label public label_newOrClose: Laya.Label
public onSetStageInfo(doStage: DOStage): void { public onSetStageInfo(doStage: DOStage): void {
this.btn_second.on(Laya.Event.CLICK, this, (evt: Laya.Event) => { this.btn_second.on(Laya.Event.CLICK, this, (evt: Laya.Event) => {
doStage.set_mistake(doStage.get_mistake() - 1) doStage.set_mistake(doStage.get_mistake() - 1)
EventManager.getInstance().DispatchEvent(EVENT_TYPES.NOT_UPDATE_MISTAKE) EventManager.getInstance().DispatchEvent(EVENT_TYPES.NOT_UPDATE_MISTAKE)
@@ -34,48 +32,45 @@ export class GameOver extends Laya.Script {
}) })
this.btn_restart.on(Laya.Event.CLICK, this, (evt: Laya.Event) => { this.btn_restart.on(Laya.Event.CLICK, this, (evt: Laya.Event) => {
var stageID = doStage.get_stageID() const stageID = doStage.get_stageID()
var type = doStage.get_stageType() const type = doStage.get_stageType()
var difficulty = doStage.get_difficulty() const difficulty = doStage.get_difficulty()
StorageManager.getInstance().newStage(stageID, type, difficulty, difficulty) StorageManager.getInstance().newStage(stageID, type, difficulty, difficulty)
UIManager.getInstance().loadStageUI(stageID); UIManager.getInstance().loadStageUI(stageID)
this.owner.destroy() this.owner.destroy()
}) })
var type = doStage.get_stageType() const type = doStage.get_stageType()
if (type == config.STAGE_TYPE.MAIN) { if (type == config.STAGE_TYPE.MAIN) {
this.label_newOrClose.text = "New Game" this.label_newOrClose.text = "New Game"
this.btn_newOrClose.on(Laya.Event.CLICK, this, (evt: Laya.Event) => { this.btn_newOrClose.on(Laya.Event.CLICK, this, (evt: Laya.Event) => {
if (config.H_SCREEN) { if (config.H_SCREEN) {
var user = StorageManager.getInstance().getUser() const user = StorageManager.getInstance().getUser()
user.update_progress(doStage.get_difficulty(), doStage.get_stageIndex() + 1)// 主线关卡更新难度进度 user.update_progress(doStage.get_difficulty(), doStage.get_stageIndex() + 1)// 主线关卡更新难度进度
var difficulty = doStage.get_difficulty() const difficulty = doStage.get_difficulty()
StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, difficulty, difficulty) StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, difficulty, difficulty)
UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID); UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID)
this.owner.destroy() this.owner.destroy()
} } else {
else {
Laya.loader.load(respath.difficulty_ui_res).then((go) => { Laya.loader.load(respath.difficulty_ui_res).then((go) => {
var prefab = go.create() const prefab = go.create()
var d = UIManager.getInstance().getUIRoot().addChild(prefab).getComponent(Difficulty) const d = UIManager.getInstance().getUIRoot().addChild(prefab).getComponent(Difficulty)
d.onInit((value: string) => { d.onInit((value: string) => {
console.log("选择难度", value) console.log("选择难度", value)
StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, value, value) StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, value, value)
UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID); UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID)
this.owner.destroy() this.owner.destroy()
}) })
}) })
} }
}) })
} } else {
else {
this.label_newOrClose.text = "Close" this.label_newOrClose.text = "Close"
this.btn_newOrClose.on(Laya.Event.CLICK, this, (evt: Laya.Event) => { this.btn_newOrClose.on(Laya.Event.CLICK, this, (evt: Laya.Event) => {
UIManager.getInstance().loadDCUI() UIManager.getInstance().loadDCUI()
UIManager.getInstance().closeStageUI(); UIManager.getInstance().closeStageUI()
this.owner.destroy() this.owner.destroy()
}) })
} }
} }
} }

View File

@@ -1,37 +1,33 @@
import type { DOStage } from "../models/DOStage"
import { EVENT_TYPES, EventManager } from "../models/EventManager"
import { StorageManager } from "../models/StorageManager"
import { UIManager } from "../models/UIManager"
import { Utility_ConvertSecondToString } from "../utils/utility"
const { regClass, property } = Laya
import { UIManager } from "../models/UIManager";
import { StorageManager } from "../models/StorageManager";
import { Utility_ConvertSecondToString } from "../utils/utility";
import { EVENT_TYPES, EventManager } from "../models/EventManager";
import { DOStage } from "../models/DOStage";
const { regClass, property } = Laya;
@regClass() @regClass()
export class GamePause extends Laya.Script { export class GamePause extends Laya.Script {
declare owner : Laya.Box; declare owner: Laya.Box
@property(Laya.Label) @property(Laya.Label)
public label_time: Laya.Label public label_time: Laya.Label
@property(Laya.Label) @property(Laya.Label)
public label_diffucuty: Laya.Label public label_diffucuty: Laya.Label
@property(Laya.Sprite) @property(Laya.Sprite)
public btn_continue: Laya.Sprite public btn_continue: Laya.Sprite
@property(Laya.Sprite) @property(Laya.Sprite)
public btn_restart: Laya.Sprite public btn_restart: Laya.Sprite
// 组件被激活后执行,此时所有节点和组件均已创建完毕,此方法只执行一次 // 组件被激活后执行,此时所有节点和组件均已创建完毕,此方法只执行一次
onAwake(): void { onAwake(): void {
} }
public onSetStageInfo(doStage: DOStage): void { public onSetStageInfo(doStage: DOStage): void {
this.label_time.text = Utility_ConvertSecondToString(doStage.get_duration()) this.label_time.text = Utility_ConvertSecondToString(doStage.get_duration())
this.label_diffucuty.text = doStage.get_difficulty() this.label_diffucuty.text = doStage.get_difficulty()
@@ -42,13 +38,12 @@ export class GamePause extends Laya.Script {
}) })
this.btn_restart.on(Laya.Event.CLICK, this, (evt: Laya.Event) => { this.btn_restart.on(Laya.Event.CLICK, this, (evt: Laya.Event) => {
var stageID = doStage.get_stageID() const stageID = doStage.get_stageID()
var type = doStage.get_stageType() const type = doStage.get_stageType()
var difficulty = doStage.get_difficulty() const difficulty = doStage.get_difficulty()
StorageManager.getInstance().newStage(stageID, type, difficulty, difficulty) StorageManager.getInstance().newStage(stageID, type, difficulty, difficulty)
UIManager.getInstance().loadStageUI(stageID); UIManager.getInstance().loadStageUI(stageID)
this.owner.destroy() this.owner.destroy()
}) })
} }
} }

View File

@@ -1,110 +1,111 @@
import { config } from "../constants/config"
import { UIManager } from "../models/UIManager"; import { respath } from "../constants/respath"
import { StorageManager } from "../models/StorageManager"; import { G_getMonthInfo } from "../models/DCManager"
import { respath } from "../constants/respath"; import { StorageManager } from "../models/StorageManager"
import { Difficulty } from "./Difficulty"; import { UIManager } from "../models/UIManager"
import { LevelManager } from "../models/LevelManager"; import { Utility_ConvertSecondToString } from "../utils/utility"
import { config } from "../constants/config"; import { Difficulty } from "./Difficulty"
import { Utility_ConvertSecondToString } from "../utils/utility";
import { G_getMonthInfo } from "../models/DCManager";
const { regClass, property } = Laya const { regClass, property } = Laya
@regClass() @regClass()
export class Home extends Laya.Script { export class Home extends Laya.Script {
declare owner : Laya.Box; declare owner: Laya.Box
@property(Laya.Image) @property(Laya.Image)
public bg_dc: Laya.Image; public bg_dc: Laya.Image
@property(Laya.Image) @property(Laya.Image)
public icon_dc: Laya.Image; public icon_dc: Laya.Image
@property(Laya.Label) @property(Laya.Label)
public label_dc_title: Laya.Label; public label_dc_title: Laya.Label
@property(Laya.Label) @property(Laya.Label)
public label_dc_date: Laya.Label; public label_dc_date: Laya.Label
@property(Laya.Sprite) @property(Laya.Sprite)
public btn_play: Laya.Sprite; public btn_play: Laya.Sprite
@property(Laya.Sprite) @property(Laya.Sprite)
public btn_continue: Laya.Sprite; public btn_continue: Laya.Sprite
@property(Laya.Sprite) @property(Laya.Sprite)
public btn_more: Laya.Sprite; public btn_more: Laya.Sprite
@property(Laya.Box) @property(Laya.Box)
public btn_new_blue: Laya.Box; public btn_new_blue: Laya.Box
@property(Laya.Box)
public btn_go: Laya.Box;
@property(Laya.Box)
public btn_new_white: Laya.Box;
@property(Laya.Box) @property(Laya.Box)
public btn_clean: Laya.Box; public btn_go: Laya.Box
@property(Laya.Box)
public btn_new_white: Laya.Box
@property(Laya.Box)
public btn_clean: Laya.Box
// 组件被激活后执行,此时所有节点和组件均已创建完毕,此方法只执行一次 // 组件被激活后执行,此时所有节点和组件均已创建完毕,此方法只执行一次
onAwake(): void { onAwake(): void {
var user = StorageManager.getInstance().getUser() var user = StorageManager.getInstance().getUser()
var now = new Date() const now = new Date()
var nowYear = now.getFullYear() const nowYear = now.getFullYear()
var nowMonth = now.getMonth() + 1 const nowMonth = now.getMonth() + 1
var nowDay = now.getDate() const nowDay = now.getDate()
var find = G_getMonthInfo(nowYear, nowMonth) const find = G_getMonthInfo(nowYear, nowMonth)
if (find) { if (find) {
this.icon_dc.skin = find.icon_res this.icon_dc.skin = find.icon_res
if (user.get_doneCountByDate(nowYear, nowMonth) >= find.dayCount) { if (user.get_doneCountByDate(nowYear, nowMonth) >= find.dayCount) {
this.bg_dc.skin = respath.home_top_dc_bg_finish this.bg_dc.skin = respath.home_top_dc_bg_finish
this.label_dc_title.color = "#ffffff" this.label_dc_title.color = "#ffffff"
this.label_dc_date.color = "#ffffff" this.label_dc_date.color = "#ffffff"
} } else {
else {
this.bg_dc.skin = respath.home_top_dc_bg_normal this.bg_dc.skin = respath.home_top_dc_bg_normal
this.label_dc_title.color = "#2d3138" this.label_dc_title.color = "#2d3138"
this.label_dc_date.color = "#2d3138" this.label_dc_date.color = "#2d3138"
} }
} } else {
else {
this.bg_dc.skin = respath.home_top_dc_bg_normal this.bg_dc.skin = respath.home_top_dc_bg_normal
this.label_dc_title.color = "#2d3138" this.label_dc_title.color = "#2d3138"
this.label_dc_date.color = "#2d3138" this.label_dc_date.color = "#2d3138"
} }
var stageID = `${nowYear}-${nowMonth}-${nowDay}` const stageID = `${nowYear}-${nowMonth}-${nowDay}`
this.label_dc_date.text = `${config.MONTH_ABBRS[nowMonth - 1]} ${nowDay}` this.label_dc_date.text = `${config.MONTH_ABBRS[nowMonth - 1]} ${nowDay}`
var progress = user.get_done(stageID) const progress = user.get_done(stageID)
if (progress <= 0) { if (progress <= 0) {
this.btn_play.visible = true this.btn_play.visible = true
this.btn_continue.visible = false this.btn_continue.visible = false
this.btn_more.visible = false this.btn_more.visible = false
this.btn_play.on(Laya.Event.CLICK, this, () => { // Play this.btn_play.on(Laya.Event.CLICK, this, () => { // Play
var stageName = `${config.MONTH_ABBRS[nowMonth-1]} ${nowDay}` const stageName = `${config.MONTH_ABBRS[nowMonth - 1]} ${nowDay}`
StorageManager.getInstance().newStage(stageID, config.STAGE_TYPE.DC, stageName) StorageManager.getInstance().newStage(stageID, config.STAGE_TYPE.DC, stageName)
UIManager.getInstance().loadStageUI(stageID); UIManager.getInstance().loadStageUI(stageID)
this.owner.destroy() this.owner.destroy()
}) })
} } else if (progress >= 1) {
else if (progress >= 1) {
this.btn_play.visible = false this.btn_play.visible = false
this.btn_continue.visible = false this.btn_continue.visible = false
this.btn_more.visible = true this.btn_more.visible = true
this.btn_more.on(Laya.Event.CLICK, this, () => { // 更多 this.btn_more.on(Laya.Event.CLICK, this, () => { // 更多
UIManager.getInstance().loadDCUI(); UIManager.getInstance().loadDCUI()
this.owner.destroy() this.owner.destroy()
}) })
} } else {
else {
this.btn_play.visible = false this.btn_play.visible = false
this.btn_continue.visible = true this.btn_continue.visible = true
this.btn_more.visible = false this.btn_more.visible = false
this.btn_continue.on(Laya.Event.CLICK, this, () => { // 继续 this.btn_continue.on(Laya.Event.CLICK, this, () => { // 继续
UIManager.getInstance().loadStageUI(stageID); UIManager.getInstance().loadStageUI(stageID)
this.owner.destroy() this.owner.destroy()
}) })
} }
this.btn_new_blue.on(Laya.Event.CLICK, this, this.onClickNew) this.btn_new_blue.on(Laya.Event.CLICK, this, this.onClickNew)
this.btn_new_white.on(Laya.Event.CLICK, this, this.onClickNew) this.btn_new_white.on(Laya.Event.CLICK, this, this.onClickNew)
this.btn_go.on(Laya.Event.CLICK, this, (evt: Laya.Event) => { this.btn_go.on(Laya.Event.CLICK, this, (evt: Laya.Event) => {
UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID); UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID)
this.owner.destroy() this.owner.destroy()
}) })
var user = StorageManager.getInstance().getUser() var user = StorageManager.getInstance().getUser()
@@ -113,28 +114,25 @@ export class Home extends Laya.Script {
this.btn_new_blue.visible = true this.btn_new_blue.visible = true
this.btn_new_white.visible = false this.btn_new_white.visible = false
this.btn_go.visible = false this.btn_go.visible = false
} } else {
else { const doStage = StorageManager.getInstance().getStage(config.DEFAULT_STAGE_ID)
var doStage = StorageManager.getInstance().getStage(config.DEFAULT_STAGE_ID)
if (doStage) { if (doStage) {
console.log("当前主线关卡进行中 mistake=", doStage.get_mistake()) console.log("当前主线关卡进行中 mistake=", doStage.get_mistake())
if (doStage.get_mistake() >= config.MISTAKE_MAX) { if (doStage.get_mistake() >= config.MISTAKE_MAX) {
this.btn_new_blue.visible = true this.btn_new_blue.visible = true
this.btn_new_white.visible = false this.btn_new_white.visible = false
this.btn_go.visible = false this.btn_go.visible = false
} } else {
else {
this.btn_new_blue.visible = false this.btn_new_blue.visible = false
this.btn_new_white.visible = true this.btn_new_white.visible = true
this.btn_go.visible = true this.btn_go.visible = true
var label_time = this.btn_go.getChildByName("time").getChildByName("label_time") as Laya.Label const label_time = this.btn_go.getChildByName("time").getChildByName("label_time") as Laya.Label
var duration = doStage.get_duration() const duration = doStage.get_duration()
var timeStr = Utility_ConvertSecondToString(duration) const timeStr = Utility_ConvertSecondToString(duration)
label_time.text = `${timeStr} - ${doStage.get_difficulty()}` label_time.text = `${timeStr} - ${doStage.get_difficulty()}`
} }
} } else {
else {
console.log("当前主线关卡未开始") console.log("当前主线关卡未开始")
this.btn_new_blue.visible = true this.btn_new_blue.visible = true
this.btn_new_white.visible = false this.btn_new_white.visible = false
@@ -144,7 +142,7 @@ export class Home extends Laya.Script {
// 测试逻辑 // 测试逻辑
this.btn_clean.on(Laya.Event.CLICK, this, (evt: Laya.Event) => { this.btn_clean.on(Laya.Event.CLICK, this, (evt: Laya.Event) => {
console.log("btn_clean=", evt); console.log("btn_clean=", evt)
StorageManager.getInstance().cleanAll() StorageManager.getInstance().cleanAll()
}) })
this.btn_clean.visible = config.DEBUG this.btn_clean.visible = config.DEBUG
@@ -153,16 +151,14 @@ export class Home extends Laya.Script {
public onClickNew(evt: Laya.Event): void { public onClickNew(evt: Laya.Event): void {
Laya.loader.load(respath.difficulty_ui_res).then((go) => { Laya.loader.load(respath.difficulty_ui_res).then((go) => {
var prefab = go.create() const prefab = go.create()
var d = UIManager.getInstance().getUIRoot().addChild(prefab).getComponent(Difficulty) const d = UIManager.getInstance().getUIRoot().addChild(prefab).getComponent(Difficulty)
d.onInit((value: string) => { d.onInit((value: string) => {
console.log("选择难度", value) console.log("选择难度", value)
StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, value, value) StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, value, value)
UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID); UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID)
this.owner.destroy() this.owner.destroy()
}) })
}) })
} }
} }

View File

@@ -1,11 +1,10 @@
import { config } from "../constants/config"; import { AutoDestroy } from "./common/AutoDestroy"
import { AutoDestroy } from "./common/AutoDestroy";
const { regClass, property } = Laya; const { regClass, property } = Laya
@regClass() @regClass()
export class ScoreAdd extends Laya.Script { export class ScoreAdd extends Laya.Script {
declare owner : Laya.Box; declare owner: Laya.Box
@property(Laya.Label) @property(Laya.Label)
public label: Laya.Label public label: Laya.Label
@@ -14,15 +13,14 @@ export class ScoreAdd extends Laya.Script {
this.label.scaleX = 0 this.label.scaleX = 0
this.label.skewY = 0 this.label.skewY = 0
var d = this.owner.getComponent(AutoDestroy) const d = this.owner.getComponent(AutoDestroy)
d.lifeTime = 2 d.lifeTime = 2
} }
onStart(): void { onStart(): void {
let wait = 0
var wait = 0 let duration = 300
var duration = 300
Laya.Tween.to(this.label, { scaleX: 1, scaleY: 1 }, duration, Laya.Ease.strongIn, null, wait) Laya.Tween.to(this.label, { scaleX: 1, scaleY: 1 }, duration, Laya.Ease.strongIn, null, wait)
wait += duration wait += duration
@@ -33,12 +31,9 @@ export class ScoreAdd extends Laya.Script {
duration = 300 duration = 300
Laya.Tween.to(this.label, { alpha: 0 }, duration, Laya.Ease.strongIn, null, wait) Laya.Tween.to(this.label, { alpha: 0 }, duration, Laya.Ease.strongIn, null, wait)
wait += duration wait += duration
} }
public onSetText(text: string): void { public onSetText(text: string): void {
this.label.text = text this.label.text = text
} }
} }

View File

@@ -1,70 +1,81 @@
import type { DOStage } from "../models/DOStage"
import { config } from "../constants/config"
import { G_getMonthInfo } from "../models/DCManager"
import { EVENT_TYPES, EventManager } from "../models/EventManager"
import { StorageManager } from "../models/StorageManager"
import { UIManager } from "../models/UIManager"
import { Utility_CalculateScore, Utility_ConvertSecondToString } from "../utils/utility"
import { Block } from "./Block"
import { Candy } from "./Candy"
import { UIManager } from "../models/UIManager"; const { regClass, property } = Laya
import { Block } from "./Block";
import { Candy } from "./Candy";
import { DOStage } from "../models/DOStage";
import { config } from "../constants/config";
import { StorageManager } from "../models/StorageManager";
import { Utility_CalculateScore, Utility_ConvertSecondToString } from "../utils/utility";
import { EVENT_TYPES, EventManager } from "../models/EventManager";
import { G_getMonthInfo } from "../models/DCManager";
const { regClass, property } = Laya;
@regClass() @regClass()
export class Stage extends Laya.Script { export class Stage extends Laya.Script {
declare owner : Laya.Box; declare owner: Laya.Box
@property(Laya.Box) @property(Laya.Box)
public btn_back: Laya.Box public btn_back: Laya.Box
@property(Laya.Box) @property(Laya.Box)
public btn_new: Laya.Box public btn_new: Laya.Box
@property(Laya.Button) @property(Laya.Button)
public btn_pause: Laya.Button public btn_pause: Laya.Button
@property(Laya.Label) @property(Laya.Label)
public label_score: Laya.Label; public label_score: Laya.Label
private score_last: number private score_last: number
private score_current: number private score_current: number
private score_step: number private score_step: number
private score_animation_wait_frame = 0 private score_animation_wait_frame = 0
@property(Laya.Label) @property(Laya.Label)
public label_mistake: Laya.Label; public label_mistake: Laya.Label
@property(Laya.Label) @property(Laya.Label)
public label_name: Laya.Label; public label_name: Laya.Label
@property(Laya.Label) @property(Laya.Label)
public label_time: Laya.Label; public label_time: Laya.Label
@property(Laya.Box) @property(Laya.Box)
public obj_blocks: Laya.Box; public obj_blocks: Laya.Box
@property(Laya.Box)
public obj_block_labels: Laya.Box;
private blocks: Array<Block> = new Array();
@property(Laya.Box) @property(Laya.Box)
public obj_candys: Laya.Box; public obj_block_labels: Laya.Box
private blocks: Array<Block> = []
@property(Laya.Box) @property(Laya.Box)
public obj_candy_labels: Laya.Box; public obj_candys: Laya.Box
private candys: Array<Candy> = new Array();
@property(Laya.Box)
public obj_candy_labels: Laya.Box
private candys: Array<Candy> = []
@property(Laya.Button) @property(Laya.Button)
public btn_undo: Laya.Button; public btn_undo: Laya.Button
@property(Laya.Button) @property(Laya.Button)
public btn_erase: Laya.Button; public btn_erase: Laya.Button
@property(Laya.Button) @property(Laya.Button)
public btn_note: Laya.Button; public btn_note: Laya.Button
private btn_note_normal: Laya.Box private btn_note_normal: Laya.Box
private btn_note_checked: Laya.Box private btn_note_checked: Laya.Box
private label_note: Laya.Label private label_note: Laya.Label
@property(Laya.Button) @property(Laya.Button)
public btn_hint: Laya.Button; public btn_hint: Laya.Button
private btn_hint_normal: Laya.Box private btn_hint_normal: Laya.Box
private btn_hint_ad: Laya.Box private btn_hint_ad: Laya.Box
private btn_hint_label: Laya.Label private btn_hint_label: Laya.Label
private data: DOStage; private data: DOStage
private selectedBlock: Block; private selectedBlock: Block
private paused: boolean private paused: boolean
private static _instance: Stage private static _instance: Stage
@@ -73,45 +84,43 @@ export class Stage extends Laya.Script {
this.btn_back.on(Laya.Event.CLICK, this, () => { this.btn_back.on(Laya.Event.CLICK, this, () => {
if (this.data.get_stageType() == config.STAGE_TYPE.MAIN) { if (this.data.get_stageType() == config.STAGE_TYPE.MAIN) {
UIManager.getInstance().loadHomeUI(); UIManager.getInstance().loadHomeUI()
UIManager.getInstance().closeStageUI(); UIManager.getInstance().closeStageUI()
} } else {
else { UIManager.getInstance().loadDCUI()
UIManager.getInstance().loadDCUI(); UIManager.getInstance().closeStageUI()
UIManager.getInstance().closeStageUI();
} }
}) })
if (this.btn_new) { if (this.btn_new) {
this.btn_new.on(Laya.Event.CLICK, this, () => { this.btn_new.on(Laya.Event.CLICK, this, () => {
var user = StorageManager.getInstance().getUser() const user = StorageManager.getInstance().getUser()
user.update_progress(this.data.get_difficulty(), this.data.get_stageIndex() + 1)// 主线关卡更新难度进度 user.update_progress(this.data.get_difficulty(), this.data.get_stageIndex() + 1)// 主线关卡更新难度进度
StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, this.data.get_difficulty(), this.data.get_difficulty()) StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, this.data.get_difficulty(), this.data.get_difficulty())
UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID) UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID)
}) })
} }
this.btn_pause.on(Laya.Event.CLICK, this, () => { this.btn_pause.on(Laya.Event.CLICK, this, () => {
UIManager.getInstance().loadGamePauseUI(this.data); UIManager.getInstance().loadGamePauseUI(this.data)
}) })
for (var i = 0; i < this.obj_blocks.numChildren; i++) { for (var i = 0; i < this.obj_blocks.numChildren; i++) {
var hbox = this.obj_blocks.getChildAt(i); var hbox = this.obj_blocks.getChildAt(i)
var l_hbox = this.obj_block_labels.getChildAt(i); var l_hbox = this.obj_block_labels.getChildAt(i)
for (var j = 0; j < hbox.numChildren; j++) { for (var j = 0; j < hbox.numChildren; j++) {
var block = hbox.getChildAt(j).getComponent(Block); const block = hbox.getChildAt(j).getComponent(Block)
this.blocks.push(block); this.blocks.push(block)
var XGroup = 0; let XGroup = 0
if (j == 3 || j == 4 || j == 5) if (j == 3 || j == 4 || j == 5)
XGroup = 1 XGroup = 1
if (j == 6 || j == 7 || j == 8) if (j == 6 || j == 7 || j == 8)
XGroup = 2 XGroup = 2
var YGroup = 0; let YGroup = 0
if (i == 3 || i == 4 || i == 5) if (i == 3 || i == 4 || i == 5)
YGroup = 1 YGroup = 1
if (i == 6 || i == 7 || i == 8) if (i == 6 || i == 7 || i == 8)
YGroup = 2 YGroup = 2
var l_vbox = l_hbox.getChildAt(j) as Laya.Box const l_vbox = l_hbox.getChildAt(j) as Laya.Box
block.onInit(j, i, XGroup, YGroup, l_vbox, this, this.onClickBlock) block.onInit(j, i, XGroup, YGroup, l_vbox, this, this.onClickBlock)
} }
} }
@@ -119,9 +128,9 @@ export class Stage extends Laya.Script {
hbox = this.obj_candys.getChildAt(i) hbox = this.obj_candys.getChildAt(i)
l_hbox = this.obj_candy_labels.getChildAt(i) l_hbox = this.obj_candy_labels.getChildAt(i)
for (var j = 0; j < hbox.numChildren; j++) { for (var j = 0; j < hbox.numChildren; j++) {
var candy = hbox.getChildAt(j).getComponent(Candy); const candy = hbox.getChildAt(j).getComponent(Candy)
this.candys.push(candy); this.candys.push(candy)
var box = l_hbox.getChildAt(j) as Laya.Box const box = l_hbox.getChildAt(j) as Laya.Box
candy.onInit(box, this, this.onClickCandy) candy.onInit(box, this, this.onClickCandy)
} }
} }
@@ -151,6 +160,7 @@ export class Stage extends Laya.Script {
Stage._instance.onUpdateMistake() Stage._instance.onUpdateMistake()
} }
} }
public static EventUpdatePause(arg: any): void { public static EventUpdatePause(arg: any): void {
if (Stage._instance) { if (Stage._instance) {
Stage._instance.paused = arg Stage._instance.paused = arg
@@ -183,16 +193,16 @@ export class Stage extends Laya.Script {
if (this.paused) { if (this.paused) {
return return
} }
var last = this.data.get_duration() let last = this.data.get_duration()
last++ last++
this.data.set_duration(last) this.data.set_duration(last)
this.label_time.text = Utility_ConvertSecondToString(last) this.label_time.text = Utility_ConvertSecondToString(last)
}) })
var blocks = doStage.get_blocks() const blocks = doStage.get_blocks()
for (var i=0; i<blocks.length; i++) { for (let i = 0; i < blocks.length; i++) {
var doBlock = blocks[i] const doBlock = blocks[i]
var block = this.blocks[i] const block = this.blocks[i]
block.setBlockColor(config.BLOCK_COLOR.WHITE) block.setBlockColor(config.BLOCK_COLOR.WHITE)
block.setBlock(doBlock) block.setBlock(doBlock)
block.setTipsBgColor(false) block.setTipsBgColor(false)
@@ -207,9 +217,9 @@ export class Stage extends Laya.Script {
} }
onUpdateScore(): void { onUpdateScore(): void {
var score = 0 let score = 0
var blocks = this.data.get_blocks() const blocks = this.data.get_blocks()
for (var i=0; i<blocks.length; i++) { for (let i = 0; i < blocks.length; i++) {
score += blocks[i].get_score() score += blocks[i].get_score()
} }
if (this.score_current != score) { // 分数发生变化 if (this.score_current != score) { // 分数发生变化
@@ -234,8 +244,7 @@ export class Stage extends Laya.Script {
if (this.score_last > this.score_current) if (this.score_last > this.score_current)
this.score_last = this.score_current this.score_last = this.score_current
this.label_score.text = `Score: ${this.score_last}` this.label_score.text = `Score: ${this.score_last}`
} } else {
else {
this.label_score.text = `Score: ${this.score_current}` this.label_score.text = `Score: ${this.score_current}`
this.score_last = this.score_current this.score_last = this.score_current
} }
@@ -254,15 +263,14 @@ export class Stage extends Laya.Script {
this.blocks[i].setTipsBgColor(false) this.blocks[i].setTipsBgColor(false)
} }
// 相关格子置灰 // 相关格子置灰
var relateds = this.findRelatedBlocks(block) const relateds = this.findRelatedBlocks(block)
for (var i = 0; i < relateds.length; i++) for (var i = 0; i < relateds.length; i++)
relateds[i].setBlockColor(config.BLOCK_COLOR.GREY) relateds[i].setBlockColor(config.BLOCK_COLOR.GREY)
// 选中空白格子 // 选中空白格子
if (block.getData().get_show() <= 0) { if (block.getData().get_show() <= 0) {
block.setBlockColor(config.BLOCK_COLOR.BLUE) block.setBlockColor(config.BLOCK_COLOR.BLUE)
} } else {
else {
var sames = this.findSameNumberBlocks(block)// 相同数字的格子 var sames = this.findSameNumberBlocks(block)// 相同数字的格子
for (var i = 0; i < sames.length; i++) { for (var i = 0; i < sames.length; i++) {
sames[i].setBlockColor(config.BLOCK_COLOR.BLUE, 0.4) sames[i].setBlockColor(config.BLOCK_COLOR.BLUE, 0.4)
@@ -274,8 +282,7 @@ export class Stage extends Laya.Script {
// 正确 // 正确
if (block.getData().get_checked()) { if (block.getData().get_checked()) {
block.setBlockColor(config.BLOCK_COLOR.BLUE) block.setBlockColor(config.BLOCK_COLOR.BLUE)
} } else { // 错误
else {//错误
if (animated) { // 填数状态播放闪动效果 if (animated) { // 填数状态播放闪动效果
for (var i = 0; i < relateds.length; i++) { // 相关且数字相同 for (var i = 0; i < relateds.length; i++) { // 相关且数字相同
if (relateds[i].getData().get_show() == block.getData().get_show()) { // 播放变红动效 if (relateds[i].getData().get_show() == block.getData().get_show()) { // 播放变红动效
@@ -285,8 +292,7 @@ export class Stage extends Laya.Script {
} }
} }
} }
} } else {
else {
for (var i = 0; i < relateds.length; i++) { // 相关且数字相同 for (var i = 0; i < relateds.length; i++) { // 相关且数字相同
if (relateds[i].getData().get_show() == block.getData().get_show()) { // 直接变红 if (relateds[i].getData().get_show() == block.getData().get_show()) { // 直接变红
if (relateds[i].getData().get_index() != block.getData().get_index()) { if (relateds[i].getData().get_index() != block.getData().get_index()) {
@@ -307,28 +313,28 @@ export class Stage extends Laya.Script {
this.onSetBlock(this.selectedBlock) this.onSetBlock(this.selectedBlock)
this.data.set_select_index(this.selectedBlock.getData().get_index()) this.data.set_select_index(this.selectedBlock.getData().get_index())
} }
onClickBlock(evt: Laya.Event): void { onClickBlock(evt: Laya.Event): void {
var block = evt.target.getComponent(Block) const block = evt.target.getComponent(Block)
this.onApplyBlock(block) this.onApplyBlock(block)
} }
onClickUndo(evt: Laya.Event): void { onClickUndo(evt: Laya.Event): void {
var undo = this.data.pop_undo() const undo = this.data.pop_undo()
if (undo) { if (undo) {
console.log("onClickUndo>>>>", JSON.stringify(undo)) console.log("onClickUndo>>>>", JSON.stringify(undo))
this.selectedBlock = this.blocks[undo.index] this.selectedBlock = this.blocks[undo.index]
this.onApplyBlock(this.selectedBlock) this.onApplyBlock(this.selectedBlock)
if (undo.notes && undo.notes.length > 0) { if (undo.notes && undo.notes.length > 0) {
this.selectedBlock.setNotes(undo.notes) this.selectedBlock.setNotes(undo.notes)
} } else {
else {
this.selectedBlock.setShowNumber(undo.show, 0) this.selectedBlock.setShowNumber(undo.show, 0)
} }
// this.onSetBlock(this.selectedBlock) // this.onSetBlock(this.selectedBlock)
this.onUpdateScore() this.onUpdateScore()
var undos = this.data.get_undos() const undos = this.data.get_undos()
if (undos.length > 0) { if (undos.length > 0) {
var last = undos[undos.length-1] const last = undos[undos.length - 1]
this.selectedBlock = this.blocks[last.index] this.selectedBlock = this.blocks[last.index]
this.onApplyBlock(this.selectedBlock) this.onApplyBlock(this.selectedBlock)
} }
@@ -337,8 +343,8 @@ export class Stage extends Laya.Script {
onClickErase(evt: Laya.Event): void { onClickErase(evt: Laya.Event): void {
if (this.selectedBlock.getData().get_checked() == false) { // 未完成且有数字或者笔记才可以使用橡皮 if (this.selectedBlock.getData().get_checked() == false) { // 未完成且有数字或者笔记才可以使用橡皮
var show = this.selectedBlock.getData().get_show() const show = this.selectedBlock.getData().get_show()
var notes = this.selectedBlock.getData().get_notes() const notes = this.selectedBlock.getData().get_notes()
if (show > 0 || notes.length > 0) { if (show > 0 || notes.length > 0) {
this.data.add_undo(this.selectedBlock.getData().get_index(), show, notes) this.data.add_undo(this.selectedBlock.getData().get_index(), show, notes)
this.selectedBlock.setShowNumber(0, 0) this.selectedBlock.setShowNumber(0, 0)
@@ -355,30 +361,29 @@ export class Stage extends Laya.Script {
this.btn_note_normal.visible = this.data.get_note_open() == false this.btn_note_normal.visible = this.data.get_note_open() == false
this.btn_note_checked.visible = this.data.get_note_open() this.btn_note_checked.visible = this.data.get_note_open()
this.label_note.color = this.data.get_note_open() ? "#1d5cdc" : "#545962" this.label_note.color = this.data.get_note_open() ? "#1d5cdc" : "#545962"
for (var i=0; i<this.candys.length; i++) { for (let i = 0; i < this.candys.length; i++) {
this.candys[i].setNoteStatus(this.data.get_note_open()) this.candys[i].setNoteStatus(this.data.get_note_open())
} }
} }
onClickHint(evt: Laya.Event): void { onClickHint(evt: Laya.Event): void {
var hint = this.data.get_hint() const hint = this.data.get_hint()
if (hint > 0) { if (hint > 0) {
if (this.selectedBlock.getData().get_checked() == false) { // 当前选中的格子没有完成 if (this.selectedBlock.getData().get_checked() == false) { // 当前选中的格子没有完成
var correct = this.selectedBlock.getData().get_correct() var correct = this.selectedBlock.getData().get_correct()
this.onApplyCandy(correct, true) this.onApplyCandy(correct, true)
this.data.set_hint(hint - 1) this.data.set_hint(hint - 1)
this.onUpdateHintStatus() this.onUpdateHintStatus()
} } else {
else { const list: Array<Block> = []
var list: Array<Block> = new Array() for (let i = 0; i < this.blocks.length; i++) {
for (var i=0; i<this.blocks.length; i++) {
var block = this.blocks[i] var block = this.blocks[i]
if (block.getData().get_checked() == false) if (block.getData().get_checked() == false)
list.push(block) list.push(block)
} }
if (list.length > 0) { if (list.length > 0) {
var random = Math.random() const random = Math.random()
var index = Math.round(random*list.length) let index = Math.round(random * list.length)
if (index >= list.length) if (index >= list.length)
index = list.length - 1 index = list.length - 1
var block = list[index] var block = list[index]
@@ -389,28 +394,27 @@ export class Stage extends Laya.Script {
this.onUpdateHintStatus() this.onUpdateHintStatus()
} }
} }
} } else {
else {
// 这里播放广告 现在每个广告每次点击+9 // 这里播放广告 现在每个广告每次点击+9
this.data.set_hint(9) this.data.set_hint(9)
this.onUpdateHintStatus() this.onUpdateHintStatus()
} }
} }
onUpdateHintStatus(): void { onUpdateHintStatus(): void {
var hint = this.data.get_hint() const hint = this.data.get_hint()
this.btn_hint_normal.visible = hint > 0 this.btn_hint_normal.visible = hint > 0
this.btn_hint_ad.visible = hint <= 0 this.btn_hint_ad.visible = hint <= 0
this.btn_hint_label.text = hint.toString() this.btn_hint_label.text = hint.toString()
} }
public onApplyCandy(showNumber: number, hint: boolean): void { public onApplyCandy(showNumber: number, hint: boolean): void {
var show = this.selectedBlock.getData().get_show() const show = this.selectedBlock.getData().get_show()
var notes = this.selectedBlock.getData().get_notes() const notes = this.selectedBlock.getData().get_notes()
if (this.selectedBlock.getData().get_checked() == false) { if (this.selectedBlock.getData().get_checked() == false) {
if (this.data.get_note_open() && hint == false) { if (this.data.get_note_open() && hint == false) {
var relateds = this.findRelatedBlocks(this.selectedBlock) const relateds = this.findRelatedBlocks(this.selectedBlock)
var find = false let find = false
for (var i = 0; i < relateds.length; i++) { for (var i = 0; i < relateds.length; i++) {
if (relateds[i].getData().get_show() == showNumber) { if (relateds[i].getData().get_show() == showNumber) {
find = true find = true
@@ -421,37 +425,34 @@ export class Stage extends Laya.Script {
this.data.add_undo(this.selectedBlock.getData().get_index(), show, notes) this.data.add_undo(this.selectedBlock.getData().get_index(), show, notes)
this.selectedBlock.addNoteNumber(showNumber) this.selectedBlock.addNoteNumber(showNumber)
this.onSetBlock(this.selectedBlock) this.onSetBlock(this.selectedBlock)
} } else {
else {
for (var i = 0; i < relateds.length; i++) { for (var i = 0; i < relateds.length; i++) {
var obj = relateds[i] const obj = relateds[i]
if (obj.getData().get_show() == showNumber && obj.getData().get_index() != this.selectedBlock.getData().get_index()) { if (obj.getData().get_show() == showNumber && obj.getData().get_index() != this.selectedBlock.getData().get_index()) {
obj.setFadeAnimation() obj.setFadeAnimation()
} }
} }
} }
} } else {
else {
this.data.add_undo(this.selectedBlock.getData().get_index(), show, notes) this.data.add_undo(this.selectedBlock.getData().get_index(), show, notes)
if (this.selectedBlock.getData().get_show() == showNumber) { if (this.selectedBlock.getData().get_show() == showNumber) {
this.selectedBlock.setShowNumber(0, 0); this.selectedBlock.setShowNumber(0, 0)
this.onSetBlock(this.selectedBlock) this.onSetBlock(this.selectedBlock)
} } else {
else { let blockScore = 0
var blockScore = 0
if (hint == false) { if (hint == false) {
var duration = this.data.get_duration() - this.data.get_last_hit_time() const duration = this.data.get_duration() - this.data.get_last_hit_time()
blockScore = Utility_CalculateScore(this.data.get_difficulty(), duration) blockScore = Utility_CalculateScore(this.data.get_difficulty(), duration)
} }
var b = this.selectedBlock.setShowNumber(showNumber, blockScore) const b = this.selectedBlock.setShowNumber(showNumber, blockScore)
this.onUpdateScore() this.onUpdateScore()
this.onSetBlock(this.selectedBlock, true) this.onSetBlock(this.selectedBlock, true)
if (b) { if (b) {
this.data.set_last_hit_time(this.data.get_duration()) this.data.set_last_hit_time(this.data.get_duration())
var user = StorageManager.getInstance().getUser() const user = StorageManager.getInstance().getUser()
var all = 0 let all = 0
var finished = 0 let finished = 0
var blocks = this.data.get_blocks() const blocks = this.data.get_blocks()
for (var i = 0; i < blocks.length; i++) { for (var i = 0; i < blocks.length; i++) {
if (blocks[i].get_preset() == false) { if (blocks[i].get_preset() == false) {
all++ all++
@@ -460,7 +461,7 @@ export class Stage extends Laya.Script {
} }
} }
} }
var progress = finished/all const progress = finished / all
user.update_stage_done(this.data.get_stageID(), progress)// 更新关卡完成进度 user.update_stage_done(this.data.get_stageID(), progress)// 更新关卡完成进度
if (this.getIsComplete()) { if (this.getIsComplete()) {
console.log("完成关卡", finished, all, progress) console.log("完成关卡", finished, all, progress)
@@ -468,15 +469,14 @@ export class Stage extends Laya.Script {
if (this.data.get_stageType() == config.STAGE_TYPE.MAIN) { // 主线关卡更新难度进度 if (this.data.get_stageType() == config.STAGE_TYPE.MAIN) { // 主线关卡更新难度进度
user.update_progress(this.data.get_difficulty(), this.data.get_stageIndex() + 1) user.update_progress(this.data.get_difficulty(), this.data.get_stageIndex() + 1)
UIManager.getInstance().loadGameDoneUI(true, this.data) UIManager.getInstance().loadGameDoneUI(true, this.data)
} } else if (this.data.get_stageType() == config.STAGE_TYPE.DC) { // dc
else if (this.data.get_stageType() == config.STAGE_TYPE.DC) {//dc
if (progress >= 1) { // 完成每日挑战关卡检查是否或者当月奖杯 if (progress >= 1) { // 完成每日挑战关卡检查是否或者当月奖杯
var now = new Date() const now = new Date()
var nowYear = now.getFullYear() const nowYear = now.getFullYear()
var nowMonth = now.getMonth() + 1 const nowMonth = now.getMonth() + 1
var doneCount = user.get_doneCountByDate(nowYear, nowMonth) const doneCount = user.get_doneCountByDate(nowYear, nowMonth)
var dayCount = 0 let dayCount = 0
var info = G_getMonthInfo(nowYear, nowMonth) const info = G_getMonthInfo(nowYear, nowMonth)
if (info) if (info)
dayCount = info.dayCount dayCount = info.dayCount
console.log("dc完成信息>>>>>>>>>>>>>>>", nowYear, nowMonth, doneCount, dayCount) console.log("dc完成信息>>>>>>>>>>>>>>>", nowYear, nowMonth, doneCount, dayCount)
@@ -487,8 +487,7 @@ export class Stage extends Laya.Script {
UIManager.getInstance().loadGameDoneUI(false, this.data) UIManager.getInstance().loadGameDoneUI(false, this.data)
} }
} }
} } else { // 失败
else {//失败
this.data.set_mistake(this.data.get_mistake() + 1) this.data.set_mistake(this.data.get_mistake() + 1)
this.onUpdateMistake() this.onUpdateMistake()
if (this.data.get_mistake() >= config.MISTAKE_MAX) { if (this.data.get_mistake() >= config.MISTAKE_MAX) {
@@ -504,43 +503,43 @@ export class Stage extends Laya.Script {
} }
public onClickCandy(evt: Laya.Event): void { public onClickCandy(evt: Laya.Event): void {
var candy = evt.target.getComponent(Candy); const candy = evt.target.getComponent(Candy)
this.onApplyCandy(candy.get_show(), false) this.onApplyCandy(candy.get_show(), false)
var sp = evt.target.getChildByName("Sprite") as Laya.Sprite const sp = evt.target.getChildByName("Sprite") as Laya.Sprite
Laya.Tween.to(sp, { scaleX: 0.9, scaleY: 0.9 }, 100, Laya.Ease.linearIn) Laya.Tween.to(sp, { scaleX: 0.9, scaleY: 0.9 }, 100, Laya.Ease.linearIn)
Laya.Tween.to(sp, { scaleX: 1, scaleY: 1 }, 100, Laya.Ease.linearInOut, null, 100) Laya.Tween.to(sp, { scaleX: 1, scaleY: 1 }, 100, Laya.Ease.linearInOut, null, 100)
} }
onKeyUp(evt: Laya.Event): void { onKeyUp(evt: Laya.Event): void {
var n = Number(evt.key) const n = Number(evt.key)
if (n && n > 0) { if (n && n > 0) {
this.onApplyCandy(n, false) this.onApplyCandy(n, false)
} }
} }
onUpdateCandys(): void { onUpdateCandys(): void {
var list: Map<number, number> = new Map() const list: Map<number, number> = new Map()
for (var i = 1; i <= 9; i++) for (var i = 1; i <= 9; i++)
list.set(i, 0) list.set(i, 0)
for (var i = 0; i < this.blocks.length; i++) { for (var i = 0; i < this.blocks.length; i++) {
var block = this.blocks[i] const block = this.blocks[i]
if (block.getData().get_checked() == false) { if (block.getData().get_checked() == false) {
var correct = block.getData().get_correct() const correct = block.getData().get_correct()
list.set(correct, list.get(correct) + 1) list.set(correct, list.get(correct) + 1)
} }
} }
for (var i = 0; i < this.candys.length; i++) { for (var i = 0; i < this.candys.length; i++) {
var candy = this.candys[i] const candy = this.candys[i]
var show = i+1 const show = i + 1
var left = list.get(show) const left = list.get(show)
candy.setCandy(show, left) candy.setCandy(show, left)
} }
} }
findRelatedBlocks(obj: Block): Array<Block> { findRelatedBlocks(obj: Block): Array<Block> {
var list: Array<Block> = new Array() const list: Array<Block> = []
for (var i=0; i<this.blocks.length; i++) { for (let i = 0; i < this.blocks.length; i++) {
var block = this.blocks[i] const block = this.blocks[i]
if (block.XIndex == obj.XIndex) if (block.XIndex == obj.XIndex)
list.push(block) list.push(block)
else if (block.YIndex == obj.YIndex) else if (block.YIndex == obj.YIndex)
@@ -552,9 +551,9 @@ export class Stage extends Laya.Script {
} }
findSameNumberBlocks(obj: Block): Array<Block> { findSameNumberBlocks(obj: Block): Array<Block> {
var list: Array<Block> = new Array() const list: Array<Block> = []
for (var i=0; i<this.blocks.length; i++) { for (let i = 0; i < this.blocks.length; i++) {
var block = this.blocks[i] const block = this.blocks[i]
if (block.getData().get_show() == obj.getData().get_show()) if (block.getData().get_show() == obj.getData().get_show())
list.push(block) list.push(block)
} }
@@ -562,26 +561,25 @@ export class Stage extends Laya.Script {
} }
findSameNoteBlocks(obj: Block): Array<Block> { findSameNoteBlocks(obj: Block): Array<Block> {
var list: Array<Block> = new Array() const list: Array<Block> = []
for (var i=0; i<this.blocks.length; i++) { for (let i = 0; i < this.blocks.length; i++) {
var block = this.blocks[i] const block = this.blocks[i]
var note_numbers = block.getData().get_notes() const note_numbers = block.getData().get_notes()
if (note_numbers.indexOf(obj.getData().get_show()) >= 0) if (note_numbers.includes(obj.getData().get_show()))
list.push(block) list.push(block)
} }
return list return list
} }
getIsComplete(): boolean { getIsComplete(): boolean {
var b = true; let b = true
for (var i=1; i<this.blocks.length; i++) { for (let i = 1; i < this.blocks.length; i++) {
var block = this.blocks[i]; const block = this.blocks[i]
if (block.getData().get_checked() == false) { if (block.getData().get_checked() == false) {
b = false; b = false
break break
} }
} }
return b return b
} }
} }

View File

@@ -1,26 +1,30 @@
import { config } from "../constants/config"; import { config } from "../constants/config"
import { StorageManager } from "../models/StorageManager"; import { StorageManager } from "../models/StorageManager"
import { UIManager } from "../models/UIManager"; import { UIManager } from "../models/UIManager"
import { CommonData } from "./common/CommonData"; import { CommonData } from "./common/CommonData"
import { G_ShowCommonTips } from "./CommonTips"; import { G_ShowCommonTips } from "./CommonTips"
const { regClass, property } = Laya; const { regClass, property } = Laya
@regClass() @regClass()
export class TopBar extends Laya.Script { export class TopBar extends Laya.Script {
declare owner : Laya.Box; declare owner: Laya.Box
@property(Laya.Box) @property(Laya.Box)
public btn_classic: Laya.Box public btn_classic: Laya.Box
@property(Laya.Sprite) @property(Laya.Sprite)
public sprite_classic: Laya.Sprite public sprite_classic: Laya.Sprite
@property(Laya.Label) @property(Laya.Label)
public label_classic: Laya.Label public label_classic: Laya.Label
@property(Laya.Box) @property(Laya.Box)
public btn_dc: Laya.Box public btn_dc: Laya.Box
@property(Laya.Sprite) @property(Laya.Sprite)
public sprite_dc: Laya.Sprite public sprite_dc: Laya.Sprite
@property(Laya.Label) @property(Laya.Label)
public label_dc: Laya.Label public label_dc: Laya.Label
@@ -28,30 +32,29 @@ export class TopBar extends Laya.Script {
@property(Laya.Label) @property(Laya.Label)
public obj_label: Laya.Label public obj_label: Laya.Label
@property(Laya.Box) @property(Laya.Box)
public obj_items: Laya.Box public obj_items: Laya.Box
private items: Map<string, Laya.Label> = new Map() private items: Map<string, Laya.Label> = new Map()
onStart(): void { onStart(): void {
// 如果是第一次以横屏启动游戏需要创建经典关卡 // 如果是第一次以横屏启动游戏需要创建经典关卡
var difficulty = Laya.LocalStorage.getItem("difficulty")//读取用户上次选择的难度 let difficulty = Laya.LocalStorage.getItem("difficulty")// 读取用户上次选择的难度
if (!difficulty || difficulty.length <= 0) { if (!difficulty || difficulty.length <= 0) {
difficulty = config.DIFFICULTY_TYPE.Easy difficulty = config.DIFFICULTY_TYPE.Easy
Laya.LocalStorage.setItem("difficulty", difficulty) Laya.LocalStorage.setItem("difficulty", difficulty)
} }
var doStage = StorageManager.getInstance().getStage(config.DEFAULT_STAGE_ID) const doStage = StorageManager.getInstance().getStage(config.DEFAULT_STAGE_ID)
if (!doStage) { if (!doStage) {
StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, difficulty, difficulty) StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, difficulty, difficulty)
} } else {
else { const user = StorageManager.getInstance().getUser()
var user = StorageManager.getInstance().getUser()
if (user.get_done(config.DEFAULT_STAGE_ID) >= 1) { if (user.get_done(config.DEFAULT_STAGE_ID) >= 1) {
console.log("当前主线关卡完成") console.log("当前主线关卡完成")
user.update_progress(doStage.get_difficulty(), doStage.get_stageIndex() + 1)// 主线关卡更新难度进度 user.update_progress(doStage.get_difficulty(), doStage.get_stageIndex() + 1)// 主线关卡更新难度进度
StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, difficulty, difficulty) StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, difficulty, difficulty)
} } else if (doStage.get_mistake() >= config.MISTAKE_MAX) { // 上次失败了则重新开始
else if (doStage.get_mistake() >= config.MISTAKE_MAX) {//上次失败了则重新开始
StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, difficulty, difficulty) StorageManager.getInstance().newStage(config.DEFAULT_STAGE_ID, config.STAGE_TYPE.MAIN, difficulty, difficulty)
} }
} }
@@ -68,27 +71,26 @@ export class TopBar extends Laya.Script {
}) })
this.onClickTab(this.isClassic) this.onClickTab(this.isClassic)
const showToggle = Laya.LocalStorage.getItem("showToggle")
var showToggle = Laya.LocalStorage.getItem("showToggle")
if (!showToggle || showToggle.length <= 0) { if (!showToggle || showToggle.length <= 0) {
Laya.LocalStorage.setItem("showToggle", "true") Laya.LocalStorage.setItem("showToggle", "true")
} }
for (var i=0; i<this.obj_items.numChildren; i++) { for (let i = 0; i < this.obj_items.numChildren; i++) {
var obj = this.obj_items.getChildAt(i) const obj = this.obj_items.getChildAt(i)
var value = config.DIFFICULTY_LIST[i] const value = config.DIFFICULTY_LIST[i]
var label = obj.getChildByName("Label") as Laya.Label const label = obj.getChildByName("Label") as Laya.Label
label.text = value label.text = value
this.items.set(value, label) this.items.set(value, label)
var common = obj.getComponent(CommonData) const common = obj.getComponent(CommonData)
common.strValue = value common.strValue = value
obj.on(Laya.Event.CLICK, this, (evt: Laya.Event) => { obj.on(Laya.Event.CLICK, this, (evt: Laya.Event) => {
var common = evt.target.getComponent(CommonData) const common = evt.target.getComponent(CommonData)
var difficulty = Laya.LocalStorage.getItem("difficulty") const difficulty = Laya.LocalStorage.getItem("difficulty")
if (common.strValue != difficulty) { if (common.strValue != difficulty) {
if (Laya.LocalStorage.getItem("showToggle") == "true") { if (Laya.LocalStorage.getItem("showToggle") == "true") {
var title = "Start New Game" const title = "Start New Game"
var content = "Current game progress will be lost" const content = "Current game progress will be lost"
G_ShowCommonTips(title, content, true, (ok: boolean, toggleValue: boolean) => { G_ShowCommonTips(title, content, true, (ok: boolean, toggleValue: boolean) => {
if (ok) { if (ok) {
if (toggleValue) { if (toggleValue) {
@@ -97,15 +99,13 @@ export class TopBar extends Laya.Script {
this.onClickDifficulty(common.strValue) this.onClickDifficulty(common.strValue)
} }
}) })
} } else {
else {
this.onClickDifficulty(common.strValue) this.onClickDifficulty(common.strValue)
} }
} }
}) })
} }
this.updateDifficulty(difficulty) this.updateDifficulty(difficulty)
} }
onClickTab(isClassic: boolean): void { onClickTab(isClassic: boolean): void {
@@ -114,8 +114,7 @@ export class TopBar extends Laya.Script {
UIManager.getInstance().closeTrophyUI() UIManager.getInstance().closeTrophyUI()
UIManager.getInstance().closeDCUI() UIManager.getInstance().closeDCUI()
UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID) UIManager.getInstance().loadStageUI(config.DEFAULT_STAGE_ID)
} } else {
else {
UIManager.getInstance().closeStageUI() UIManager.getInstance().closeStageUI()
UIManager.getInstance().loadDCUI() UIManager.getInstance().loadDCUI()
} }
@@ -144,7 +143,7 @@ export class TopBar extends Laya.Script {
this.items.forEach((label: Laya.Label, key: string) => { this.items.forEach((label: Laya.Label, key: string) => {
label.color = "#0e2a53" label.color = "#0e2a53"
}) })
var label = this.items.get(difficulty) const label = this.items.get(difficulty)
label.color = "#1d5cdc" label.color = "#1d5cdc"
} }
} }

View File

@@ -1,11 +1,11 @@
const { regClass, property } = Laya; const { regClass, property } = Laya
@regClass() @regClass()
export class AutoDestroy extends Laya.Script { export class AutoDestroy extends Laya.Script {
declare owner : Laya.Box; declare owner: Laya.Box
@property(Number) @property(Number)
public lifeTime: number = 1; public lifeTime: number = 1
// 组件被激活后执行,此时所有节点和组件均已创建完毕,此方法只执行一次 // 组件被激活后执行,此时所有节点和组件均已创建完毕,此方法只执行一次
onStart(): void { onStart(): void {

View File

@@ -1,13 +1,12 @@
const { regClass, property } = Laya; const { regClass, property } = Laya
@regClass() @regClass()
export class CommonData extends Laya.Script { export class CommonData extends Laya.Script {
declare owner : Laya.Box; declare owner: Laya.Box
@property(Number) @property(Number)
public intValue: number = 0; public intValue: number = 0
@property(String) @property(String)
public strValue: string = ""; public strValue: string = ""
} }

View File

@@ -3,8 +3,8 @@ import { ScoreAdd } from "../ScoreAdd"
export function G_ShowScoreTips(text: string, parent: any): void { export function G_ShowScoreTips(text: string, parent: any): void {
Laya.loader.load(respath.score_add_ui_res()).then((go) => { Laya.loader.load(respath.score_add_ui_res()).then((go) => {
var prefab = go.create() const prefab = go.create()
var score = parent.addChild(prefab).getComponent(ScoreAdd) const score = parent.addChild(prefab).getComponent(ScoreAdd)
score.onSetText(text) score.onSetText(text)
}) })
} }

View File

@@ -1,43 +1,48 @@
import { config } from "../../constants/config"; import { config } from "../../constants/config"
const { regClass, property } = Laya; const { regClass, property } = Laya
@regClass() @regClass()
export class CalendarUnit extends Laya.Script { export class CalendarUnit extends Laya.Script {
declare owner : Laya.Box; declare owner: Laya.Box
@property(Number) @property(Number)
public year: number = 0; public year: number = 0
@property(Number) @property(Number)
public month: number = 0; public month: number = 0
@property(Number) @property(Number)
public day: number = 0; public day: number = 0
@property(Boolean) @property(Boolean)
public open: boolean = false; public open: boolean = false
@property(Number) @property(Number)
public progress: number = 0; public progress: number = 0
private selected: boolean = false private selected: boolean = false
@property(Laya.Sprite) @property(Laya.Sprite)
public obj_selected: Laya.Sprite; public obj_selected: Laya.Sprite
@property(Laya.Box) @property(Laya.Box)
public obj_pie: Laya.Box; public obj_pie: Laya.Box
@property(Laya.Sprite)
public sprite_pie: Laya.Sprite;
@property(Laya.Sprite) @property(Laya.Sprite)
public obj_mask: Laya.Sprite; public sprite_pie: Laya.Sprite
@property(Laya.Sprite) @property(Laya.Sprite)
public sprite_mask: Laya.Sprite; public obj_mask: Laya.Sprite
@property(Laya.Sprite)
public sprite_mask: Laya.Sprite
@property(Laya.Image) @property(Laya.Image)
public obj_star: Laya.Image; public obj_star: Laya.Image
@property(Laya.Label) @property(Laya.Label)
public label_show: Laya.Label; public label_show: Laya.Label
// 组件被激活后执行,此时所有节点和组件均已创建完毕,此方法只执行一次 // 组件被激活后执行,此时所有节点和组件均已创建完毕,此方法只执行一次
onAwake(): void { onAwake(): void {
@@ -58,15 +63,13 @@ export class CalendarUnit extends Laya.Script {
if (open) { if (open) {
if (progress >= 1) { if (progress >= 1) {
this.label_show.text = "" this.label_show.text = ""
} } else {
else {
this.label_show.text = this.day.toString() this.label_show.text = this.day.toString()
} }
this.label_show.color = "#2d3138" this.label_show.color = "#2d3138"
this.owner.on(Laya.Event.CLICK, handler, func) this.owner.on(Laya.Event.CLICK, handler, func)
this.updateUnit() this.updateUnit()
} } else {
else {
this.label_show.text = this.day.toString() this.label_show.text = this.day.toString()
this.label_show.color = "#d3d5db" this.label_show.color = "#d3d5db"
this.owner.on(Laya.Event.CLICK, this, (evt: Laya.Event) => { this.owner.on(Laya.Event.CLICK, this, (evt: Laya.Event) => {
@@ -91,7 +94,7 @@ export class CalendarUnit extends Laya.Script {
this.obj_star.visible = this.progress >= 1 this.obj_star.visible = this.progress >= 1
var blockSize = 48 let blockSize = 48
if (config.H_SCREEN) if (config.H_SCREEN)
blockSize = 33 blockSize = 33
@@ -105,13 +108,11 @@ export class CalendarUnit extends Laya.Script {
this.sprite_pie.graphics.drawPie(blockSize, blockSize, blockSize, 0, 360 * this.progress, "#ffffff") this.sprite_pie.graphics.drawPie(blockSize, blockSize, blockSize, 0, 360 * this.progress, "#ffffff")
this.sprite_mask.graphics.clear() this.sprite_mask.graphics.clear()
this.sprite_mask.graphics.drawCircle(0.5, 0.5, 0.5, "#1d5cdc") this.sprite_mask.graphics.drawCircle(0.5, 0.5, 0.5, "#1d5cdc")
} } else {
else {
this.obj_pie.visible = false this.obj_pie.visible = false
this.obj_mask.visible = false this.obj_mask.visible = false
} }
} } else {
else {
this.label_show.color = "#2d3138" this.label_show.color = "#2d3138"
this.obj_selected.visible = false this.obj_selected.visible = false
if (this.progress > 0 && this.progress < 1) { if (this.progress > 0 && this.progress < 1) {
@@ -121,8 +122,7 @@ export class CalendarUnit extends Laya.Script {
this.sprite_pie.graphics.drawPie(blockSize, blockSize, blockSize, 0, 360 * this.progress, "#2d3138") this.sprite_pie.graphics.drawPie(blockSize, blockSize, blockSize, 0, 360 * this.progress, "#2d3138")
this.sprite_mask.graphics.clear() this.sprite_mask.graphics.clear()
this.sprite_mask.graphics.drawCircle(0.5, 0.5, 0.5, "#ffffff") this.sprite_mask.graphics.drawCircle(0.5, 0.5, 0.5, "#ffffff")
} } else {
else {
this.obj_pie.visible = false this.obj_pie.visible = false
this.obj_mask.visible = false this.obj_mask.visible = false
} }

View File

@@ -1,64 +1,80 @@
import { config } from "../../constants/config"; import { config } from "../../constants/config"
import { Utility_ConvertSecondToString } from "../../utils/utility"; import { respath } from "../../constants/respath"
import { StorageManager } from "../../models/StorageManager"; import { MONTH_LIST } from "../../models/DCManager"
import { CalendarUnit } from "./CalendarUnit"; import { EVENT_TYPES, EventManager } from "../../models/EventManager"
import { UIManager } from "../../models/UIManager"; import { StorageManager } from "../../models/StorageManager"
import { respath } from "../../constants/respath"; import { UIManager } from "../../models/UIManager"
import { MONTH_LIST } from "../../models/DCManager"; import { Utility_ConvertSecondToString } from "../../utils/utility"
import { EVENT_TYPES, EventManager } from "../../models/EventManager"; import { CalendarUnit } from "./CalendarUnit"
const { regClass, property } = Laya
const { regClass, property } = Laya;
@regClass() @regClass()
export class DailyChallenge extends Laya.Script { export class DailyChallenge extends Laya.Script {
declare owner : Laya.Box; declare owner: Laya.Box
@property(Laya.Button) @property(Laya.Button)
public btn_back: Laya.Button public btn_back: Laya.Button
@property(Laya.Image) @property(Laya.Image)
public btn_trophy: Laya.Image public btn_trophy: Laya.Image
@property(Laya.Sprite) @property(Laya.Sprite)
public btn_trophy_red: Laya.Sprite public btn_trophy_red: Laya.Sprite
@property(Laya.Image) @property(Laya.Image)
public trophy_light: Laya.Image public trophy_light: Laya.Image
@property(Laya.Image) @property(Laya.Image)
public trophy_icon: Laya.Image public trophy_icon: Laya.Image
@property(Laya.Box) @property(Laya.Box)
public btn_left: Laya.Box public btn_left: Laya.Box
@property(Laya.Box) @property(Laya.Box)
public btn_right: Laya.Box public btn_right: Laya.Box
@property(Laya.Image) @property(Laya.Image)
public bg_dc: Laya.Image; public bg_dc: Laya.Image
@property(Laya.Label) @property(Laya.Label)
public label_year: Laya.Label; public label_year: Laya.Label
@property(Laya.Label) @property(Laya.Label)
public label_month: Laya.Label; public label_month: Laya.Label
@property(Laya.Label) @property(Laya.Label)
public label_star: Laya.Label; public label_star: Laya.Label
@property(Laya.Box) @property(Laya.Box)
public btn_play: Laya.Box public btn_play: Laya.Box
@property(Laya.Label) @property(Laya.Label)
public label_play: Laya.Label public label_play: Laya.Label
@property(Laya.Box) @property(Laya.Box)
public obj_summary: Laya.Box public obj_summary: Laya.Box
@property(Laya.Label) @property(Laya.Label)
public label_date: Laya.Label; public label_date: Laya.Label
@property(Laya.Label) @property(Laya.Label)
public label_diffucuty: Laya.Label public label_diffucuty: Laya.Label
@property(Laya.Label) @property(Laya.Label)
public label_score: Laya.Label public label_score: Laya.Label
@property(Laya.Label) @property(Laya.Label)
public label_time: Laya.Label public label_time: Laya.Label
@property(Laya.Box) @property(Laya.Box)
public obj_items: Laya.Box; public obj_items: Laya.Box
@property(Laya.Box)
public obj_labels: Laya.Box;
private units: Array<CalendarUnit> = new Array();
private selectedUnit: CalendarUnit; @property(Laya.Box)
public obj_labels: Laya.Box
private units: Array<CalendarUnit> = []
private selectedUnit: CalendarUnit
private currentIndex: number private currentIndex: number
private indexMax: number private indexMax: number
@@ -73,7 +89,7 @@ export class DailyChallenge extends Laya.Script {
}) })
} }
var user = StorageManager.getInstance().getUser() const user = StorageManager.getInstance().getUser()
this.btn_trophy_red.visible = user.get_trophyHasUnread() this.btn_trophy_red.visible = user.get_trophyHasUnread()
this.btn_trophy.on(Laya.Event.CLICK, this, () => { this.btn_trophy.on(Laya.Event.CLICK, this, () => {
user.set_trophyAllread() user.set_trophyAllread()
@@ -83,40 +99,40 @@ export class DailyChallenge extends Laya.Script {
this.btn_play.on(Laya.Event.CLICK, this, (evt: Laya.Event) => { this.btn_play.on(Laya.Event.CLICK, this, (evt: Laya.Event) => {
// console.log(">>>>>>>>>>>>>>>>>>>>>>>", this.selectedUnit.day) // console.log(">>>>>>>>>>>>>>>>>>>>>>>", this.selectedUnit.day)
var now = new Date() const now = new Date()
var year = now.getFullYear() const year = now.getFullYear()
var month = now.getMonth() + 1 const month = now.getMonth() + 1
var dayNow = this.selectedUnit.day const dayNow = this.selectedUnit.day
var stageID = `${year}-${month}-${dayNow}` const stageID = `${year}-${month}-${dayNow}`
var doStage = StorageManager.getInstance().getStage(stageID) const doStage = StorageManager.getInstance().getStage(stageID)
console.log("play >>>>>>>>>>>>>>>>>>>>>>>", stageID, doStage) console.log("play >>>>>>>>>>>>>>>>>>>>>>>", stageID, doStage)
if (!doStage || doStage.get_mistake() >= config.MISTAKE_MAX) { if (!doStage || doStage.get_mistake() >= config.MISTAKE_MAX) {
var stageName = `${config.MONTH_ABBRS[month-1]} ${dayNow}` const stageName = `${config.MONTH_ABBRS[month - 1]} ${dayNow}`
StorageManager.getInstance().newStage(stageID, config.STAGE_TYPE.DC, stageName) StorageManager.getInstance().newStage(stageID, config.STAGE_TYPE.DC, stageName)
} }
UIManager.getInstance().loadStageUI(stageID); UIManager.getInstance().loadStageUI(stageID)
this.owner.destroy() this.owner.destroy()
}) })
for (var i = 0; i < this.obj_items.numChildren; i++) { for (var i = 0; i < this.obj_items.numChildren; i++) {
var hbox = this.obj_items.getChildAt(i) const hbox = this.obj_items.getChildAt(i)
var l_hbox = this.obj_labels.getChildAt(i) const l_hbox = this.obj_labels.getChildAt(i)
for (var j=0; j<hbox.numChildren; j++) { for (let j = 0; j < hbox.numChildren; j++) {
var unit = hbox.getChildAt(j).getComponent(CalendarUnit) const unit = hbox.getChildAt(j).getComponent(CalendarUnit)
var l_obj = l_hbox.getChildAt(j) as Laya.Label const l_obj = l_hbox.getChildAt(j) as Laya.Label
this.units.push(unit) this.units.push(unit)
unit.onInit(l_obj) unit.onInit(l_obj)
} }
} }
this.indexMax = MONTH_LIST.length - 1 this.indexMax = MONTH_LIST.length - 1
var now = new Date() const now = new Date()
var nowYear = now.getFullYear() const nowYear = now.getFullYear()
var nowMonth = now.getMonth() + 1 const nowMonth = now.getMonth() + 1
for (var i = 0; i < MONTH_LIST.length; i++) { for (var i = 0; i < MONTH_LIST.length; i++) {
var obj = MONTH_LIST[i] const obj = MONTH_LIST[i]
if (nowYear == obj.year && nowMonth == obj.month) { if (nowYear == obj.year && nowMonth == obj.month) {
this.indexMax = i; this.indexMax = i
break break
} }
} }
@@ -147,14 +163,14 @@ export class DailyChallenge extends Laya.Script {
} }
loadWithMonth(): void { loadWithMonth(): void {
var now = new Date() const now = new Date()
var nowYear = now.getFullYear() const nowYear = now.getFullYear()
var nowMonth = now.getMonth() + 1 const nowMonth = now.getMonth() + 1
this.currentIndex = 0 this.currentIndex = 0
for (var i=0; i<MONTH_LIST.length; i++) { for (let i = 0; i < MONTH_LIST.length; i++) {
var obj = MONTH_LIST[i] const obj = MONTH_LIST[i]
if (nowYear == obj.year && nowMonth == obj.month) { if (nowYear == obj.year && nowMonth == obj.month) {
this.currentIndex = i; this.currentIndex = i
break break
} }
} }
@@ -165,21 +181,20 @@ export class DailyChallenge extends Laya.Script {
public loadWithIndex(index: number): void { public loadWithIndex(index: number): void {
this.btn_left.visible = this.currentIndex > 0 this.btn_left.visible = this.currentIndex > 0
this.btn_right.visible = this.currentIndex < this.indexMax this.btn_right.visible = this.currentIndex < this.indexMax
var info = MONTH_LIST[index] const info = MONTH_LIST[index]
var user = StorageManager.getInstance().getUser() const user = StorageManager.getInstance().getUser()
var now = new Date() const now = new Date()
var nowYear = now.getFullYear() const nowYear = now.getFullYear()
var nowMonth = now.getMonth() + 1 const nowMonth = now.getMonth() + 1
var nowDay = new Date().getDate() const nowDay = new Date().getDate()
this.trophy_icon.skin = info.icon_res this.trophy_icon.skin = info.icon_res
// 设置背景 // 设置背景
var starCount = user.get_doneCountByDate(info.year, info.month) const starCount = user.get_doneCountByDate(info.year, info.month)
if (starCount >= info.dayCount) { if (starCount >= info.dayCount) {
this.bg_dc.skin = respath.dc_top_bg_month_finish this.bg_dc.skin = respath.dc_top_bg_month_finish
this.trophy_light.visible = true this.trophy_light.visible = true
} } else {
else {
this.bg_dc.skin = respath.dc_top_bg_normal this.bg_dc.skin = respath.dc_top_bg_normal
this.trophy_light.visible = false this.trophy_light.visible = false
} }
@@ -188,30 +203,28 @@ export class DailyChallenge extends Laya.Script {
this.label_star.text = `${starCount}/${info.dayCount}` this.label_star.text = `${starCount}/${info.dayCount}`
this.selectedUnit = null this.selectedUnit = null
var day = 1 let day = 1
for (var i=0; i<this.units.length; i++) { for (let i = 0; i < this.units.length; i++) {
var unit = this.units[i] const unit = this.units[i]
if (i >= info.begin && i < info.begin + info.dayCount) { if (i >= info.begin && i < info.begin + info.dayCount) {
unit.owner.visible = true unit.owner.visible = true
unit.label_show.visible = true unit.label_show.visible = true
var open = true let open = true
if (info.year > nowYear) { if (info.year > nowYear) {
open = false open = false
} } else if (info.year == nowYear) {
else if (info.year == nowYear) {
if (info.month > nowMonth) { if (info.month > nowMonth) {
open = false open = false
} } else if (info.month == nowMonth) {
else if (info.month == nowMonth) {
if (day > nowDay) { if (day > nowDay) {
open = false open = false
} }
} }
} }
var stageID = `${info.year}-${info.month}-${day}` const stageID = `${info.year}-${info.month}-${day}`
var progress = user.get_done(stageID) let progress = user.get_done(stageID)
if (open && progress < 1) { // 检查失败的关卡,如果失败了就重置 if (open && progress < 1) { // 检查失败的关卡,如果失败了就重置
var doStage = StorageManager.getInstance().getStage(stageID) const doStage = StorageManager.getInstance().getStage(stageID)
if (doStage) { // 有关卡数据 if (doStage) { // 有关卡数据
if (doStage.get_mistake() >= config.MISTAKE_MAX) { if (doStage.get_mistake() >= config.MISTAKE_MAX) {
progress = 0 progress = 0
@@ -225,8 +238,7 @@ export class DailyChallenge extends Laya.Script {
this.selectedUnit = unit this.selectedUnit = unit
} }
day++ day++
} } else {
else {
unit.owner.visible = false unit.owner.visible = false
unit.label_show.visible = false unit.label_show.visible = false
} }
@@ -241,10 +253,10 @@ export class DailyChallenge extends Laya.Script {
this.selectedUnit = unit this.selectedUnit = unit
this.selectedUnit.setSelected(true) this.selectedUnit.setSelected(true)
var stageID = `${unit.year}-${unit.month}-${unit.day}` const stageID = `${unit.year}-${unit.month}-${unit.day}`
this.label_date.text = `${config.MONTH_ABBRS[unit.month - 1]} ${unit.day},${unit.year}` this.label_date.text = `${config.MONTH_ABBRS[unit.month - 1]} ${unit.day},${unit.year}`
var user = StorageManager.getInstance().getUser() const user = StorageManager.getInstance().getUser()
var progress = user.get_done(stageID) const progress = user.get_done(stageID)
// console.log("onApplyUnit >>>>>", stageID, progress) // console.log("onApplyUnit >>>>>", stageID, progress)
if (progress >= 1) { if (progress >= 1) {
this.btn_play.visible = false this.btn_play.visible = false
@@ -253,27 +265,26 @@ export class DailyChallenge extends Laya.Script {
this.label_diffucuty.text = doStage.get_difficulty() this.label_diffucuty.text = doStage.get_difficulty()
this.label_score.text = doStage.get_score().toString() this.label_score.text = doStage.get_score().toString()
this.label_time.text = Utility_ConvertSecondToString(doStage.get_duration()) this.label_time.text = Utility_ConvertSecondToString(doStage.get_duration())
} } else {
else {
this.btn_play.visible = true this.btn_play.visible = true
this.obj_summary.visible = false this.obj_summary.visible = false
var doStage = StorageManager.getInstance().getStage(stageID) var doStage = StorageManager.getInstance().getStage(stageID)
if (doStage) { if (doStage) {
this.label_play.text = "Continue" this.label_play.text = "Continue"
} } else {
else {
this.label_play.text = "Play" this.label_play.text = "Play"
} }
} }
} }
public onClickUnit(evt: Laya.Event): void { public onClickUnit(evt: Laya.Event): void {
var unit = evt.target.getComponent(CalendarUnit) const unit = evt.target.getComponent(CalendarUnit)
this.onApplyUnit(unit) this.onApplyUnit(unit)
} }
onStart(): void { onStart(): void {
var user = StorageManager.getInstance().getUser() const user = StorageManager.getInstance().getUser()
var find = user.get_trophyHasNew() const find = user.get_trophyHasNew()
if (find) { if (find) {
UIManager.getInstance().loadTrophyClaimUI(find) UIManager.getInstance().loadTrophyClaimUI(find)
user.set_trophyNew(find, false) user.set_trophyNew(find, false)

View File

@@ -1,12 +1,12 @@
import { config } from "../../constants/config"; import type { TrophyRecord } from "../../types/global"
import { MONTH_LIST } from "../../models/DCManager"; import { config } from "../../constants/config"
import { TrophyRecord } from "../../types/global"; import { MONTH_LIST } from "../../models/DCManager"
const { regClass, property } = Laya; const { regClass, property } = Laya
@regClass() @regClass()
export class TrophyClaim extends Laya.Script { export class TrophyClaim extends Laya.Script {
declare owner : Laya.Box; declare owner: Laya.Box
@property(Laya.Image) @property(Laya.Image)
public icon: Laya.Image public icon: Laya.Image
@@ -18,8 +18,8 @@ export class TrophyClaim extends Laya.Script {
public btn_close: Laya.Box public btn_close: Laya.Box
public onSetShow(record: TrophyRecord): void { public onSetShow(record: TrophyRecord): void {
for (var i=0; i<MONTH_LIST.length; i++) { for (let i = 0; i < MONTH_LIST.length; i++) {
var obj = MONTH_LIST[i] const obj = MONTH_LIST[i]
if (obj.year == record.year && obj.month == record.month) { if (obj.year == record.year && obj.month == record.month) {
this.icon.skin = obj.icon_res this.icon.skin = obj.icon_res
break break
@@ -32,5 +32,4 @@ export class TrophyClaim extends Laya.Script {
this.owner.destroy() this.owner.destroy()
}) })
} }
} }

View File

@@ -1,30 +1,25 @@
import { config } from "../../constants/config"
import { respath } from "../../constants/respath"
import { MONTH_LIST } from "../../models/DCManager"
import { EVENT_TYPES, EventManager } from "../../models/EventManager"
import { UIManager } from "../../models/UIManager"
import { TrophyUnit } from "./TrophyUnit"
const { regClass, property } = Laya
import { config } from "../../constants/config";
import { respath } from "../../constants/respath";
import { MONTH_LIST } from "../../models/DCManager";
import { EVENT_TYPES, EventManager } from "../../models/EventManager";
import { UIManager } from "../../models/UIManager";
import { TrophyUnit } from "./TrophyUnit";
const { regClass, property } = Laya;
@regClass() @regClass()
export class TrophyRoom extends Laya.Script { export class TrophyRoom extends Laya.Script {
declare owner : Laya.Box; declare owner: Laya.Box
@property(Laya.Box) @property(Laya.Box)
public btn_back: Laya.Box; public btn_back: Laya.Box
@property(Laya.Box) @property(Laya.Box)
public obj_items: Laya.Box; public obj_items: Laya.Box
// 第一次执行update之前执行只会执行一次 // 第一次执行update之前执行只会执行一次
onStart(): void { onStart(): void {
let trophyCountOfCell = 3
var trophyCountOfCell = 3
if (config.H_SCREEN) if (config.H_SCREEN)
trophyCountOfCell = 5 trophyCountOfCell = 5
@@ -32,10 +27,10 @@ export class TrophyRoom extends Laya.Script {
UIManager.getInstance().closeTrophyUI() UIManager.getInstance().closeTrophyUI()
}) })
var infos: Array<any> = new Array() const infos: Array<any> = []
var now = new Date() const now = new Date()
var nowYear = now.getFullYear() const nowYear = now.getFullYear()
var nowMonth = now.getMonth() + 1 const nowMonth = now.getMonth() + 1
for (var i = 0; i < MONTH_LIST.length; i++) { for (var i = 0; i < MONTH_LIST.length; i++) {
var obj = MONTH_LIST[i] var obj = MONTH_LIST[i]
infos.push(obj) infos.push(obj)
@@ -45,58 +40,57 @@ export class TrophyRoom extends Laya.Script {
} }
infos.reverse() infos.reverse()
var years: Array<number> = new Array() const years: Array<number> = []
var monthMap: Map<number, Array<any>> = new Map() const monthMap: Map<number, Array<any>> = new Map()
for (var i = 0; i < infos.length; i++) { for (var i = 0; i < infos.length; i++) {
obj = infos[i] obj = infos[i]
if (years.indexOf(obj.year) < 0) { if (!years.includes(obj.year)) {
years.push(obj.year) years.push(obj.year)
} }
if (monthMap.has(obj.year) == false) { if (monthMap.has(obj.year) == false) {
monthMap.set(obj.year, new Array()) monthMap.set(obj.year, [])
} }
var list = monthMap.get(obj.year) const list = monthMap.get(obj.year)
list.push(obj) list.push(obj)
} }
console.log(">>>>>>>>>>>>years=", years) console.log(">>>>>>>>>>>>years=", years)
Laya.loader.load(respath.trophy_year_ui_res()).then((go) => { Laya.loader.load(respath.trophy_year_ui_res()).then((go) => {
for (var i=1; i<years.length; i++) { for (let i = 1; i < years.length; i++) {
var obj_year = this.obj_items.getChildAt(i) const obj_year = this.obj_items.getChildAt(i)
if (!obj_year) { if (!obj_year) {
var prefab = go.create() const prefab = go.create()
this.obj_items.addChild(prefab) this.obj_items.addChild(prefab)
} }
} }
Laya.loader.load(respath.trophy_cell_ui_res()).then((go) => { Laya.loader.load(respath.trophy_cell_ui_res()).then((go) => {
var itemsHeight = 0 let itemsHeight = 0
for (var i=0; i<years.length; i++) { for (let i = 0; i < years.length; i++) {
var list = monthMap.get(years[i]) const list = monthMap.get(years[i])
var cellCount = Math.ceil(list.length/trophyCountOfCell) const cellCount = Math.ceil(list.length / trophyCountOfCell)
var yearHeight = 120 + cellCount * 444 const yearHeight = 120 + cellCount * 444
itemsHeight += yearHeight itemsHeight += yearHeight
var obj_year = this.obj_items.getChildAt(i) as Laya.Box const obj_year = this.obj_items.getChildAt(i) as Laya.Box
obj_year.height = yearHeight obj_year.height = yearHeight
var label = obj_year.getChildByName("year").getChildByName("Label") as Laya.Label const label = obj_year.getChildByName("year").getChildByName("Label") as Laya.Label
label.text = years[i].toString() label.text = years[i].toString()
var index = -1 let index = -1
for (var j=1; j<cellCount+1; j++) { for (let j = 1; j < cellCount + 1; j++) {
var obj_cell = obj_year.getChildAt(j) let obj_cell = obj_year.getChildAt(j)
if (!obj_cell) { if (!obj_cell) {
var prefab = go.create() const prefab = go.create()
obj_cell = obj_year.addChild(prefab) obj_cell = obj_year.addChild(prefab)
} }
var hbox = obj_cell.getChildByName("HBox") const hbox = obj_cell.getChildByName("HBox")
for (var k=0; k<hbox.numChildren; k++) { for (let k = 0; k < hbox.numChildren; k++) {
var unit = hbox.getChildAt(k).getComponent(TrophyUnit) const unit = hbox.getChildAt(k).getComponent(TrophyUnit)
index++ index++
if (index < list.length) { if (index < list.length) {
unit.owner.visible = true unit.owner.visible = true
unit.onInit(list[index]) unit.onInit(list[index])
} } else {
else {
unit.owner.visible = false unit.owner.visible = false
} }
} }
@@ -106,7 +100,6 @@ export class TrophyRoom extends Laya.Script {
}) })
}) })
EventManager.getInstance().DispatchEvent(EVENT_TYPES.NOT_SET_TROPHY_BUTTON, false) EventManager.getInstance().DispatchEvent(EVENT_TYPES.NOT_SET_TROPHY_BUTTON, false)
} }

View File

@@ -1,14 +1,12 @@
import type { TrophyRecord } from "../../types/global"
import { config } from "../../constants/config"
import { MONTH_LIST } from "../../models/DCManager"
import { config } from "../../constants/config"; const { regClass, property } = Laya
import { MONTH_LIST } from "../../models/DCManager";
import { TrophyRecord } from "../../types/global";
const { regClass, property } = Laya;
@regClass() @regClass()
export class TrophyShow extends Laya.Script { export class TrophyShow extends Laya.Script {
declare owner : Laya.Box; declare owner: Laya.Box
@property(Laya.Image) @property(Laya.Image)
public icon: Laya.Image public icon: Laya.Image
@@ -20,8 +18,8 @@ export class TrophyShow extends Laya.Script {
public btn_close: Laya.Box public btn_close: Laya.Box
public onSetShow(record: TrophyRecord): void { public onSetShow(record: TrophyRecord): void {
for (var i=0; i<MONTH_LIST.length; i++) { for (let i = 0; i < MONTH_LIST.length; i++) {
var obj = MONTH_LIST[i] const obj = MONTH_LIST[i]
if (obj.year == record.year && obj.month == record.month) { if (obj.year == record.year && obj.month == record.month) {
this.icon.skin = obj.icon_res this.icon.skin = obj.icon_res
break break

View File

@@ -1,26 +1,29 @@
import { config } from "../../constants/config"; import { config } from "../../constants/config"
import { respath } from "../../constants/respath"; import { respath } from "../../constants/respath"
import { StorageManager } from "../../models/StorageManager"; import { StorageManager } from "../../models/StorageManager"
import { UIManager } from "../../models/UIManager"; import { UIManager } from "../../models/UIManager"
const { regClass, property } = Laya; const { regClass, property } = Laya
@regClass() @regClass()
export class TrophyUnit extends Laya.Script { export class TrophyUnit extends Laya.Script {
declare owner : Laya.Box; declare owner: Laya.Box
@property(Laya.Image) @property(Laya.Image)
public bg_light: Laya.Image; public bg_light: Laya.Image
@property(Laya.Image) @property(Laya.Image)
public icon: Laya.Image; public icon: Laya.Image
@property(Laya.Label) @property(Laya.Label)
public label_count: Laya.Label; public label_count: Laya.Label
@property(Laya.Label) @property(Laya.Label)
public label_month: Laya.Label; public label_month: Laya.Label
public onInit(info: any): void { public onInit(info: any): void {
var user = StorageManager.getInstance().getUser() const user = StorageManager.getInstance().getUser()
var starCount = user.get_doneCountByDate(info.year, info.month) const starCount = user.get_doneCountByDate(info.year, info.month)
this.icon.skin = info.icon_res this.icon.skin = info.icon_res
this.label_count.text = `${starCount}/${info.dayCount}` this.label_count.text = `${starCount}/${info.dayCount}`
this.label_month.text = config.MONTH_ABBRS[info.month - 1] this.label_month.text = config.MONTH_ABBRS[info.month - 1]
@@ -28,15 +31,14 @@ export class TrophyUnit extends Laya.Script {
this.bg_light.skin = respath.trophy_bg_light_gold this.bg_light.skin = respath.trophy_bg_light_gold
this.icon.gray = false this.icon.gray = false
this.label_month.color = "#2d3138" this.label_month.color = "#2d3138"
} } else {
else {
this.bg_light.skin = respath.trophy_bg_light_grey this.bg_light.skin = respath.trophy_bg_light_grey
this.icon.gray = true this.icon.gray = true
this.label_month.color = "#a7abb3" this.label_month.color = "#a7abb3"
} }
this.icon.on(Laya.Event.CLICK, this, () => { this.icon.on(Laya.Event.CLICK, this, () => {
var find = user.get_trophyRecord(info.year, info.month) const find = user.get_trophyRecord(info.year, info.month)
if (find) { if (find) {
UIManager.getInstance().loadTrophyShowUI(find) UIManager.getInstance().loadTrophyShowUI(find)
} }

View File

@@ -1,20 +1,20 @@
{ {
"compilerOptions": { "compilerOptions": {
"module": "es6",
"target": "es6", "target": "es6",
"strict": true,
"strictNullChecks": false,
"noEmitHelpers": true,
"sourceMap": false,
"experimentalDecorators": true, "experimentalDecorators": true,
"skipLibCheck": true, "module": "es6",
"moduleResolution": "node", "moduleResolution": "node",
"allowSyntheticDefaultImports": true,
"paths": { "paths": {
"~/packages/*": [ "~/packages/*": [
"./library/packages/*" "./library/packages/*"
] ]
} },
"strict": true,
"strictNullChecks": false,
"noEmitHelpers": true,
"sourceMap": false,
"allowSyntheticDefaultImports": true,
"skipLibCheck": true
}, },
"include": [ "include": [
"./assets", "./assets",