|
|
|
import { game } from './config';
|
|
|
|
const { count, game: gameDuration, level, scores, directions, totalScore, totalTimes } = game;
|
|
|
|
|
|
|
|
let currentScore = 0; // 当前得分
|
|
|
|
let currentTimes = 10; // 当前次数
|
|
|
|
|
|
|
|
// 生成开始游戏消息需要的data数据
|
|
|
|
const createStartData = () => {
|
|
|
|
const now = Date.now();
|
|
|
|
const countFinishTime = now + count * 1000; // 倒计时结束时间
|
|
|
|
const gameFinishTime = countFinishTime + gameDuration * 1000; // 游戏结束时间
|
|
|
|
const data = {
|
|
|
|
event: "start",
|
|
|
|
data: {
|
|
|
|
count: {
|
|
|
|
finishTime: countFinishTime, // 倒计时结束的ms数
|
|
|
|
duration: count, // 倒计时时长
|
|
|
|
},
|
|
|
|
game: {
|
|
|
|
finishTime: gameFinishTime, // 游戏结束的ms数
|
|
|
|
duration: gameDuration, // 游戏时长
|
|
|
|
totalScore, // 总分
|
|
|
|
totalTimes, // 总次数
|
|
|
|
level, // 等级 0->入门 1->简单 2->普通 3->困难
|
|
|
|
config: {
|
|
|
|
scores,
|
|
|
|
directions // 游戏的动作构成队列
|
|
|
|
}
|
|
|
|
},
|
|
|
|
status: 1, // 游戏状态 0 1 2
|
|
|
|
param: {}, // 额外个性化参数
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return data;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 生成 暂停/继续 消息data数据
|
|
|
|
* @param {number} code 0->暂停 1->继续
|
|
|
|
* @returns {{}}
|
|
|
|
*/
|
|
|
|
const createPauseData = (code) => {
|
|
|
|
return {
|
|
|
|
event: code === 0 ? 'pause' : 'continue',
|
|
|
|
data: { status: code ===0 ? 3 : 1 }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 生成暂停/继续消息data数据
|
|
|
|
* @param {number} score 总得分 客户端传来的
|
|
|
|
* @param {number} times 总次数 客户端传来的
|
|
|
|
* @returns {{data: {score, times, param: {}, status: number}, event: string}}
|
|
|
|
*/
|
|
|
|
const createFinishData = (score=currentScore, times=currentTimes) => {
|
|
|
|
return {
|
|
|
|
event: 'finish',
|
|
|
|
data: {
|
|
|
|
score, // 得分
|
|
|
|
times, // 次数
|
|
|
|
status: 2, // 游戏状态 0 1 2
|
|
|
|
param: {}, // 额外个性化参数
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 生成 play消息 发送的data数据
|
|
|
|
* @param {number} score 当前得分
|
|
|
|
* @param {number} times 当前次数
|
|
|
|
* @param {number} direction 事件code 0默认 共6个事件参数 0 1 2 3 4 5
|
|
|
|
* @returns {{data: {score: number, times: number, param: {direction: number}, status: number}, event: string}}
|
|
|
|
*/
|
|
|
|
const createPlayData = ({ score=currentScore, times=currentTimes , direction=0 }) => {
|
|
|
|
return {
|
|
|
|
event: "play",
|
|
|
|
data: {
|
|
|
|
score, // 得分
|
|
|
|
times, // 次数
|
|
|
|
status: 1, // 游戏状态 0 1 2
|
|
|
|
param: {
|
|
|
|
direction, // 0 1 2 3 4 5 共6中事件参数
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// 生成提交的数据
|
|
|
|
export const creatData = (eventType, ...args) => {
|
|
|
|
let data = null;
|
|
|
|
switch (eventType) {
|
|
|
|
case 'start':
|
|
|
|
data = createStartData()
|
|
|
|
break;
|
|
|
|
case 'pause':
|
|
|
|
data = createPauseData(0);
|
|
|
|
break;
|
|
|
|
case 'continue':
|
|
|
|
data = createPauseData(1);
|
|
|
|
break;
|
|
|
|
case 'finish':
|
|
|
|
data = createFinishData(); // TODO:
|
|
|
|
break;
|
|
|
|
case 'play':
|
|
|
|
data = createPlayData({direction: +args[0]});
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
if (!data) {
|
|
|
|
alert('时间类型参数有误,消息数据为空');
|
|
|
|
}
|
|
|
|
return data;
|
|
|
|
}
|