Files

141 lines
4.8 KiB
TypeScript
Raw Permalink Normal View History

2026-04-30 00:13:37 +08:00
// 保存一些全局的数据
import Utils from "../libs/Utils";
import { GameState, GameStorageKeyConfig } from "./Config";
export class GlobalData {
// 游戏状态
public static gameState: GameState = GameState.PLAYING;
// 每吃到一个音符 增加的分数
public static addScore: number = 1;
//保存用户当前这局的分数
public static curRoundTotalScore: number = 0;
// 定义每一局用户默认剩余几条生命值
public static lifeNumPerRound: number = 2;
// 定义音符移动的速度
public static noteSpeed: number = 800;
// 定义当前音符下落的速率(也是音乐播放的速率)
public static speedRate: number = 1;
// 每次闯关增加的速率
public static speedRateAdd: number = 0.2;
2026-05-12 06:46:31 +08:00
//获取当前选择的音乐的信息
public static get currentMusicInfo(): any {
//从本地缓存中获取(默认)
return (
Utils.getCache(GameStorageKeyConfig.CurrentMusicInfo) || {
id: 1,
title: "Like A Dino!",
bestScore: 0,
isLocked: 0,
unlockGold: 0,
}
);
}
//设置当前选择的音乐的信息
public static set currentMusicInfo(value) {
//存储到本地缓存中
Utils.setCache(GameStorageKeyConfig.CurrentMusicInfo, value);
}
2026-04-30 00:13:37 +08:00
// 获取当前选择的音乐 id
public static get selectedMusicID(): number {
return Utils.getCache(GameStorageKeyConfig.SelectedMusicID) || 1;
}
//设置当前选择的音乐ID
public static set selectedMusicID(value) {
//存储到本地缓存中
Utils.setCache(GameStorageKeyConfig.SelectedMusicID, value);
}
2026-05-12 06:46:31 +08:00
//获取当前选择的小恐龙ID(默认是1)
public static get selectedDinoID() {
return parseInt(Utils.getCache(GameStorageKeyConfig.SelectedDinoID)) || 1;
}
//设置当前选择的小恐龙ID
public static set selectedDinoID(value) {
//存储到本地缓存中
Utils.setCache(GameStorageKeyConfig.SelectedDinoID, value);
}
//获取解锁了哪些音乐的ID列表
public static get unlockMusicIDList() {
//从本地缓存中获取(默认)
return Utils.getCache(GameStorageKeyConfig.UnlockMusicIDList) || [];
}
//存储解锁了哪些音乐的ID列表
public static set unlockMusicIDList(value) {
//存储到本地缓存中
Utils.setCache(GameStorageKeyConfig.UnlockMusicIDList, value);
}
//获取当前选择的小恐龙的信息
public static get currentDinoInfo(): any {
//从本地缓存中获取(默认)
return (
Utils.getCache(GameStorageKeyConfig.CurrentDinoInfo) || {
id: 1,
name: "小恐龙1",
desc: "Dino:Will you marry me?",
isLocked: 0,
unlockGold: 0,
dinoColor: "#ffffff",
bgColor: "#cce5cd",
}
);
}
//设置当前选择的小恐龙的信息
public static set currentDinoInfo(value) {
//存储到本地缓存中
Utils.setCache(GameStorageKeyConfig.CurrentDinoInfo, value);
}
//获取解锁了哪些小恐龙的ID列表
public static get unlockDinoIDList() {
//从本地缓存中获取(默认)
return Utils.getCache(GameStorageKeyConfig.UnlockDinoIDList) || [];
}
//存储解锁了哪些小恐龙的ID列表
public static set unlockDinoIDList(value) {
//存储到本地缓存中
Utils.setCache(GameStorageKeyConfig.UnlockDinoIDList, value);
}
2026-04-30 00:13:37 +08:00
//获取玩家累计的总得分(总的金币数)
public static get totalScore() {
//从本地缓存中获取
let score = Utils.getCache(GameStorageKeyConfig.TotalScore) || 0;
return score ? parseInt(score) : 0;
}
//存储玩家累计的总得分(总的金币数)
public static set totalScore(value) {
//存储到本地缓存中
Utils.setCache(GameStorageKeyConfig.TotalScore, value);
}
//获取玩家最好的成绩
public static get bestScore() {
//从本地缓存中获取
let scoreMap = Utils.getCache(GameStorageKeyConfig.BestScore) || {};
//获取当前选择的音乐ID
let bestScoreKey = GlobalData.selectedMusicID;
//从本地获取最好成绩
let score = scoreMap[bestScoreKey] || 0;
//返回当前选择的音乐ID的最好成绩
return score;
}
//存储游戏的UUID
public static set bestScore(value) {
//获取当前选择的音乐ID
let bestScoreKey = GlobalData.selectedMusicID;
//从本地获取最好成绩的映射
let scoreMap = Utils.getCache(GameStorageKeyConfig.BestScore) || {};
//更新当前选择的音乐ID的最好成绩(转换为整数)
scoreMap[bestScoreKey] = parseInt(value);
//存储到本地缓存中
Utils.setCache(GameStorageKeyConfig.BestScore, scoreMap);
}
// 重置游戏数据
public static resetGameData() {
// 重置当前这一局的得分
GlobalData.curRoundTotalScore = 0;
// 重置生命值
GlobalData.lifeNumPerRound = 2;
// 重置当前这一句的下落速速率
GlobalData.speedRate = 1;
}
}