mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-10-11 05:31:47 +08:00
chore: 丰富标题界面注释
This commit is contained in:
parent
4ad99f431d
commit
b670614e92
@ -4,7 +4,7 @@ import {
|
|||||||
SetupComponentOptions,
|
SetupComponentOptions,
|
||||||
UIComponentProps
|
UIComponentProps
|
||||||
} from '@motajs/system-ui';
|
} from '@motajs/system-ui';
|
||||||
import { computed, defineComponent, nextTick, onMounted, ref } from 'vue';
|
import { defineComponent, nextTick, onMounted, ref } from 'vue';
|
||||||
import {
|
import {
|
||||||
BUTTONS_HEIGHT,
|
BUTTONS_HEIGHT,
|
||||||
BUTTONS_WIDTH,
|
BUTTONS_WIDTH,
|
||||||
@ -20,7 +20,7 @@ import {
|
|||||||
TITLE_X,
|
TITLE_X,
|
||||||
TITLE_Y
|
TITLE_Y
|
||||||
} from '../shared';
|
} from '../shared';
|
||||||
import { ElementLocator, Sprite } from '@motajs/render-core';
|
import { ElementLocator } from '@motajs/render-core';
|
||||||
import {
|
import {
|
||||||
ITransitionedController,
|
ITransitionedController,
|
||||||
transitioned,
|
transitioned,
|
||||||
@ -75,10 +75,14 @@ export const GameTitle = defineComponent<GameTitleProps>(props => {
|
|||||||
|
|
||||||
//#region 标题设置
|
//#region 标题设置
|
||||||
|
|
||||||
|
/** 当前是否全屏 */
|
||||||
const fullscreen = ref(!!document.fullscreenElement);
|
const fullscreen = ref(!!document.fullscreenElement);
|
||||||
|
/** 是否开启了声音 */
|
||||||
const soundOpened = ref(true);
|
const soundOpened = ref(true);
|
||||||
|
/** 是否在选择难度界面 */
|
||||||
const selectHard = ref(false);
|
const selectHard = ref(false);
|
||||||
|
|
||||||
|
/** 开始界面按钮定义,你可以在这新增自己的按钮 */
|
||||||
const buttonItems: ButtonItem[] = [
|
const buttonItems: ButtonItem[] = [
|
||||||
{
|
{
|
||||||
code: TitleButton.StartGame,
|
code: TitleButton.StartGame,
|
||||||
@ -97,6 +101,7 @@ export const GameTitle = defineComponent<GameTitleProps>(props => {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
/** 开始界面按钮 */
|
||||||
const buttons = buttonItems.map<ButtonOption>(v => {
|
const buttons = buttonItems.map<ButtonOption>(v => {
|
||||||
return {
|
return {
|
||||||
code: v.code,
|
code: v.code,
|
||||||
@ -108,6 +113,7 @@ export const GameTitle = defineComponent<GameTitleProps>(props => {
|
|||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/** 选择难度界面按钮 */
|
||||||
const hard = main.levelChoose.map<ButtonOption>(v => {
|
const hard = main.levelChoose.map<ButtonOption>(v => {
|
||||||
return {
|
return {
|
||||||
code: v.hard,
|
code: v.hard,
|
||||||
@ -118,6 +124,7 @@ export const GameTitle = defineComponent<GameTitleProps>(props => {
|
|||||||
scale: transitioned(1, 400, hyper('sin', 'out'))!
|
scale: transitioned(1, 400, hyper('sin', 'out'))!
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
// 返回按钮
|
||||||
hard.push({
|
hard.push({
|
||||||
code: main.levelChoose.length,
|
code: main.levelChoose.length,
|
||||||
color: '#aaa',
|
color: '#aaa',
|
||||||
@ -127,9 +134,12 @@ export const GameTitle = defineComponent<GameTitleProps>(props => {
|
|||||||
scale: transitioned(1, 400, hyper('sin', 'out'))!
|
scale: transitioned(1, 400, hyper('sin', 'out'))!
|
||||||
});
|
});
|
||||||
|
|
||||||
|
/** 声音设置按钮的颜色 */
|
||||||
const soundColor = transitionedColor('#ddd', 400, hyper('sin', 'out'))!;
|
const soundColor = transitionedColor('#ddd', 400, hyper('sin', 'out'))!;
|
||||||
|
|
||||||
|
/** 开始界面按钮的不透明度,选择难度界面的不透明度使用 `1-buttonsAlpha` 计算 */
|
||||||
const buttonsAlpha = transitioned(1, 300, linear())!;
|
const buttonsAlpha = transitioned(1, 300, linear())!;
|
||||||
|
/** 开始界面的不透明度 */
|
||||||
const mainAlpha = transitioned(1, 600, linear())!;
|
const mainAlpha = transitioned(1, 600, linear())!;
|
||||||
|
|
||||||
const buttonFilter = `
|
const buttonFilter = `
|
||||||
@ -140,13 +150,18 @@ export const GameTitle = defineComponent<GameTitleProps>(props => {
|
|||||||
const titleFont = Font.defaults({ size: 72 });
|
const titleFont = Font.defaults({ size: 72 });
|
||||||
const buttonFont = Font.defaults({ size: 24, weight: 600 });
|
const buttonFont = Font.defaults({ size: 24, weight: 600 });
|
||||||
|
|
||||||
|
/** 开始界面按钮的高度 */
|
||||||
const buttonHeight = (buttons.length - 1) * 40 + 60;
|
const buttonHeight = (buttons.length - 1) * 40 + 60;
|
||||||
|
/** 选择难度界面按钮的高度 */
|
||||||
const hardHeight = (hard.length - 1) * 40 + 60;
|
const hardHeight = (hard.length - 1) * 40 + 60;
|
||||||
/** 按钮的背景框高度 */
|
/** 按钮的背景框高度 */
|
||||||
const rectHeight = transitioned(buttonHeight, 600, hyper('sin', 'in-out'))!;
|
const rectHeight = transitioned(buttonHeight, 600, hyper('sin', 'in-out'))!;
|
||||||
|
|
||||||
//#region 按钮功能
|
//#region 按钮功能
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 在开始界面和选择难度界面切换
|
||||||
|
*/
|
||||||
const toggleHard = async () => {
|
const toggleHard = async () => {
|
||||||
if (selectHard.value) {
|
if (selectHard.value) {
|
||||||
// 当前在难度界面,将要切换至开始界面
|
// 当前在难度界面,将要切换至开始界面
|
||||||
@ -163,6 +178,9 @@ export const GameTitle = defineComponent<GameTitleProps>(props => {
|
|||||||
buttonsAlpha.set(1);
|
buttonsAlpha.set(1);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 点击读取存档按钮
|
||||||
|
*/
|
||||||
const loadGame = async () => {
|
const loadGame = async () => {
|
||||||
const loc: ElementLocator = [0, 0, MAIN_WIDTH, MAIN_HEIGHT];
|
const loc: ElementLocator = [0, 0, MAIN_WIDTH, MAIN_HEIGHT];
|
||||||
const success = await saveLoad(props.controller, loc);
|
const success = await saveLoad(props.controller, loc);
|
||||||
@ -172,10 +190,17 @@ export const GameTitle = defineComponent<GameTitleProps>(props => {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 点击录像回放按钮
|
||||||
|
*/
|
||||||
const replay = () => {
|
const replay = () => {
|
||||||
core.chooseReplayFile();
|
core.chooseReplayFile();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 选择难度并开始游戏
|
||||||
|
* @param hard 选择的难度
|
||||||
|
*/
|
||||||
const startGame = async (hard: string) => {
|
const startGame = async (hard: string) => {
|
||||||
mainAlpha.set(0);
|
mainAlpha.set(0);
|
||||||
await sleep(600);
|
await sleep(600);
|
||||||
@ -186,6 +211,10 @@ export const GameTitle = defineComponent<GameTitleProps>(props => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 点击按钮时触发
|
||||||
|
* @param code 选中的按钮的代码
|
||||||
|
*/
|
||||||
const clickButton = (code: number) => {
|
const clickButton = (code: number) => {
|
||||||
if (selectHard.value) {
|
if (selectHard.value) {
|
||||||
if (code === hard.length - 1) {
|
if (code === hard.length - 1) {
|
||||||
@ -360,7 +389,7 @@ export const GameTitle = defineComponent<GameTitleProps>(props => {
|
|||||||
filter={buttonFilter}
|
filter={buttonFilter}
|
||||||
fillStyle={v.colorTrans.ref.value}
|
fillStyle={v.colorTrans.ref.value}
|
||||||
onEnter={() => enterMain(i)}
|
onEnter={() => enterMain(i)}
|
||||||
onClick={() => clickButton(i)}
|
onClick={() => clickButton(v.code)}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
@ -383,7 +412,7 @@ export const GameTitle = defineComponent<GameTitleProps>(props => {
|
|||||||
filter={buttonFilter}
|
filter={buttonFilter}
|
||||||
fillStyle={v.colorTrans.ref.value}
|
fillStyle={v.colorTrans.ref.value}
|
||||||
onEnter={() => enterHard(i)}
|
onEnter={() => enterHard(i)}
|
||||||
onClick={() => clickButton(i)}
|
onClick={() => clickButton(v.code)}
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
})}
|
})}
|
||||||
|
Loading…
Reference in New Issue
Block a user