Compare commits

...

7 Commits

98 changed files with 444 additions and 2053 deletions

1
.gitignore vendored
View File

@ -53,3 +53,4 @@ docs/.vitepress/cache
docs/.vitepress/dist docs/.vitepress/dist
docs/.vitepress/apiSidebar.ts docs/.vitepress/apiSidebar.ts
_docs _docs
template

View File

@ -131,4 +131,4 @@ export const MyUI = defineComponent(() => {
- 如果不允许交互,那么光标也不会显示 - 如果不允许交互,那么光标也不会显示
- 同 `zIndex` 下,后插入的元素会在上层,但是这也意味着如果是动态插入的元素(例如由于响应式更改而插入了一个新元素),会显示在后面代码的元素之上 - 同 `zIndex` 下,后插入的元素会在上层,但是这也意味着如果是动态插入的元素(例如由于响应式更改而插入了一个新元素),会显示在后面代码的元素之上
4. **常见问题** 4. **常见问题**
- 参考 [指南](../../guide/ui-faq.md) - 参考 [指南](../../guide/ui/faq.md)

View File

@ -32,10 +32,10 @@ interface SpriteProps extends BaseProps {
通过 `render` 函数实现 **动态绘制**,可结合: 通过 `render` 函数实现 **动态绘制**,可结合:
- 基础定位/变换参数(继承 `BaseProps` - 基础定位/变换参数(继承 `BaseProps`
- 动画系统(`useAnimation` - 动画系统(`useAnimation`
- 帧回调(`onTick` - 帧回调(`onTick`
- 自定义图形绘制(路径/滤镜/混合模式) - 自定义图形绘制(路径/滤镜/混合模式)
**注意**,这个标签虽然非常基础,但是应该并不常用,因为很多内容都有对应的标签可以实现(例如线可以使用 `g-line` 标签等),因此如果你在考虑使用此标签,请确认你必须使用它,或是你的场景对性能非常敏感。 **注意**,这个标签虽然非常基础,但是应该并不常用,因为很多内容都有对应的标签可以实现(例如线可以使用 `g-line` 标签等),因此如果你在考虑使用此标签,请确认你必须使用它,或是你的场景对性能非常敏感。
@ -43,7 +43,7 @@ interface SpriteProps extends BaseProps {
## 使用示例 ## 使用示例
以下的示例代码均应该在**组件内部**编写,哪里是组件内部请参考[指南](../../guide/ui.md)。 以下的示例代码均应该在**组件内部**编写,哪里是组件内部请参考[指南](../../guide/ui/ui.md)。
### 示例 1基础图形 ### 示例 1基础图形
@ -67,9 +67,9 @@ const render = (canvas: MotaOffscreenCanvas2D) => {
**效果** **效果**
- 100x100 红色方块,中心点位于 (200,200) - 100x100 红色方块,中心点位于 (200,200)
- 45 度旋转,蓝色描边 - 45 度旋转,蓝色描边
- 80% 不透明度 - 80% 不透明度
--- ---
@ -102,8 +102,8 @@ return () => <sprite loc={loc.value} scale={scale.value} render={render} />;
**效果** **效果**
- 矩形横向放大 1.5 倍,横向位置移动 100px - 矩形横向放大 1.5 倍,横向位置移动 100px
- 2 秒线性动画 - 2 秒线性动画
--- ---
@ -137,8 +137,8 @@ return () => (
**效果** **效果**
- 鼠标悬浮时添加模糊滤镜 - 鼠标悬浮时添加模糊滤镜
- 鼠标悬浮显示指针光标 - 鼠标悬浮显示指针光标
--- ---

View File

@ -11,7 +11,7 @@ graph LR
## 类描述 ## 类描述
`UIController` 是 UI 控制系统的核心类,负责管理 UI 实例的显示栈、背景控制以及多种显示模式。继承自 `EventEmitter`,支持事件监听。想要编写 UI 请参考[深度指南](../../guide/ui.md)。 `UIController` 是 UI 控制系统的核心类,负责管理 UI 实例的显示栈、背景控制以及多种显示模式。继承自 `EventEmitter`,支持事件监听。想要编写 UI 请参考[深度指南](../../guide/ui/ui.md)。
--- ---
@ -37,8 +37,8 @@ graph LR
function constructor(id: string): UIController; function constructor(id: string): UIController;
``` ```
- **参数** - **参数**
- `id`: 控制器的唯一标识符(若重复会触发警告日志) - `id`: 控制器的唯一标识符(若重复会触发警告日志)
**示例** **示例**
@ -84,9 +84,9 @@ function setBackground<T extends UIComponent>(
设置背景 UI 并初始化其实例。 设置背景 UI 并初始化其实例。
- **参数** - **参数**
- `back`: 背景 UI 配置实例 - `back`: 背景 UI 配置实例
- `vBind`: 传递给背景组件的 Props 对象 - `vBind`: 传递给背景组件的 Props 对象
**示例** **示例**
@ -156,12 +156,12 @@ function open<T extends UIComponent>(
打开一个新 UI 实例并加入栈中。 打开一个新 UI 实例并加入栈中。
- **参数** - **参数**
- `ui`: UI 配置实例 - `ui`: UI 配置实例
- `vBind`: 组件 Props - `vBind`: 组件 Props
- `alwaysShow`: 是否强制显示(默认 `false` - `alwaysShow`: 是否强制显示(默认 `false`
- **返回值** - **返回值**
打开的 UI 实例,可以用于关闭等操作 打开的 UI 实例,可以用于关闭等操作
**示例** **示例**
@ -191,8 +191,8 @@ function closeAll(ui?: IGameUI): void;
关闭所有或指定类型的所有 UI 实例。 关闭所有或指定类型的所有 UI 实例。
- **参数** - **参数**
- `ui`(可选): 指定要关闭的 UI 类型,不填时表示关闭所有 UI - `ui`(可选): 指定要关闭的 UI 类型,不填时表示关闭所有 UI
--- ---
@ -222,7 +222,7 @@ function showAll(stack?: boolean): void;
function showCustom(config: IUICustomConfig): void; function showCustom(config: IUICustomConfig): void;
``` ```
切换显示模式:使用自定义模式(需实现 `IUICustomConfig`),参考[指南](../../guide/ui-system.md#自定义显示模式) 切换显示模式:使用自定义模式(需实现 `IUICustomConfig`),参考[指南](../../guide/ui/system.md#自定义显示模式)
--- ---

View File

@ -28,7 +28,7 @@ lang: zh-CN
相比于 2.10.3 及 2.A有如下改动 相比于 2.10.3 及 2.A有如下改动
- [系统说明](./system) - [系统说明](./system.md)
- [UI 编写](./ui) - [UI 编写](./ui/ui.md)
- [UI 系统](./ui/system) - [UI 系统](./ui/system.md)
- [音频系统](./audio) - [音频系统](./audio.md)

View File

@ -8,7 +8,7 @@
## 定义动画属性 ## 定义动画属性
我们以一个自定义 UI 为例,来讲述如何编写一段动画。自定义 UI 参考[此指南](./new-ui.md)和[此教程](../../guide/ui.md)。 我们以一个自定义 UI 为例,来讲述如何编写一段动画。自定义 UI 参考[此指南](./new-ui.md)和[此教程](../../guide/ui/ui.md)。
假设自定义 UI 在 `packages-user/client-modules/src/render/ui` 文件夹下,我们需要引入 `transitioned` 接口,并调用它定义动画属性: 假设自定义 UI 在 `packages-user/client-modules/src/render/ui` 文件夹下,我们需要引入 `transitioned` 接口,并调用它定义动画属性:

View File

@ -14,7 +14,7 @@
- [新增勇士属性](./status-bar.md#拓展-新增勇士属性) (既包含客户端,也包含数据端) - [新增勇士属性](./status-bar.md#拓展-新增勇士属性) (既包含客户端,也包含数据端)
- [编写新 UI](./new-ui.md) - [编写新 UI](./new-ui.md)
- [UI 与组件的区别](./new-ui.md#拓展-ui-与组件的区别) - [UI 与组件的区别](./new-ui.md#拓展-ui-与组件的区别)
- [UI 编写参考](../ui.md) - [UI 编写参考](../ui/ui.md)
- [新增按键](./hotkey.md) - [新增按键](./hotkey.md)
- [添加辅助按键](./hotkey.md#拓展-添加辅助按键) - [添加辅助按键](./hotkey.md#拓展-添加辅助按键)
- [在 UI 内实现按键](./hotkey.md#拓展-在-ui-内实现按键) - [在 UI 内实现按键](./hotkey.md#拓展-在-ui-内实现按键)

View File

@ -82,7 +82,7 @@ controller.close(ins);
## UI 编写参考 ## UI 编写参考
参考[此文档](../ui.md),此文档将会教你如何从头开始编写一个 UI并解释 UI 运行与渲染的基本逻辑。 参考[此文档](../ui/ui.md),此文档将会教你如何从头开始编写一个 UI并解释 UI 运行与渲染的基本逻辑。
## 拓展-UI 与组件的区别 ## 拓展-UI 与组件的区别

View File

@ -224,4 +224,4 @@ export function calDamageWith(
## 拓展-了解 UI 编写的基本逻辑 ## 拓展-了解 UI 编写的基本逻辑
参考[此文档](./ui.md),此文档将会教你如何从头开始编写一个 UI并解释 UI 运行与渲染的基本逻辑。 参考[此文档](../ui/ui.md),此文档将会教你如何从头开始编写一个 UI并解释 UI 运行与渲染的基本逻辑。

View File

@ -4,7 +4,7 @@
## 常见需求实现指南 ## 常见需求实现指南
参考[此文档](./implements.md) 参考[此文档](./implements/index.md)
## 热重载 ## 热重载

View File

@ -536,21 +536,21 @@ export const MyCom = defineComponent(() => {
- [ConfirmBox](../../api/user-client-modules/组件%20ConfirmBox.md):确认框,一般使用 `getConfirm` 接口,不直接使用组件。 - [ConfirmBox](../../api/user-client-modules/组件%20ConfirmBox.md):确认框,一般使用 `getConfirm` 接口,不直接使用组件。
- [Choices](../../api/user-client-modules/组件%20Choices.md):选择框,一般使用 `getChoice` 接口,不直接使用组件。 - [Choices](../../api/user-client-modules/组件%20Choices.md):选择框,一般使用 `getChoice` 接口,不直接使用组件。
- [FloorSelector](../../api/user-client-modules/组件%20FloorSelector.md):楼层选择组件,浏览地图左侧的楼层选择就是使用的本组件。 <!-- - [FloorSelector](../../api/user-client-modules/组件%20FloorSelector.md):楼层选择组件,浏览地图左侧的楼层选择就是使用的本组件。 -->
- [图标组件](../../api/user-client-modules/图标组件.md):一些常用图标。 - [图标组件](../../api/user-client-modules/图标组件.md):一些常用图标。
- [Input](../../api/user-client-modules/组件%20Input.md):输入组件,可以放到组件内部,可以用于搜索栏等。 <!-- - [Input](../../api/user-client-modules/组件%20Input.md):输入组件,可以放到组件内部,可以用于搜索栏等。
- [InputBox](../../api/user-client-modules/组件%20InputBox.md):输入框组件,类似于确认框,一般使用 `getInput``getInputNumber` 接口,不使用本组件。 [InputBox](../../api/user-client-modules/组件%20InputBox.md):输入框组件,类似于确认框,一般使用 `getInput``getInputNumber` 接口,不使用本组件。 -->
- [List](../../api/user-client-modules/组件%20List.md):列表组件,可以用于展示一列内容。 <!-- - [List](../../api/user-client-modules/组件%20List.md):列表组件,可以用于展示一列内容。
- [ListPage](../../api/user-client-modules/组件%20ListPage.md):左侧是列表,右侧是当前选项对应的详情页,可以用于游戏机制说明等。 [ListPage](../../api/user-client-modules/组件%20ListPage.md):左侧是列表,右侧是当前选项对应的详情页,可以用于游戏机制说明等。 -->
- [Progress](../../api/user-client-modules/组件%20Progress.md):进度条组件,播放录像时右下角的进度条就是本组件。 - [Progress](../../api/user-client-modules/组件%20Progress.md):进度条组件,播放录像时右下角的进度条就是本组件。
- [Arrow](../../api/user-client-modules/组件%20Arrow.md):箭头组件,画一个箭头。 - [Arrow](../../api/user-client-modules/组件%20Arrow.md):箭头组件,画一个箭头。
- [ScrollText](../../api/user-client-modules/组件%20ScrollText.md):滚动文本组件,可以用于长剧情或是 staff 表等。 - [ScrollText](../../api/user-client-modules/组件%20ScrollText.md):滚动文本组件,可以用于长剧情或是 staff 表等。
- [Selection](../../api/user-client-modules/组件%20Selection.md):选择光标,列表组件的选择光标就是使用的本组件。 - [Selection](../../api/user-client-modules/组件%20Selection.md):选择光标,列表组件的选择光标就是使用的本组件。
- [Background](../../api/user-client-modules/组件%20Background.md):背景组件,可以设置为纯色或 `winskin` - [Background](../../api/user-client-modules/组件%20Background.md):背景组件,可以设置为纯色或 `winskin`
- [WaitBox](../../api/user-client-modules/组件%20WaitBox.md):等待框,一般使用 `waitbox` 接口,不直接使用组件。 <!-- - [WaitBox](../../api/user-client-modules/组件%20WaitBox.md):等待框,一般使用 `waitbox` 接口,不直接使用组件。 -->
- [Page](../../api/user-client-modules/组件%20Page.md):分页组件,本文已经详细讲解。 - [Page](../../api/user-client-modules/组件%20Page.md):分页组件,本文已经详细讲解。
- [Scroll](../../api/user-client-modules/组件%20Scroll.md):滚动条组件,本文已经详细讲解。 - [Scroll](../../api/user-client-modules/组件%20Scroll.md):滚动条组件,本文已经详细讲解。
- [TextContent](../../api/user-client-modules/组件%20TextContent.md):多行文本组件,本文已经详细讲解。 - [TextContent](../../api/user-client-modules/组件%20TextContent.md):多行文本组件,本文已经详细讲解。
- [Textbox](../../api/user-client-modules/组件%20Textbox.md):文本框组件,就是事件的显示文字,一般不会直接用。 - [Textbox](../../api/user-client-modules/组件%20Textbox.md):文本框组件,就是事件的显示文字,一般不会直接用。
- [Thumbnail](../../api/user-client-modules/组件%20Thumbnail.md):缩略图组件,用于展示某个地图的缩略图。 <!-- - [Thumbnail](../../api/user-client-modules/组件%20Thumbnail.md):缩略图组件,用于展示某个地图的缩略图。 -->
- [Tip](../../api/user-client-modules/组件%20Tip.md):提示组件,就是左上角的提示,一般不会直接使用。 - [Tip](../../api/user-client-modules/组件%20Tip.md):提示组件,就是左上角的提示,一般不会直接使用。

View File

@ -27,7 +27,7 @@ type ElementLocator = [
- `w` `h`: 元素的长宽,描述了在没有缩放时元素的矩形长宽,默认是没有放缩的。 - `w` `h`: 元素的长宽,描述了在没有缩放时元素的矩形长宽,默认是没有放缩的。
- `ax` `ay`: 元素的锚点位置描述了元素参考点的位置所有位置变换等将以此点作为参考点。0 表示元素最左侧或最上侧1 表示最右侧或最下侧,可以填不在 0-1 范围内的值,例如 `[-1, 1]` 表示锚点横坐标在元素左侧一个元素宽度的位置,纵坐标在元素下边缘的位置。 - `ax` `ay`: 元素的锚点位置描述了元素参考点的位置所有位置变换等将以此点作为参考点。0 表示元素最左侧或最上侧1 表示最右侧或最下侧,可以填不在 0-1 范围内的值,例如 `[-1, 1]` 表示锚点横坐标在元素左侧一个元素宽度的位置,纵坐标在元素下边缘的位置。
![锚点图示](./img/image.png) ![锚点图示](../img/image.png)
示例如下: 示例如下:

View File

@ -14,7 +14,8 @@
"build:lib": "vue-tsc --noEmit && tsx script/build-lib.ts", "build:lib": "vue-tsc --noEmit && tsx script/build-lib.ts",
"docs:dev": "concurrently -k -n SIDEBAR,VITEPRESS -c blue,green \"tsx docs/.vitepress/api.ts\" \"vitepress dev docs\"", "docs:dev": "concurrently -k -n SIDEBAR,VITEPRESS -c blue,green \"tsx docs/.vitepress/api.ts\" \"vitepress dev docs\"",
"docs:build": "vitepress build docs", "docs:build": "vitepress build docs",
"docs:preview": "vitepress preview docs" "docs:preview": "vitepress preview docs",
"pack:template": "tsx script/pack-template.ts"
}, },
"dependencies": { "dependencies": {
"@ant-design/icons-vue": "^6.1.0", "@ant-design/icons-vue": "^6.1.0",

View File

@ -1,22 +1,22 @@
import { gameKey } from '@motajs/system-action'; import { gameKey } from '@motajs/system-action';
import { MAIN_WIDTH, MAIN_HEIGHT, POP_BOX_WIDTH, CENTER_LOC } from './shared'; import { POP_BOX_WIDTH, CENTER_LOC, FULL_LOC } from './shared';
import { import {
saveSave, saveSave,
mainUIController, mainUIController,
saveLoad, saveLoad,
openSettings, openSettings,
ReplaySettingsUI, openViewMap,
openViewMap openReplay
} from './ui'; } from './ui';
import { ElementLocator } from '@motajs/render-core'; import { ElementLocator } from '@motajs/render-core';
export function createAction() { export function createAction() {
gameKey gameKey
.realize('save', () => { .realize('save', () => {
saveSave(mainUIController, [0, 0, MAIN_WIDTH, MAIN_HEIGHT]); saveSave(mainUIController, FULL_LOC);
}) })
.realize('load', () => { .realize('load', () => {
saveLoad(mainUIController, [0, 0, MAIN_WIDTH, MAIN_HEIGHT]); saveLoad(mainUIController, FULL_LOC);
}) })
.realize('menu', () => { .realize('menu', () => {
const loc = CENTER_LOC.slice() as ElementLocator; const loc = CENTER_LOC.slice() as ElementLocator;
@ -24,11 +24,11 @@ export function createAction() {
openSettings(mainUIController, loc); openSettings(mainUIController, loc);
}) })
.realize('replay', () => { .realize('replay', () => {
mainUIController.open(ReplaySettingsUI, { const loc = CENTER_LOC.slice() as ElementLocator;
loc: CENTER_LOC loc[2] = POP_BOX_WIDTH;
}); openReplay(mainUIController, loc);
}) })
.realize('viewMap', () => { .realize('viewMap', () => {
openViewMap(mainUIController, [0, 0, MAIN_WIDTH, MAIN_HEIGHT]); openViewMap(mainUIController, FULL_LOC);
}); });
} }

View File

@ -10,10 +10,11 @@ import {
Transform Transform
} from '@motajs/render-core'; } from '@motajs/render-core';
import { Font } from '@motajs/render-style'; import { Font } from '@motajs/render-style';
import { transitionedColor } from '../use'; import { transitionedColor, useKey } from '../use';
import { linear } from 'mutate-animate'; import { linear } from 'mutate-animate';
import { Background, Selection } from './misc'; import { Background, Selection } from './misc';
import { GameUI, IUIMountable, SetupComponentOptions } from '@motajs/system-ui'; import { GameUI, IUIMountable, SetupComponentOptions } from '@motajs/system-ui';
import { KeyCode } from '@motajs/client-base';
export interface InputProps extends DefaultProps, Partial<TextContentProps> { export interface InputProps extends DefaultProps, Partial<TextContentProps> {
/** 输入框的提示内容 */ /** 输入框的提示内容 */
@ -49,7 +50,16 @@ export type InputEmits = {
}; };
const inputProps = { const inputProps = {
props: ['placeholder', 'value', 'multiline'], props: [
'loc',
'placeholder',
'value',
'multiline',
'border',
'circle',
'borderWidth',
'pad'
],
emits: ['change', 'input', 'update:value'] emits: ['change', 'input', 'update:value']
} satisfies SetupComponentOptions<InputProps, InputEmits, keyof InputEmits>; } satisfies SetupComponentOptions<InputProps, InputEmits, keyof InputEmits>;
@ -92,6 +102,10 @@ export const Input = defineComponent<InputProps, InputEmits, keyof InputEmits>(
width.value - padding.value * 2, width.value - padding.value * 2,
height.value - padding.value * 2 height.value - padding.value * 2
]); ]);
const rectLoc = computed<ElementLocator>(() => {
const b = props.borderWidth ?? 1;
return [b, b, width.value - b * 2, height.value - b * 2];
});
const borderColor = transitionedColor( const borderColor = transitionedColor(
props.border ?? '#ddd', props.border ?? '#ddd',
@ -112,6 +126,9 @@ export const Input = defineComponent<InputProps, InputEmits, keyof InputEmits>(
} }
}); });
ele.addEventListener('blur', () => { ele.addEventListener('blur', () => {
if (ele) {
updateInput(ele.value);
}
ele?.remove(); ele?.remove();
}); });
}; };
@ -143,42 +160,52 @@ export const Input = defineComponent<InputProps, InputEmits, keyof InputEmits>(
if (!ele) createInput(props.multiline ?? false); if (!ele) createInput(props.multiline ?? false);
if (!ele) return; if (!ele) return;
// 计算当前绝对位置 // 计算当前绝对位置
const renderer = MotaRenderer.get('render-main');
const canvas = renderer?.getCanvas();
if (!canvas) return;
const chain: RenderItem[] = []; const chain: RenderItem[] = [];
let now: RenderItem | undefined = root.value; let now: RenderItem | undefined = root.value;
let renderer: MotaRenderer | undefined;
if (!now) return; if (!now) return;
while (now) { while (now) {
chain.unshift(now); chain.unshift(now);
if (now?.isRoot) {
renderer = now as MotaRenderer;
}
now = now.parent; now = now.parent;
} }
// 应用内边距偏移 const canvas = renderer?.getCanvas();
const { clientLeft, clientTop } = canvas; if (!canvas) return;
const trans = new Transform();
trans.translate(clientLeft, clientTop); const w = width.value;
trans.scale(core.domStyle.scale); const h = height.value;
const border = props.borderWidth ?? 1;
const inputWidth = w - border * 2;
const inputHeight = h - border * 2;
// 应用根画布偏移
const box = canvas.getBoundingClientRect();
let trans = new Transform();
trans.translate(box.x, box.y);
trans.scale(renderer?.getScale() ?? 1);
for (const item of chain) { for (const item of chain) {
const { anchorX, anchorY, width, height } = item; const { anchorX, anchorY, width, height } = item;
trans.translate(-anchorX * width, -anchorY * height); trans.translate(-anchorX * width, -anchorY * height);
trans.multiply(item.transform); trans = trans.multiply(item.transform);
} }
trans.translate(padding.value, padding.value); trans.translate(border, border);
// 构建CSS transform的matrix字符串 // 构建CSS transform的matrix字符串
const [a, b, , c, d, , e, f] = trans.mat; const [a, b, , c, d, , e, f] = trans.mat;
const str = `matrix(${a},${b},${c},${d},${e},${f})`; const str = `matrix(${a},${b},${c},${d},${e},${f})`;
const w = width.value * core.domStyle.scale;
const h = height.value * core.domStyle.scale;
const font = props.font ?? Font.defaults(); const font = props.font ?? Font.defaults();
ele.style.transform = str; ele.style.transform = str;
ele.style.width = `${w - padding.value * 2}px`; ele.style.width = `${inputWidth}px`;
ele.style.height = `${h - padding.value * 2}px`; ele.style.height = `${inputHeight}px`;
ele.style.font = font.string(); ele.style.font = font.string();
ele.style.color = String(props.fillStyle ?? 'white'); ele.style.color = String(props.fillStyle ?? 'white');
ele.style.zIndex = '100';
document.body.appendChild(ele); document.body.appendChild(ele);
ele.focus(); ele.focus();
}; };
@ -191,6 +218,14 @@ export const Input = defineComponent<InputProps, InputEmits, keyof InputEmits>(
borderColor.set(props.border ?? '#ddd'); borderColor.set(props.border ?? '#ddd');
}; };
const [key] = useKey();
key.realize('confirm', (_, code) => {
if (code === KeyCode.Enter) {
// 特判回车键
ele?.blur();
}
});
watch( watch(
() => props.value, () => props.value,
newValue => { newValue => {
@ -214,6 +249,7 @@ export const Input = defineComponent<InputProps, InputEmits, keyof InputEmits>(
return () => ( return () => (
<container <container
loc={props.loc}
ref={root} ref={root}
cursor="text" cursor="text"
onClick={click} onClick={click}
@ -221,11 +257,14 @@ export const Input = defineComponent<InputProps, InputEmits, keyof InputEmits>(
onLeave={leave} onLeave={leave}
> >
<g-rectr <g-rectr
loc={[0, 0, width.value, height.value]} loc={rectLoc.value}
circle={props.circle} circle={props.circle}
lineWidth={props.borderWidth} lineWidth={props.borderWidth ?? 1}
fill
stroke
fillStyle="#111"
strokeStyle={borderColor.ref.value} strokeStyle={borderColor.ref.value}
zIndex={10} zIndex={0}
/> />
<TextContent <TextContent
{...attrs} {...attrs}
@ -233,8 +272,9 @@ export const Input = defineComponent<InputProps, InputEmits, keyof InputEmits>(
loc={textLoc.value} loc={textLoc.value}
width={width.value - padding.value * 2} width={width.value - padding.value * 2}
text={showText.value} text={showText.value}
fillStyle="white"
alpha={value.value.length === 0 ? 0.6 : 1} alpha={value.value.length === 0 ? 0.6 : 1}
zIndex={0} zIndex={10}
/> />
</container> </container>
); );
@ -353,12 +393,12 @@ export const InputBox = defineComponent<
const noText = computed(() => props.noText ?? '取消'); const noText = computed(() => props.noText ?? '取消');
const text = computed(() => props.text ?? '请输入内容:'); const text = computed(() => props.text ?? '请输入内容:');
const padding = computed(() => props.pad ?? 8); const padding = computed(() => props.pad ?? 8);
const inputHeight = computed(() => props.inputHeight ?? 16); const inputHeight = computed(() => props.inputHeight ?? 24);
const inputLoc = computed<ElementLocator>(() => [ const inputLoc = computed<ElementLocator>(() => [
padding.value, padding.value,
padding.value * 2 + contentHeight.value, padding.value * 2 + contentHeight.value,
props.width - padding.value * 2, props.width - padding.value * 2,
inputHeight.value - padding.value * 2 inputHeight.value
]); ]);
const yesLoc = computed<ElementLocator>(() => { const yesLoc = computed<ElementLocator>(() => {
const y = height.value - padding.value; const y = height.value - padding.value;
@ -379,10 +419,17 @@ export const InputBox = defineComponent<
return [x, y + 4, width + 8, height + 8, 0.5, 1]; return [x, y + 4, width + 8, height + 8, 0.5, 1];
} }
}); });
const boxLoc = computed<ElementLocator>(() => {
const [x = 0, y = 0, , , ax = 0, ay = 0] = props.loc;
return [x, y, props.width, height.value, ax, ay];
});
const updateHeight = (h: number) => { const updateHeight = (h: number) => {
contentHeight.value = h; contentHeight.value = h;
height.value = h + inputHeight.value + padding.value * 4; const [, yh] = yesSize.value;
const [, nh] = noSize.value;
const buttonHeight = Math.max(yh, nh);
height.value = h + inputHeight.value + padding.value * 4 + buttonHeight;
}; };
const change = (value: string) => { const change = (value: string) => {
@ -411,11 +458,11 @@ export const InputBox = defineComponent<
}; };
return () => ( return () => (
<container> <container loc={boxLoc.value}>
<Background <Background
loc={[0, 0, props.width, height.value]} loc={[0, 0, props.width, height.value]}
winskin={props.winskin} winskin={props.winskin}
color={props.color} color={props.color ?? '#333'}
border={props.border} border={props.border}
zIndex={0} zIndex={0}
/> />
@ -426,12 +473,14 @@ export const InputBox = defineComponent<
width={props.width - padding.value * 2} width={props.width - padding.value * 2}
zIndex={5} zIndex={5}
onUpdateHeight={updateHeight} onUpdateHeight={updateHeight}
autoHeight
/> />
<Input <Input
{...(props.input ?? {})} {...(props.input ?? {})}
loc={inputLoc.value} loc={inputLoc.value}
v-model={value.value} v-model={value.value}
zIndex={10} zIndex={10}
circle={[4]}
onChange={change} onChange={change}
onInput={input} onInput={input}
/> />

View File

@ -364,7 +364,7 @@ export const SyncSave = defineComponent<MainSettingsProps>(props => {
[SyncSaveChoice.ToServer, '同步存档至服务器'], [SyncSaveChoice.ToServer, '同步存档至服务器'],
[SyncSaveChoice.FromServer, '从服务器加载存档'], [SyncSaveChoice.FromServer, '从服务器加载存档'],
[SyncSaveChoice.ToLocal, '存档至本地文件'], [SyncSaveChoice.ToLocal, '存档至本地文件'],
[SyncSaveChoice.FromLocal, '本地文件读档'], [SyncSaveChoice.FromLocal, '本地文件读档'],
[SyncSaveChoice.ClearLocal, '清空本地存档'], [SyncSaveChoice.ClearLocal, '清空本地存档'],
[SyncSaveChoice.Back, '返回上一级'] [SyncSaveChoice.Back, '返回上一级']
]; ];
@ -693,3 +693,14 @@ export function openSettings(
loc loc
}); });
} }
export function openReplay(
controller: IUIMountable,
loc: ElementLocator,
props?: MainSettingsProps
) {
controller.open(ReplaySettingsUI, {
...props,
loc
});
}

View File

@ -23,7 +23,7 @@ import { SetupComponentOptions } from '@motajs/system-ui';
import { saveSave, saveLoad } from './save'; import { saveSave, saveLoad } from './save';
import { mainUIController } from './controller'; import { mainUIController } from './controller';
import { MAIN_HEIGHT, FULL_LOC, POP_BOX_WIDTH, CENTER_LOC } from '../shared'; import { MAIN_HEIGHT, FULL_LOC, POP_BOX_WIDTH, CENTER_LOC } from '../shared';
import { openSettings } from './settings'; import { openReplay, openSettings } from './settings';
import { openViewMap } from './viewmap'; import { openViewMap } from './viewmap';
interface ToolbarProps extends DefaultProps { interface ToolbarProps extends DefaultProps {
@ -112,7 +112,11 @@ export const PlayingToolbar = defineComponent<
const view = () => { const view = () => {
openViewMap(mainUIController, FULL_LOC); openViewMap(mainUIController, FULL_LOC);
}; };
const replay = () => core.ui._drawReplay(); const replay = () => {
const loc = CENTER_LOC.slice() as ElementLocator;
loc[2] = POP_BOX_WIDTH;
openReplay(mainUIController, loc);
};
const settings = () => { const settings = () => {
const loc = CENTER_LOC.slice() as ElementLocator; const loc = CENTER_LOC.slice() as ElementLocator;
loc[2] = POP_BOX_WIDTH; loc[2] = POP_BOX_WIDTH;

View File

@ -2,6 +2,7 @@ import { compressToBase64, decompressFromBase64 } from 'lz-string';
import { getConfirm, waitbox } from '../components'; import { getConfirm, waitbox } from '../components';
import { IUIMountable } from '@motajs/system-ui'; import { IUIMountable } from '@motajs/system-ui';
import { SyncSaveFromServerResponse } from '@motajs/client-base'; import { SyncSaveFromServerResponse } from '@motajs/client-base';
import { CENTER_LOC, POP_BOX_WIDTH } from '../shared';
export interface SaveData { export interface SaveData {
name: string; name: string;
@ -128,15 +129,15 @@ export async function syncFromServer(
return void getConfirm( return void getConfirm(
controller, controller,
'不合法的存档编号+密码!请检查格式!', '不合法的存档编号+密码!请检查格式!',
[240, 240, void 0, void 0, 0.5, 0.5], CENTER_LOC,
240 POP_BOX_WIDTH
); );
} }
const [id, password] = parseIdPassword(identifier); const [id, password] = parseIdPassword(identifier);
const result = await waitbox( const result = await waitbox(
controller, controller,
[240, 240, void 0, void 0, 0.5, 0.5], CENTER_LOC,
240, POP_BOX_WIDTH,
syncLoad(id, password) syncLoad(id, password)
); );
if (typeof result === 'number') { if (typeof result === 'number') {
@ -150,16 +151,16 @@ export async function syncFromServer(
return void getConfirm( return void getConfirm(
controller, controller,
map[result], map[result],
[240, 240, void 0, void 0, 0.5, 0.5], CENTER_LOC,
240 POP_BOX_WIDTH
); );
} }
if (result instanceof Array) { if (result instanceof Array) {
const confirm = await getConfirm( const confirm = await getConfirm(
controller, controller,
'所有本地存档都将被覆盖,确认?', '所有本地存档都将被覆盖,确认?',
[240, 240, void 0, void 0, 0.5, 0.5], CENTER_LOC,
240, POP_BOX_WIDTH,
{ {
defaultYes: true defaultYes: true
} }
@ -176,8 +177,8 @@ export async function syncFromServer(
return void getConfirm( return void getConfirm(
controller, controller,
'同步成功!\n你的本地所有存档均已被覆盖。', '同步成功!\n你的本地所有存档均已被覆盖。',
[240, 240, void 0, void 0, 0.5, 0.5], CENTER_LOC,
240 POP_BOX_WIDTH
); );
} }
} else { } else {
@ -188,8 +189,8 @@ export async function syncFromServer(
return void getConfirm( return void getConfirm(
controller, controller,
`同步成功!\n单存档已覆盖至存档 ${idx}`, `同步成功!\n单存档已覆盖至存档 ${idx}`,
[240, 240, void 0, void 0, 0.5, 0.5], CENTER_LOC,
240 POP_BOX_WIDTH
); );
} }
} }

View File

@ -133,7 +133,6 @@ export class MotaRenderer extends Container implements IRenderTreeRoot {
// 画布监听 // 画布监听
const canvas = this.target.canvas; const canvas = this.target.canvas;
canvas.addEventListener('mousedown', ev => { canvas.addEventListener('mousedown', ev => {
ev.preventDefault();
const mouse = this.getMouseType(ev); const mouse = this.getMouseType(ev);
this.lastMouse = mouse; this.lastMouse = mouse;
this.captureEvent( this.captureEvent(
@ -142,13 +141,11 @@ export class MotaRenderer extends Container implements IRenderTreeRoot {
); );
}); });
canvas.addEventListener('mouseup', ev => { canvas.addEventListener('mouseup', ev => {
ev.preventDefault();
const event = this.createMouseAction(ev, ActionType.Up); const event = this.createMouseAction(ev, ActionType.Up);
this.captureEvent(ActionType.Up, event); this.captureEvent(ActionType.Up, event);
this.captureEvent(ActionType.Click, event); this.captureEvent(ActionType.Click, event);
}); });
canvas.addEventListener('mousemove', ev => { canvas.addEventListener('mousemove', ev => {
ev.preventDefault();
const event = this.createMouseAction( const event = this.createMouseAction(
ev, ev,
ActionType.Move, ActionType.Move,
@ -171,7 +168,6 @@ export class MotaRenderer extends Container implements IRenderTreeRoot {
); );
}); });
canvas.addEventListener('mouseleave', ev => { canvas.addEventListener('mouseleave', ev => {
ev.preventDefault();
const id = this.getMouseIdentifier( const id = this.getMouseIdentifier(
ActionType.Leave, ActionType.Leave,
this.getMouseType(ev) this.getMouseType(ev)
@ -183,13 +179,11 @@ export class MotaRenderer extends Container implements IRenderTreeRoot {
this.beforeHovered.clear(); this.beforeHovered.clear();
}); });
document.addEventListener('touchstart', ev => { document.addEventListener('touchstart', ev => {
ev.preventDefault();
this.createTouchAction(ev, ActionType.Down).forEach(v => { this.createTouchAction(ev, ActionType.Down).forEach(v => {
this.captureEvent(ActionType.Down, v); this.captureEvent(ActionType.Down, v);
}); });
}); });
document.addEventListener('touchend', ev => { document.addEventListener('touchend', ev => {
ev.preventDefault();
this.createTouchAction(ev, ActionType.Up).forEach(v => { this.createTouchAction(ev, ActionType.Up).forEach(v => {
this.captureEvent(ActionType.Up, v); this.captureEvent(ActionType.Up, v);
this.captureEvent(ActionType.Click, v); this.captureEvent(ActionType.Click, v);
@ -199,7 +193,6 @@ export class MotaRenderer extends Container implements IRenderTreeRoot {
}); });
}); });
document.addEventListener('touchcancel', ev => { document.addEventListener('touchcancel', ev => {
ev.preventDefault();
this.createTouchAction(ev, ActionType.Up).forEach(v => { this.createTouchAction(ev, ActionType.Up).forEach(v => {
this.captureEvent(ActionType.Up, v); this.captureEvent(ActionType.Up, v);
}); });
@ -208,7 +201,6 @@ export class MotaRenderer extends Container implements IRenderTreeRoot {
}); });
}); });
document.addEventListener('touchmove', ev => { document.addEventListener('touchmove', ev => {
ev.preventDefault();
this.createTouchAction(ev, ActionType.Move).forEach(v => { this.createTouchAction(ev, ActionType.Move).forEach(v => {
const list = this.touchInfo.values(); const list = this.touchInfo.values();
if (!list.some(vv => v.identifier === vv.identifier)) { if (!list.some(vv => v.identifier === vv.identifier)) {
@ -228,7 +220,6 @@ export class MotaRenderer extends Container implements IRenderTreeRoot {
}); });
}); });
canvas.addEventListener('wheel', ev => { canvas.addEventListener('wheel', ev => {
ev.preventDefault();
this.captureEvent( this.captureEvent(
ActionType.Wheel, ActionType.Wheel,
this.createWheelAction(ev, ActionType.Wheel) this.createWheelAction(ev, ActionType.Wheel)

View File

@ -192,6 +192,7 @@ export class Transform {
if (this.modified) { if (this.modified) {
const result = new Transform(); const result = new Transform();
mat3.multiply(result.mat, this.mat, transform.mat); mat3.multiply(result.mat, this.mat, transform.mat);
result.modified = true;
return result; return result;
} else { } else {
return transform.clone(); return transform.clone();

File diff suppressed because it is too large Load Diff

View File

@ -3104,6 +3104,14 @@ maps.prototype.showBlock = function (x, y, floorId) {
block.disable = false; block.disable = false;
core.setMapBlockDisabled(floorId, x, y, false); core.setMapBlockDisabled(floorId, x, y, false);
this._updateMapArray(floorId, block.x, block.y); this._updateMapArray(floorId, block.x, block.y);
Mota.require('@user/data-base').hook.emit(
'setBlock',
x,
y,
floorId,
block?.id ?? 0,
0
);
// 在本层,添加动画 // 在本层,添加动画
if (floorId == core.status.floorId) { if (floorId == core.status.floorId) {
if (block.event.cls == 'autotile') { if (block.event.cls == 'autotile') {
@ -3128,6 +3136,14 @@ maps.prototype.hideBlock = function (x, y, floorId) {
block.disable = true; block.disable = true;
core.setMapBlockDisabled(floorId, block.x, block.y, true); core.setMapBlockDisabled(floorId, block.x, block.y, true);
this._updateMapArray(floorId, block.x, block.y); this._updateMapArray(floorId, block.x, block.y);
Mota.require('@user/data-base').hook.emit(
'setBlock',
x,
y,
floorId,
0,
block?.id ?? 0
);
// 删除动画,清除地图 // 删除动画,清除地图
this._removeBlockFromMap(floorId, block); this._removeBlockFromMap(floorId, block);
@ -3143,6 +3159,14 @@ maps.prototype.hideBlockByIndex = function (index, floorId) {
block.disable = true; block.disable = true;
core.setMapBlockDisabled(floorId, block.x, block.y, true); core.setMapBlockDisabled(floorId, block.x, block.y, true);
this._updateMapArray(floorId, block.x, block.y); this._updateMapArray(floorId, block.x, block.y);
Mota.require('@user/data-base').hook.emit(
'setBlock',
x,
y,
floorId,
0,
block?.id ?? 0
);
}; };
////// 一次性隐藏多个block ////// ////// 一次性隐藏多个block //////
@ -3562,6 +3586,14 @@ maps.prototype.replaceBlock = function (fromNumber, toNumber, floorId) {
block.event[one] = core.clone(toBlock.event[one]); block.event[one] = core.clone(toBlock.event[one]);
} }
this._updateMapArray(floorId, block.x, block.y); this._updateMapArray(floorId, block.x, block.y);
Mota.require('@user/data-base').hook.emit(
'setBlock',
x,
y,
floorId,
fromNumber,
toNumber
);
} }
}, this); }, this);
if (floorId == core.status.floorId) core.redrawMap(); if (floorId == core.status.floorId) core.redrawMap();

View File

@ -2241,15 +2241,19 @@ ui.prototype.drawChoices = async function (content, choices, width) {
core.insertAction(choices[selected].action); core.insertAction(choices[selected].action);
core.doAction(); core.doAction();
} else { } else {
const { routedChoices, mainUIController } = Mota.require( const {
'@user/client-modules' routedChoices,
); mainUIController,
HALF_WIDTH,
HALF_HEIGHT,
POP_BOX_WIDTH
} = Mota.require('@user/client-modules');
const choice = choices.map((v, i) => [i, v.text]); const choice = choices.map((v, i) => [i, v.text]);
const selected = await routedChoices( const selected = await routedChoices(
mainUIController, mainUIController,
choice, choice,
[420, 240, void 0, void 0, 0.5, 0.5], [HALF_WIDTH, HALF_HEIGHT, void 0, void 0, 0.5, 0.5],
width, width ?? POP_BOX_WIDTH,
{ title: content ?? '' } { title: content ?? '' }
); );
core.insertAction(choices[selected].action); core.insertAction(choices[selected].action);
@ -2295,14 +2299,18 @@ ui.prototype.drawConfirmBox = async function (
noCallback?.(); noCallback?.();
} }
} else { } else {
const { routedConfirm, mainUIController } = Mota.require( const {
'@user/client-modules' routedConfirm,
); mainUIController,
HALF_WIDTH,
HALF_HEIGHT,
POP_BOX_WIDTH
} = Mota.require('@user/client-modules');
const confirm = await routedConfirm( const confirm = await routedConfirm(
mainUIController, mainUIController,
text, text,
[420, 240, void 0, void 0, 0.5, 0.5], [HALF_WIDTH, HALF_HEIGHT, void 0, void 0, 0.5, 0.5],
240 POP_BOX_WIDTH
); );
if (confirm) { if (confirm) {
yesCallback?.(); yesCallback?.();

View File

@ -1 +0,0 @@
{"ratio":1,"se":{"1":"015-Jump01.opus"},"bitmaps":["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAOmSURBVHhe7dwxaBZnGAfwIAUXF5dOIh2yGElECkbJmc8lKgpCB6FgRQqiUh2FgssHtmgHpUMLoqCCBIoIIoJ20MGhoLWDRYWKKCiIQgriIEIHq/7lvqWcRNMLd1/8/eAhfPne93mW5y7v3b2XAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgNnQ7XbnFUWxcHz50iXrVq/YuKHT2TpRFN/0Ip/z+3yfcRlfToX+lUZeMTy8aGPx+eYdW7dMHujuu3v86M8vzp6efHnp4vmXVy7/+m9+5nN+n+8zLuMzz4FA3xpevHhhzuo7t311cfLEsX9u3bj+aurJo1fPn029M/J9xmV85mV+8pQpof1y1l67cuXg+vHxbs7qD+7fqWz26SLzMj95ks9fA1ovTZp1fJYxWdpUNfaHRvIkX/I6CGi1rNvTrFnbVzXzTCP5kjf5y1LQLkNDQwvWjo19e+HcmVqbvxfJm/ypU5aEdsjSZF1ndM3hH76bqmreuiL5U8dSiFbJvfsvv9h09K/bf1Y2bl2R/KmTemVpaN5EMTo622f/XqRO6pWloXl5klvXXZ/pItcCqVeWhubl4vTGH1crG7buSJ3UK0tD8yZWj31/787tyoatO1In9crS0DwHAB+1bFeY7TtAvUid1CtLQ/Oypfn3365UNmzdkTqpV5aG5mXXZnZwVjVs3ZE6qVeWhuZlt+bePbuuTbfd+f9G8qdO6pWloXmDg+vnZ1ky288Ckj91Uq8sDe3Q+ysw0/3/00XyOvvTWjkrZ22erQqPHz2obOKZRvK93Qj3Jr+zP62VrcrZpnDkx8NP6zoIkif5ktdWaFovTZqX2vOCe97vrWrq943MT57k0/z0jbfLoc7omt3bvz6f25Yfel2Q8ZmX+clj2UPf6XQ6n+QVxixd0shZxuTVxjT331NPKhs/D7kyLuMzL/OTp0wJ/ScNvGpk5NOcybOLc+e2LQ+rlkb530ATRfFTxmW8xmfOyRk9tzL/u28ozZ/9PWn8cijMLXmPt/fmWO+JcX5mra/5mfNyIZt1fZ7m5jog1wO5w5Mnu5qfOS8HwKGD+3f8curkzTR+rgfGln62zB0ePgpZAuVMn//wlu0MGh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAGDAy8BvQ2kjkQgG0HAAAAAElFTkSuQmCC","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAIFSURBVHhe7do/SFVRGADwQwgK2iCkLlHqe+gSOiiRELzGwNEGtwhqaHQQ3N5QOQg6OERBJEXQ0iAimDbkEsqDFocIBJeEoKGx8b344DxwbWi55/eDC5fvnvH7vnv+JQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/otms3np89ZWXzw5BGWIpP+5uTl/vrb+9vTx8ovWeONGFET+DNV2vPT01o8na7/PVprt7wsPO62RufO9ntqcIqAIXx89W4zEP7m90Dm6PN35lOrt3VR7vZ9G+vMQqK6PV2cfRPK3anfakfwf0lj7Tbq+uzMwcSUPgeqKAojk73b/XAAv/QEoQix6LxbAuzT6Z2Nm6F6j0ejJQ6C6YqoTC98ogOj+79O1w4hZBFOE2AY9Hr55eHH6U6/f7c2fodqi0x/1T692pz+xJjD9oSix7x8FYPpDkSLp99LYr+j+OQTliI4fBfBqdnQyhwAowsnK88G4DPdt/v52nAvkMJQhboHGZbg4EIuFcA5DGb4MTB10zwEUAMWJbdBI/LgEF+85DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwb1L6CwYzmXU7DsBbAAAAAElFTkSuQmCC","","","","","","","",""],"frame_max":20,"frames":[[[0,0,-8,80,255,0,0],[1,0,-8,80,255,0,0]],[[0,0,-12,90,255,0,0],[1,0,-7,97,255,0,0]],[[0,0,-16,100,255,0,0],[1,0,-12,115,255,0,0]],[[0,0,-16,100,255,0,0],[1,0,-8,132,255,0,0]],[[0,0,-16,100,255,0,0],[1,0,-4,150,255,0,0]],[[0,0,-16,100,255,0,0],[1,0,-10,125,255,0,0]],[[0,0,-16,100,255,0,0],[1,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[1,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[1,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[1,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[1,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[1,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[1,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[1,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[1,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[1,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[1,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[1,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[1,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[1,0,-16,100,255,0,0]]],"pitch":{"1":100}}

View File

@ -1 +0,0 @@
{"ratio":1,"se":"","bitmaps":["","","","","","","","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAQGSURBVHhe7dlLb1RVHABwTNxIjMaYaNyQuHCjH4Doxk/hQuPGyMpoWLhxV0mhxT6n7bSdPmk79EErfQGtQAkliBEUbKFQKI++S99tYpRoIse5l4H4EZzy+yX/3Hvn3nNW53/O/5zZBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMDzrCIv75VkXt7LBQUFrydLv/u6OlHUUFaU/1Vxfv7b2U9g5yksLHyttrL0i1RVWXUyUTTQmKo6NzLUP3nx/Nk/+rrbr1ZXlvSWHTz4VvZz2DkShw69WZcsrx09d2b11o2xR6Mjpx///ONomJwYC3dv3wwTY7+G4cG+vxtqykdLDud/kG0GO0OipHD/yNCJ2cX52bC+thJWVx6GuZn7IXpeXV6K78evXg7nzw79k26uu9FQW/lltinkvsbaiubrv/0S1laXw9bm+rPYWF+NEyJKhNnpe2H6/lSIvutsaZpJpcqUQ+S+4oIDexuSFbOXL13IDPSZOAlWHi7Gg/9pEkQrQBTRu4W5mTB8qn8rVVX6SbYLyE2HDx9+tT5Z0X6qvycMn+iN6/1oto8SYHNjLbsSbITlzPODu7fDw8W5sJSJC+eGlysTxZ9nu4HcVFRw4P3ezqMLNzJlzcLcdDzwn16jgf8knqwC87MP4lUgKoHO/nAy1CRKvsl2A7mpuODbzzIz/+Ppe3eeDfaVzKY3XgHW18J29NvGeljPlD5RAjyN6ISoLllel+0GclNp4YGP+rrT29EGd3trM44oCaKNb3SNnjfWVuO6//7UZLwRju4nxq+F5vqqk9luIDdF5/9dR5tWrl75KSwvLTxbAaKjz2gPsL21kan758PdO7fC1OREmJwYD2eGBsP3Xa2b3e0t+7LdQO7qTDfub2uq2Th9aiBcHB2JZ/elhbn4v4Ao5mcehMmb43FcPH8m9Pd0hCMNNR3Z5pD7+o+l3+1KN9cdPVL/1/i1K/FJUFQGRcee0enPfxOgp6M1tDbWXs/Ly9udbQ47Q3dHy+CJvu5w68ZYXOtP3b4ZD/ooCaJrurH2UXMqOZBKli1WJ4o+zTaDneF4W9sbrc2pgUxZtHW8s+333s627XRj3cKJ3mOhpbF6OVVRsl5XXX6ooy21t6Wh5lJmFXgx2xR2jvb25nfaW5s+7OloeW9wcHB3Z0vTfFN99XpTbeXHBj7PneNd6X0NtZV/1iUSe0pLS18KIbyQfQXPBzM/z7Xu1tY9Zn4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4H9j165/AfjIptb38HVmAAAAAElFTkSuQmCC","",""],"frame_max":20,"frames":[[[7,0,-16,50,255,0,0]],[[7,0,-16,75,255,0,0]],[[7,0,-16,100,255,0,0]],[[7,0,-16,100,255,0,0]],[[7,0,-16,100,255,0,0]],[[7,0,-16,100,255,0,0]],[[7,0,-16,100,167,0,0]],[[7,0,-16,100,80,0,0]],[],[],[[7,0,-16,50,255,1,0]],[[7,0,-16,75,255,1,0]],[[7,0,-16,100,255,1,0]],[[7,0,-16,100,255,1,0]],[[7,0,-16,100,255,1,0]],[[7,0,-16,100,255,1,0]],[[7,0,-16,100,167,1,0]],[[7,0,-16,100,80,1,0]],[],[]]}

View File

@ -1 +0,0 @@
{"ratio":1,"se":"","bitmaps":["data:image/png;base64,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","","","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKASURBVHhe7drbS1RRFAdg/7e8TUGGk06ZmllERtFVhYzoQhj5IAo+FBNoQVFUDwUR9VBBT0Gg4qVSRJL+jp37mOU4KumTc873wWGY9/XbZ611dhUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs2uHAjnJpsCn/+QrZcnj4WDr2pFwCySQDINAEg9bbq8wWA1NuqyAWA1Ov7djp0jO/bdgDuLQ7YEFH5rn0/s1zIzeHIp1xZMa8Px+jScLg73xf653pDDEfhVZ0AUNmOju8NbZ9z4eDT2rJi7pk5EY5PNISzUy3h9lx36J09mbwRmh7XhvxoTWgY3iMAVL7WL7lQeFF+mre8r08KvbFYHfIPl38f1IT9/YqelLn+40IovDXskhFre/nY2ujnyYRY+APzV8OV2a6kl499f2xt/qefLw1Nz9/HJoiKEIs3GWJf14X82PZ6+ZHFOyWhiUPw6tN4v1oA2P3iQLuTITYWf/t4btuhgYo3tHAzeWs0PStfkUIqPPlVDGNLIyEWe9dkoaTQL053JC3TAft+0qj4cyjcmrsUzk21hvavuVB4WboJOj/dFpqfO/1JidjPr11/ds90Ju1N/lHNykBbLB1oXYYjVeLVhsPv/q0/k6F4cKW92ehr8FYX5aDixE3QasGvt1Gxd040JBug1o/lF+UgVTa7FbrZPSFIlc1uhbZ8yPnYRTY47ck0Wx8yTbsDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOxaVVW/AQK0iEut6BjHAAAAAElFTkSuQmCC","","","","","","","","","","",""],"frame_max":34,"frames":[[[0,8,-24,80,255,0,0],[3,8,-24,50,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,62,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,75,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,87,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,70,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,85,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,85,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,85,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,70,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,70,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,85,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,85,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]],[[0,8,-24,80,255,0,0],[3,8,-24,100,255,0,0]]]}

View File

@ -1 +0,0 @@
{"ratio":1,"se":{"1":"008-System08.opus"},"bitmaps":["data:image/png;base64,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","","","","","","","","","","","","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJsSURBVHhe7dhLTxRBEABgfqlPxATjK4ACLoggLxVEAUVwF0gWMQQvriYmXrhx58hf4ARHEii3JktiPOHNtN+XdKbT3XOr6qmaLgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAOA39Xo9ms1mNXLeWYayNRqNaLVasb+/HwcHB9XIea7lXucYlCcDfG9vLw4PD+Po6ChOTk6qkfNcyz1JQLHyls9APz4+jtPT0zg7O6tGznMt9/JM5ziUI+v8LHXyts+APz8/jws5z7XcyzN6AoqTzW7W+1ny5K3/p1zLvTyTZzuvQRkkAP+tHzsvq7Lmb0qgjwuPJAFlaG1Nx8/duarBvUwTvL44GEuzDyQAZfiyMRFf20lw2d+g7148jFfPeiUAZdj6MBLNlVrs1MeqAM9bPkudrPdz5DzXcm9p5n7Mjt6OqdotCUA5Vuf7I0fj7WA039eqOj+b3Rw5z735iTvxfLg7xh5fF/yUZXt1NN5M3YuFybvVM2/6rPMX288M/OlaTxX4o/1XY/JJtwSgPHnz766Px/RITxXkE0M3q6B/OnAtRvquVMkg+ClWlj+bS0NVL/Dt00zk79Hv2zPxee1pLLcb34uvQOc4lGdlri/WXg/E5vJw1RhvtBPi4ubPL0HnGJQr6/8M+hxz471V45u1f2cbypf/+bPkGR+8IfgBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD4F3R1/QLOSEVgXUy6EwAAAABJRU5ErkJggg==","",""],"frame_max":22,"frames":[[[0,8,-24,100,255,0,0],[12,8,-24,100,255,0,0]],[[0,8,-24,100,255,0,0],[12,8,-24,100,255,0,0]],[[0,8,-26,100,255,0,0],[12,8,-26,100,255,0,0]],[[0,8,-26,100,255,0,0],[12,8,-26,100,255,0,0]],[[0,8,-27,100,255,0,0],[12,8,-27,100,255,0,0]],[[0,8,-28,100,255,0,0],[12,8,-28,100,255,0,0]],[[0,8,-28,100,255,0,0],[12,8,-28,100,255,0,0]],[[0,8,-30,100,255,0,0],[12,8,-30,100,255,0,0]],[[0,8,-31,100,255,0,0],[12,8,-31,100,255,0,0]],[[0,8,-31,100,255,0,0],[12,8,-31,100,255,0,0]],[[0,8,-32,100,255,0,0],[12,8,-32,100,255,0,0]],[[0,8,-32,100,255,0,0],[12,8,-32,100,100,0,0]],[[0,8,-32,100,255,0,20],[12,8,-32,100,255,0,20]],[[0,8,-32,100,255,0,0],[12,8,-32,100,50,0,0]],[[0,8,-32,100,255,0,340],[12,8,-32,100,255,0,340]],[[0,8,-32,100,255,0,0],[12,8,-32,100,50,0,0]],[[0,8,-32,100,255,0,0],[12,8,-32,100,255,0,0]],[[0,8,-32,100,255,0,0],[12,8,-32,100,200,0,0]],[[0,8,-32,120,255,0,0],[12,8,-32,120,255,0,0]],[[0,8,-32,120,255,0,0],[12,8,-32,120,255,0,0]],[[0,8,-32,100,255,0,0],[12,8,-32,120,255,0,0]],[[0,8,-32,100,255,0,0],[12,8,-32,100,200,0,0]]],"pitch":{"1":100}}

View File

@ -1 +0,0 @@
{"ratio":1,"se":"","bitmaps":["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAOmSURBVHhe7dwxaBZnGAfwIAUXF5dOIh2yGElECkbJmc8lKgpCB6FgRQqiUh2FgssHtmgHpUMLoqCCBIoIIoJ20MGhoLWDRYWKKCiIQgriIEIHq/7lvqWcRNMLd1/8/eAhfPne93mW5y7v3b2XAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgNnQ7XbnFUWxcHz50iXrVq/YuKHT2TpRFN/0Ip/z+3yfcRlfToX+lUZeMTy8aGPx+eYdW7dMHujuu3v86M8vzp6efHnp4vmXVy7/+m9+5nN+n+8zLuMzz4FA3xpevHhhzuo7t311cfLEsX9u3bj+aurJo1fPn029M/J9xmV85mV+8pQpof1y1l67cuXg+vHxbs7qD+7fqWz26SLzMj95ks9fA1ovTZp1fJYxWdpUNfaHRvIkX/I6CGi1rNvTrFnbVzXzTCP5kjf5y1LQLkNDQwvWjo19e+HcmVqbvxfJm/ypU5aEdsjSZF1ndM3hH76bqmreuiL5U8dSiFbJvfsvv9h09K/bf1Y2bl2R/KmTemVpaN5EMTo622f/XqRO6pWloXl5klvXXZ/pItcCqVeWhubl4vTGH1crG7buSJ3UK0tD8yZWj31/787tyoatO1In9crS0DwHAB+1bFeY7TtAvUid1CtLQ/Oypfn3365UNmzdkTqpV5aG5mXXZnZwVjVs3ZE6qVeWhuZlt+bePbuuTbfd+f9G8qdO6pWloXmDg+vnZ1ky288Ckj91Uq8sDe3Q+ysw0/3/00XyOvvTWjkrZ22erQqPHz2obOKZRvK93Qj3Jr+zP62VrcrZpnDkx8NP6zoIkif5ktdWaFovTZqX2vOCe97vrWrq943MT57k0/z0jbfLoc7omt3bvz6f25Yfel2Q8ZmX+clj2UPf6XQ6n+QVxixd0shZxuTVxjT331NPKhs/D7kyLuMzL/OTp0wJ/ScNvGpk5NOcybOLc+e2LQ+rlkb530ATRfFTxmW8xmfOyRk9tzL/u28ozZ/9PWn8cijMLXmPt/fmWO+JcX5mra/5mfNyIZt1fZ7m5jog1wO5w5Mnu5qfOS8HwKGD+3f8curkzTR+rgfGln62zB0ePgpZAuVMn//wlu0MGh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAGDAy8BvQ2kjkQgG0HAAAAAElFTkSuQmCC","","","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAESSURBVHhe7dcxCsJAEAXQRQQbG2slWCTBBNJEjJ1pPYR3SeNZvKZmIAcQS/c92Ga3/fOZTQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwm2maVmV534zjuF6uIA8R/nNVDf2pfl6a461t223cLc/w36L5I/x9U7/n8xq67mAAyEasPdH8Ef5rvX90RbEzAGQjwh5rTzR/hN8/gOxofAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+FZKH8I8GiC75Ap3AAAAAElFTkSuQmCC","","","","","",""],"frame_max":19,"frames":[[[0,0,-8,80,255,0,0]],[[0,0,-12,90,255,0,0]],[[0,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[3,-6,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[3,-6,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[3,-6,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[3,-6,-16,100,255,0,0],[3,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[3,-6,-16,100,255,0,0],[3,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[3,-6,-16,100,255,0,0],[3,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[3,-6,-16,100,255,0,0],[3,0,-16,100,255,0,0],[3,6,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[3,-6,-16,100,255,0,0],[3,0,-16,100,255,0,0],[3,6,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[3,-6,-16,100,255,0,0],[3,0,-16,100,255,0,0],[3,6,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[3,-6,-16,100,255,0,0],[3,0,-16,100,255,0,0],[3,6,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[3,-6,-16,100,255,0,0],[3,0,-16,100,255,0,0],[3,6,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[3,-6,-16,100,255,0,0],[3,0,-16,100,255,0,0],[3,6,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[3,-6,-16,100,255,0,0],[3,0,-16,100,255,0,0],[3,6,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[3,-6,-16,100,255,0,0],[3,0,-16,100,255,0,0],[3,6,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[3,-6,-16,100,255,0,0],[3,0,-16,100,255,0,0],[3,6,-16,100,255,0,0]]]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
{"ratio":1,"se":{"1":"015-Jump01.opus"},"bitmaps":["","","","","","","","","","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJvSURBVHhe7doxa1NRFAfwIIKLS6sG2jShaCo0NZVSWrENzSbWQidFBzsoKCoObgWXIIji5tjZ0cHRwU0Htw5OfgJBNxcRF5V/eU9C8Avk9feDS8K7bzzn3nNOUgMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBDo9/vH223Lx/L52AwOFI8hurrdDrHV+ZnN+6un9rd6i1fu7i4WC+2oPpWu92ZvatTn748Pv3744Pmz+W5udViC6ot5c7G0sJ8EuDHk/afJMGFs42bKYWKV2C8JchT5qS0yedocHdbrYlHvcm9BH9Wvue9YhvGV4I9Jc7OSv1OTvn7a5PPR2v8NL/ZT/mTW2Bw6eSbJEWxDeMrwT3YnHpaBvf+w9avpTPN7TwvXjm4IdYXZs+/uj7zOfspgYb3YWzlBsiE5+2tme9JgKxnm9P7qfuHx53lJCg3QW4Io1Aqo9frTeTUf73T+Fo2uimFhsucBHySJUvwUzk54ZMEZSn07nbz2+gtAGMvAV2u4tE/OfGTBC9vND7kRy+NLpWSUz7NbFYmP/8beaa5TeBnz+lPZZTNbur8rIwyc8onGRLsxWtQTQnyNLblpCeNbkaaL7am36v1qbyDkqaY9yf4y0RIEtxbq2+PlkJQKQnwzO9TBl05d2I3J39++c3fGtwAHBoJ9NwGSYY0wml4nf4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA1VOr/QVCm7suZJuvmgAAAABJRU5ErkJggg=="],"frame_max":12,"frames":[[[9,0,-16,50,255,0,0]],[[9,0,-16,70,255,0,0]],[[9,0,-16,90,255,0,0]],[[9,0,-16,110,255,0,0]],[[9,0,-16,105,255,0,0]],[[9,0,-16,100,255,0,0]],[[9,0,-16,100,255,0,0]],[[9,0,-16,100,255,0,0]],[[9,0,-16,100,255,0,0]],[[9,0,-16,100,255,0,0]],[[9,0,-16,100,255,0,0]],[[9,0,-16,100,255,0,0]]],"pitch":{"1":100}}

View File

@ -1 +0,0 @@
{"ratio":1,"se":"","bitmaps":["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAOmSURBVHhe7dwxaBZnGAfwIAUXF5dOIh2yGElECkbJmc8lKgpCB6FgRQqiUh2FgssHtmgHpUMLoqCCBIoIIoJ20MGhoLWDRYWKKCiIQgriIEIHq/7lvqWcRNMLd1/8/eAhfPne93mW5y7v3b2XAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgNnQ7XbnFUWxcHz50iXrVq/YuKHT2TpRFN/0Ip/z+3yfcRlfToX+lUZeMTy8aGPx+eYdW7dMHujuu3v86M8vzp6efHnp4vmXVy7/+m9+5nN+n+8zLuMzz4FA3xpevHhhzuo7t311cfLEsX9u3bj+aurJo1fPn029M/J9xmV85mV+8pQpof1y1l67cuXg+vHxbs7qD+7fqWz26SLzMj95ks9fA1ovTZp1fJYxWdpUNfaHRvIkX/I6CGi1rNvTrFnbVzXzTCP5kjf5y1LQLkNDQwvWjo19e+HcmVqbvxfJm/ypU5aEdsjSZF1ndM3hH76bqmreuiL5U8dSiFbJvfsvv9h09K/bf1Y2bl2R/KmTemVpaN5EMTo622f/XqRO6pWloXl5klvXXZ/pItcCqVeWhubl4vTGH1crG7buSJ3UK0tD8yZWj31/787tyoatO1In9crS0DwHAB+1bFeY7TtAvUid1CtLQ/Oypfn3365UNmzdkTqpV5aG5mXXZnZwVjVs3ZE6qVeWhuZlt+bePbuuTbfd+f9G8qdO6pWloXmDg+vnZ1ky288Ckj91Uq8sDe3Q+ysw0/3/00XyOvvTWjkrZ22erQqPHz2obOKZRvK93Qj3Jr+zP62VrcrZpnDkx8NP6zoIkif5ktdWaFovTZqX2vOCe97vrWrq943MT57k0/z0jbfLoc7omt3bvz6f25Yfel2Q8ZmX+clj2UPf6XQ6n+QVxixd0shZxuTVxjT331NPKhs/D7kyLuMzL/OTp0wJ/ScNvGpk5NOcybOLc+e2LQ+rlkb530ATRfFTxmW8xmfOyRk9tzL/u28ozZ/9PWn8cijMLXmPt/fmWO+JcX5mra/5mfNyIZt1fZ7m5jog1wO5w5Mnu5qfOS8HwKGD+3f8curkzTR+rgfGln62zB0ePgpZAuVMn//wlu0MGh8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAGDAy8BvQ2kjkQgG0HAAAAAElFTkSuQmCC","","","","","","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJpSURBVHhe7dkxbhNBFAZgCyHRcANACsLZxI4CthGhQIpbKk7AJTgASpOWC3AAWk5AT5uWnjYtZZj/7ZggKgoaL98nrZKZ2XX13sybmRkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwD11cXNzZbrd3exP+Hwn89ZNHb1bH8y+b4+F974Zpy6z/dBgeJ+g3R4fXq6Ph62ox/Fgvho+bxfApf18sDs5fnRw865/ANJyvTxYJ8gR8C/5vLQku004iZDVI4O8SYbOYX0kCJmE+f30vT4K+gvxo/rkF+U3+Pzs9fZj+rAr99ZIVIuVRb8L+en54eJaAT6CPwT//Pj5tNWglUGb7jL0cHrztn8yWy+X9jPUm7K9seBPQPehr5k95U4Hf+1IC/b4SZDzJUj8A+67q/xbgmdXXx8O7JEESoFaEVu7crgzDTb3T2hKAyWjB/aGXQdf1JNCzGe7lT50E3R6LXtY3rT97h/oB2GfjjN8SILN8jj9bwI/1/5gI4+lPS5IW9DXeEiF9LsqYjD7jVwIkIeo+oLUrGcaxqwT+7nLMJphJqeBOoLdZvo4/67w/q0IvjcZy6Lrq/zb7Z6/QP4X9V0Ffl19tpu/lT54qf1p/zfy7ZGhJ8ufdAOy91PRJhF+XYL3uryRI/d/aGeuvw3TlbiBPZvrdnqAPAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf2U2+wlLJrmSzPwc7wAAAABJRU5ErkJggg==","","",""],"frame_max":30,"frames":[[[0,0,-8,80,255,0,0]],[[0,0,-12,90,255,0,0]],[[0,0,-16,100,255,0,0],[6,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[6,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[6,2,-20,85,255,1,0]],[[0,0,-16,100,255,0,0],[6,2,-20,85,255,1,0]],[[0,0,-16,100,255,0,0],[6,0,-70,100,255,1,180]],[[0,0,-16,100,255,0,0],[6,0,-70,100,255,1,180]],[[0,0,-16,100,255,0,0],[6,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[6,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[6,2,-20,85,255,1,0]],[[0,0,-16,100,255,0,0],[6,2,-20,85,255,1,0]],[[0,0,-16,100,255,0,0],[6,0,-70,100,255,1,180]],[[0,0,-16,100,255,0,0],[6,0,-70,100,255,1,180]],[[0,0,-16,100,255,0,0],[6,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[6,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[6,2,-20,85,255,1,0]],[[0,0,-16,100,255,0,0],[6,2,-20,85,255,1,0]],[[0,0,-16,100,255,0,0],[6,0,-70,100,255,1,180]],[[0,0,-16,100,255,0,0],[6,0,-70,100,255,1,180]],[[0,0,-16,100,255,0,0],[6,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[6,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[6,2,-20,85,255,1,0]],[[0,0,-16,100,255,0,0],[6,2,-20,85,255,1,0]],[[0,0,-16,100,255,0,0],[6,0,-70,100,255,1,180]],[[0,0,-16,100,255,0,0],[6,0,-70,100,255,1,180]],[[0,0,-16,100,255,0,0],[6,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[6,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[6,2,-20,85,160,1,0]],[[0,0,-16,100,255,0,0],[6,2,-30,50,160,1,0]]]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
{"ratio":1,"se":{"1":"008-System08.opus"},"bitmaps":["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAR9SURBVHhe7dxdiFRlGADgJSKiiy4iii6ii6gLiSAEdXfP7ODP7C72R5CVpG0ripk/dFFWF8uKyZoRRhhKmYm2hZWg4JZZaRa1Vmq2mX+lW0rRppZhEoquNu9yDJIRSced2eV54GWYOd/3vjfvd+acM+dMBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwMXQXFFxSe2QIVflspW31CZJfS5JxuQy1RPzMbnnNf++5/PYnh8X49Op0Hf1NH4mc32+we+d0DB2yZyZTT8uXrjg75XvtJ5Yt6at++MPV3fHa7yPz2N7jIvxMc9CoM/KZrNX12Uyd09sGPPeG0sWHe3YtOHkgV/3njry5/6zRmyPcTE+5sX8yJOmhPIXe+0RNTU33T506IyF8+cd+Wn39oLNfq6IeTE/8kQ+3waUvWjS+iQZMKnxobc/aFt5olBj/9+IPJEv8loElLWRlZU3NI6+b+n6j97vLtTM5xuRL/JG/rQUlJf6QYOuzJ+8Tl+zakVR9vxnRuSN/FEnLQnlIQ5Namuqhs59btbBQs1brIj8UcehEGUlrt0/cM9dL2/r2HiyUOMWKyJ/1Il6aWkovfyhyeC5c1r2H/6jq2DjFisif9SJemlpKL3aJGks1lWfc8Watvy5QKa6IS0NpZdvyKe/2dh+UQ9/TseWrz4/GfXS0lB6+W+AZ3Zt29IrC+CHHR2nol5aGkovv0eetWfX1oINW+zo/P67WAAtaWkovXxDNm/v2NQr3wBxJSjqpaWh9HJJMm3Dp2t7ZQG0f7KuO+qlpaH0ctXVd7YufvXoX4d+K9i0xYrIH3WiXloaSq++qurGJx6bvOlg176CjVusiPxRJ+qlpaH0stns5fnj8qlrV68q6k1wZ0bkjzpRLy0N5WF4ktw8bdKEz/Z17izYvBcakTfyR520JJSPUQMGXDaipmrk87NndnX93Fmwic83Il/kjfxRJy0J5SVuVa5LkrEvzX3292ItgsgT+SKvW6Epe9GktZmq+5ufenL3t5u/uKBLozE/8kQ+zU+fESepuUym5tHxjStaF71ybO/uHQUb/GwR42NezI88Tnrpc/JNe2n8tcmIJBk9Zfy4dxfMe+Fw/A1KnMweOvBLwcZvX7+ue/6Lcw/H+JgX8yNPmhL6nmjgukzmuniSK+7inNjw4N6tX3/5n0Oj+IHrrdcXH88lybx84w+P8Rqfficeap8+dUr7jq2b/10A8ZDL8jeXHs8vjqZhwwZfmw6F/qXnueFMpiouZ57+g6z4ZXfZkteO1WUzTbHXT4dC/xPX7x8eNWrch20rju7bs/NUnA/Mbm7qrE2SCbnKymvSYdA/xZWcluamR5Yva93eMqNpQ22m+vHhNTW33TFw4BXpEOi/4hAojvHrk+TWuJktFkS6CQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHpLRcU/XNmNGxXfhVQAAAAASUVORK5CYII=","","","","","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAQBSURBVHhe7dnLT5RXGAdg3bpwoe7cmLhx58al/hGuFURUxiJ4o7a1jYyiEuQqoCKKAo3X1kvxQmJE0VYRLBVQoI6Co0m7M9FoYtIEPf2+cTR22e7GPk/y5mTO+easfufM+2WmAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADwr/zZemHGkyMXFz5t716WPtxVNrH/7MqHTWcWZJcz0u0XFqQ7Lq9MH7lYNtlydlmq7tTCwWTrjOwy5KY/Os/NTh+7XJY+3v0g3X7p9cShn95ONJ9+9ajxdE80Lo2fSXdcXPqs81LP087Lrybaut5ONJ15nao6/mB0e3vZ+DfNszMbQa4JIUx/2n4pLwr2i6dHL4bJlnPh8d7TIVVzIqRqT4bH9SfHJlvOr5o8fGHsSVtXmDx4Ljxq/CE83HM8jO1oD/e/bnkxvHFfXpgWpme3hNyRbjk/78nhrquTh86HiaYfM8Eer+gIY9vbw/jOzjBe+f3Uw9oTz1INp6ZS9aei9WOZ+dHyI1H4W8PQxuYwWLr36tCGhnnZLSF3pOpOL001nnqTqjsZft/VGR58ezjc39IS1cHwYOuhMLqtLYxHN318KEbLj75f/+pgGN68P9xb3xR+LWkIA2ur3wwkqjOtEuSUscrOvLGKjqmxZBTuKPD3Nx8II5v2va+yA5mDEAc+U1+2ZOZGolt/KA7/uobQv7Ym3C7aPXV7TWVedkvIHSNbDy0Z2XLweRzs4Sj0w3G4NzRnxszn6KYf3hRXvLYv0/IMbWgKg9HN3/9FTbi1pjLcXFXx/Nbq3UuyW0LuGN1UN2uotPHMb6V7w4eKW5uPh+CTioN/b31j9uavDr+s3h1urNwRbhQkz/StSs7Kbgm5ZWBd/aK7xbVX7hRXv7tbXJe53eOgx4H/NPzx4bi7rj7cSeyJwr8rXCtIvru+YtuV3sLkouxWkJsGS2oX9CWqW/vW1rz8cAg+/BrENVgShT+av11UFW4W7gy9+cmXPXnlrb0rkv/4swxyVn9p48z+RFVJX6JmdKC4Nmp16jMHIR4zL7tRv3+jsCJcXV4+2pO/raR7WXJm9qvw+bhTVLW4P7GneyB6yY1fdPsSVR/7/WvLy7t785KLs4/C5+nWmur5txN7zsYtz89Rv99bsCNcz9929lr+d/Ozj8DnrS9RN/fWmsq23sKKv3oLkm09+bvmZpfg/2GwqHbOzdW7CnqLknOyUwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD8B9Om/Q0eNy8icv8m6wAAAABJRU5ErkJggg==","","","",""],"frame_max":20,"frames":[[[0,0,-8,80,255,0,0]],[[0,0,-12,90,255,0,0]],[[0,0,-16,100,255,0,0],[5,0,-24,75,255,0,0]],[[0,0,-16,100,255,0,0],[5,0,-21,83,255,0,0]],[[0,0,-16,100,255,0,0],[5,0,-18,91,255,0,0]],[[0,0,-16,100,255,0,0],[5,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[5,0,-20,87,255,0,0]],[[0,0,-16,100,255,0,0],[5,0,-24,75,255,0,0]],[[0,0,-16,100,255,0,0],[5,0,-20,87,255,0,0]],[[0,0,-16,100,255,0,0],[5,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[5,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[5,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[5,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[5,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[5,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[5,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[5,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[5,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[5,0,-16,100,255,0,0]],[[0,0,-16,100,255,0,0],[5,0,-16,100,255,0,0]]],"pitch":{"1":100}}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1 +0,0 @@
{"ratio":1,"se":"","bitmaps":["","","","","","","","","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAOVSURBVHhe7ddNb1VVFAZgsOjAiROY+Qv4B+0uQigQFAzEhKgDE9RoggOGapwoAxPiLzDGjwESbEHEolgELFgkXEQqNSCfQq0FS4vQlq8LvWe57+UMcOLU5Pg8ycrdu9l79q7VfWYBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwL/rK4rl7xfFinIL/x/9EXM+azQGN840Bt/O6/LPUG0RMTtX276ieGlzXmxoRDxfL17My4fKI1BdOehzRiPm7m00ft+eN+/lBlhbbwzviXhME1BpzYDnerQW8c6RvGjW9twAb9Uj1t+YeTNvHymPQvXkgLeNFMXjPzQa4xfz5mqus7k+uhexbrL+5+apmJu3s8vjUC053HN2FsXrx/JiPNft8ndbboD1k3fjuSuT6/PWM4hqyuF+eFOjceZEXkznyi+fGMvVPRPx2mQ9VoxcPZm3/gNQTa/eK575MCf8VK7m9G+ayPVxboCXr96OpcNjseD4b6vK41Atq+80DmzMH71Hc+iv57qVq9kM796NePbKjVh85lJ0DJ7aXx6H6lg+Vcx/6kbEK/m935ND33wGNcP/aZGn/82IlZcno/PX4Ui1oejce3h+eQ2qYen47Q1PXp+JVXci3shPnk9y+D/I9UJuiFXX7kbXhfFIg2cjDfwUaffAhvIaVEPX6FRt2ZVb0WyCp/MHwOr87Fmdm2HlVBFLRqdiwemRSEdOROo/HO27+o+W16AaFg1PTHddmowl4zdj2UQ9ll+71/rtujQVC89ffmD6H4jUu7teXoNq6Dz3x/TCi2Ox6OJ4LBqZiMUjf7XWT5wdjTSUw3/oeKR9ByN9uSfat341XV6Damg/eWEgNT9yH6yh85GOnYp08Occ/kORdvVH+vybaN+yY6C8BtXQcfzc2jR4Oj91ch09Gan2y/3g9x+5P/l37ou0oy9ST290bPlibXkNqmFNT7S114YGWqE/8GPrYzftzsFvTv3ebyNt/TpSd29r+q/p6Wkrr0F1dH5/bF767nDtH8HPT560dWcr/GnTtlpnd/e88jhUT3O6d/T1r+vY0be/Ff785GlO/Y7N29eZ/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/jVmz/gak+0pbo61EDwAAAABJRU5ErkJggg==","","","","","",""],"frame_max":22,"frames":[[[8,8,-16,60,130,0,0]],[[8,8,-16,60,160,0,0]],[[8,8,-16,60,190,0,0]],[[8,8,-16,60,225,0,0]],[[8,8,-8,60,235,0,0]],[[8,8,-8,60,245,0,0]],[[8,8,-8,60,255,0,0]],[[8,8,0,60,255,0,0]],[[8,8,0,60,255,0,0]],[[8,8,0,60,255,0,0]],[[8,8,0,60,255,0,0]],[[8,8,0,60,255,0,0]],[[8,8,0,60,255,0,0]],[[8,8,0,60,255,0,0]],[[8,8,0,60,255,0,0]],[[8,8,0,60,255,0,0]],[[8,8,0,60,210,0,0]],[[8,8,0,60,160,0,0]],[[8,8,0,60,120,0,0]],[[8,8,8,60,100,0,0]],[[8,8,8,60,50,0,0]],[[8,8,8,60,20,0,0]]]}

View File

@ -1 +0,0 @@
{"ratio":1,"se":"","bitmaps":["","","","","","","","","data:image/png;base64,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","","","","","",""],"frame_max":22,"frames":[[[8,0,0,50,255,0,0]],[[8,0,-2,60,255,0,0]],[[8,0,-4,80,255,0,0]],[[8,0,-6,100,255,0,0]],[[8,0,-8,100,255,0,0]],[[8,0,-4,100,255,0,0]],[[8,0,0,100,255,0,0]],[[8,0,0,100,255,0,0]],[[8,0,-4,100,255,0,0]],[[8,0,-8,100,255,0,0]],[[8,0,-4,90,255,0,0]],[[8,0,0,90,255,0,0]],[[8,0,0,100,255,0,0]],[[8,0,-4,100,255,0,0]],[[8,0,-8,100,255,0,0]],[[8,0,-8,100,255,0,0]],[[8,0,-8,100,255,0,0]],[],[[8,0,-8,80,255,0,0]],[[8,0,-8,80,255,0,0]],[[8,0,-8,100,255,0,0]],[[8,0,-8,100,255,0,0]]]}

View File

@ -1 +0,0 @@
{"ratio":2,"bitmaps":["data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAD6SURBVHhe7dQ9SsVAFAXg+MNTeAhaWCrWLsHGUlCwsHMXgo2NjZ31a1yBVtaCrSvQ1i24hSSegbuEBAS/Dw7M3JnqZEgHAAAAAAAAAAAAAP/NOI5rySI5GobhNDlJ9uuYqaXo9RR83Pf9U/KevGV/kxwkW+2D1FWmkmKXKfYuZf8k38lrZpeZHSaLusaU2ktOyRcp+zP5Sl6yv858t53VNaaWcrdT9mPSXvpHskrxO3XMnNpvJYW3F/+Q9XmNmVv7raT055R+n/VejZlbyt5M6VfJbdYbNWZureyUvkzOagQAAAAAAAAAAAAAAAAAAAAAAAAAAADwd3XdL135q9NaPZ6+AAAAAElFTkSuQmCC","data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAJ4SURBVHhe7de7alRRFMbx3DSIgqiNIBJsBUUESyutBAsLO9/CWtL4BtorlgFBRGIEEQwxMSBiMWouGo2TCyaTC0lmJjM5ey+/HVfeYPZB8P+DNefsS/WdxZ5zugAAAAAAAAAAAAAAAAAAAID/lZkdVnX7ELmkkA+C1rU3xngthHBf1xsa9+1vQmcdhK7qUdAXFPh4URSjur+r6vdt6DQP/ZDqkkL/ZlZs6jqh8WnfghzU1UcOQlclmop3fBk5KPA+hXxRYb9LiWtsujR0Oe5b0Gke+hUF/TaFLtHrh29BDgr9jEJOoReqeur2RPfTvgWdpnzTG8yAQm6oYgq8uWfWLvaD1y+vkNko3G6FPJ9CT7ZbZpVVs9m1/Ydw3bchB3X9+dTxqVLwk4tmH1T1VnjlW5CDGj11/XDq+HTgfFwye/rVbKpmNjzDx1N2Cn8jhb+qF8mRObOX381m1sPww4od8y3IQZn3KPzdogjNyorZ8xmzaXX9cjOe8y3IxcNvNtq2OV41ezFrttYMv30ZOSn8dOavqBrjC3+PnfVGvOfLyE0P4HH6qhr9Zfbmp7p/Lg74EnJT+LdbeyGk4F/PhfhgMp7yJeSm9/yTavza2HyIYwuhPTRkvb6E3NT5fQr/2cRS2HhfDfVB/Qn7EnJLf7rq/pvTq6H9uRa2fBplSOGrTixvhdrUWqj7NMqi8HsV/shsLez5FMq004qXq+th14cok879/upO+FKp2GGfQll09PSsNOLVxXq85VMoUzr7F7fDIx+iTOnNR8fP2UGOnvKl8NPx8+RTPOpTKFt6CH4LAAAAAAAAAAAAAAAAAAAAAAAAAACAf1RX1x9x4x3SPdhnTAAAAABJRU5ErkJggg==","","","","","","","","","","","","","","","","","",""],"frame_max":5,"frames":[[[0,8,32,30,100]],[[0,-16,32,50,130]],[[0,-24,40,80,150]],[[0,-48,24,90,180],[1,-8,40,100,255]],[[0,-56,24,100,200],[1,-8,24,100,255]]]}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

View File

@ -21,26 +21,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"magictower.png" "magictower.png"
], ],
"animates": [ "animates": [
"amazed",
"angry",
"angry2",
"bulb",
"emm",
"explosion1",
"explosion2",
"explosion3",
"explosion4",
"fire",
"focus",
"fret",
"hand", "hand",
"ice",
"jianji",
"luv",
"magicAtk",
"stone",
"sweat",
"sweat2",
"sword", "sword",
"zone" "zone"
], ],
@ -48,27 +29,13 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"bgm.opus" "bgm.opus"
], ],
"sounds": [ "sounds": [
"008-System08.opus",
"015-Jump01.opus",
"050-Explosion03.opus",
"051-Explosion04.opus",
"087-Action02.opus",
"094-Attack06.opus",
"118-Fire02.opus",
"119-Fire03.opus",
"120-Ice01.opus",
"arrow.opus",
"attack.opus", "attack.opus",
"bomb.opus", "bomb.opus",
"cancel.opus", "cancel.opus",
"centerFly.opus", "centerFly.opus",
"chapter.opus",
"confirm.opus", "confirm.opus",
"cursor.opus", "cursor.opus",
"danger.opus",
"door.opus", "door.opus",
"drink.opus",
"electron.opus",
"equip.opus", "equip.opus",
"error.opus", "error.opus",
"floor.opus", "floor.opus",
@ -78,15 +45,10 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"jump.opus", "jump.opus",
"load.opus", "load.opus",
"open_ui.opus", "open_ui.opus",
"paper.opus",
"pickaxe.opus", "pickaxe.opus",
"quake.opus",
"recovery.opus", "recovery.opus",
"save.opus", "save.opus",
"shake.opus",
"shop.opus", "shop.opus",
"thunder.opus",
"tree.opus",
"zone.opus" "zone.opus"
], ],
"fonts": [], "fonts": [],
@ -227,129 +189,7 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"startCanvas": [ "startCanvas": [
{ {
"type": "comment", "type": "comment",
"text": "在这里可以用事件来自定义绘制标题界面的背景图等" "text": "这个事件现在已经没有用了,修改标题界面请直接修改标题组件,可以参考说明文档。"
},
{
"type": "comment",
"text": "也可以直接切换到其他楼层(比如某个开始剧情楼层)进行操作。"
},
{
"type": "showImage",
"code": 1,
"image": "bg.jpg",
"loc": [
0,
0
],
"opacity": 1,
"time": 0
},
{
"type": "while",
"condition": "1",
"data": [
{
"type": "comment",
"text": "给用户提供选择项这里简单的使用了choices事件"
},
{
"type": "comment",
"text": "也可以贴按钮图然后使用等待操作来完成"
},
{
"type": "choices",
"choices": [
{
"text": "开始游戏",
"action": [
{
"type": "comment",
"text": "检查bgm状态下同"
},
{
"type": "function",
"function": "function(){\ncore.control.checkBgm()\n}"
},
{
"type": "if",
"condition": "main.levelChoose.length == 0",
"true": [
{
"type": "comment",
"text": "直接开始游戏"
}
],
"false": [
{
"type": "comment",
"text": "动态生成难度选择项"
},
{
"type": "function",
"function": "function(){\nvar choices = [];\nmain.levelChoose.forEach(function (one) {\n\tchoices.push({\n\t\t\"text\": one.title || '',\n\t\t\"action\": [\n\t\t\t{ \"type\": \"function\", \"function\": \"function() { core.status.hard = '\" + (one.name || '') + \"'; }\" }\n\t\t]\n\t});\n})\ncore.insertAction({ \"type\": \"choices\", \"choices\": choices });\n}"
}
]
},
{
"type": "hideImage",
"code": 1,
"time": 0
},
{
"type": "comment",
"text": "成功选择难度"
},
{
"type": "break"
}
]
},
{
"text": "读取存档",
"action": [
{
"type": "function",
"function": "function(){\ncore.control.checkBgm()\n}"
},
{
"type": "comment",
"text": "简单的使用“呼出读档界面”来处理"
},
{
"type": "callLoad"
}
]
},
{
"text": "回放录像",
"action": [
{
"type": "function",
"function": "function(){\ncore.control.checkBgm()\n}"
},
{
"type": "comment",
"text": "这段代码会弹框选择录像文件"
},
{
"type": "if",
"condition": "(!core.isReplaying())",
"true": [
{
"type": "function",
"function": "function(){\ncore.chooseReplayFile()\n}"
}
]
}
]
}
]
}
]
},
{
"type": "comment",
"text": "接下来会执行startText中的事件"
} }
], ],
"startText": [ "startText": [
@ -361,6 +201,10 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"type": "text", "type": "text",
"text": "同时 2.B 样板也新增了很多接口,在造塔时可以提供非常大的帮助!" "text": "同时 2.B 样板也新增了很多接口,在造塔时可以提供非常大的帮助!"
}, },
{
"type": "text",
"text": "不过由于重构并不简单,有一些 2.x 有的功能在 2.B 中暂时被移除,将会在 2.B 的后续更新中重新添加回来。"
},
{ {
"type": "text", "type": "text",
"text": "这里是开场剧情,可以在编辑器全塔属性中修改,试着修改一下吧!" "text": "这里是开场剧情,可以在编辑器全塔属性中修改,试着修改一下吧!"
@ -398,105 +242,36 @@ var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d =
"levelUp": [ "levelUp": [
{ {
"need": "0", "need": "0",
"title": "原始人", "title": "萌新一段",
"action": []
},
{
"need": "3000",
"title": "野蛮人",
"clear": true,
"action": [ "action": [
{ {
"type": "setValue", "type": "comment",
"name": "status:atk", "text": "这里的等级需要在全塔属性处开启升级功能才有效"
"operator": "+=",
"value": "10"
},
{
"type": "setValue",
"name": "status:def",
"operator": "+=",
"value": "10"
},
{
"type": "setValue",
"name": "status:mdef",
"operator": "+=",
"value": "200"
},
"恭喜升级!攻防+10智慧+200",
"行走图改变!",
{
"type": "setHeroIcon",
"name": "hero2.png"
} }
] ]
}, },
{ {
"need": "10000", "need": "20",
"title": "低级智人", "title": "萌新二段",
"clear": true, "clear": true,
"action": [ "action": [
{
"type": "setValue",
"name": "status:mdef",
"operator": "+=",
"value": "1000"
},
"恭喜升级!智慧+1000"
]
},
{
"need": "25000",
"title": "中级智人",
"clear": true,
"action": [
{
"type": "setValue",
"name": "status:mdef",
"operator": "+=",
"value": "2000"
},
{ {
"type": "setValue", "type": "setValue",
"name": "status:atk", "name": "status:atk",
"operator": "+=", "operator": "+=",
"value": "25" "value": "10"
}, }
{
"type": "setValue",
"name": "status:def",
"operator": "+=",
"value": "25"
},
"恭喜升级!攻防+25智慧+2000"
] ]
}, },
{ {
"need": "100000", "need": "100",
"title": "高级智人", "title": "萌新三段",
"clear": true, "clear": true,
"action": [ "action": [
{ {
"type": "setValue", "type": "comment",
"name": "status:mdef", "text": "开启扣除经验时,升级后经验归零并升级,这样就不用计算先前升级所需经验了,只需要填写当前等级升级所需经验即可。"
"operator": "+=", }
"value": "10000"
},
{
"type": "setValue",
"name": "status:atk",
"operator": "+=",
"value": "250"
},
{
"type": "setValue",
"name": "status:def",
"operator": "+=",
"value": "250"
},
"恭喜升级!攻防+250智慧+10000",
"这是这个游戏的最后一级,第三章的玩法会改变,不再设置等级"
] ]
} }
] ]

View File

@ -57,6 +57,10 @@ main.floors.sample0=
{ {
"type": "text", "type": "text",
"text": "除此之外还有一些因为各种原因在 2.B 中暂时删除的功能,将会在之后的版本中逐步重新添加。" "text": "除此之外还有一些因为各种原因在 2.B 中暂时删除的功能,将会在之后的版本中逐步重新添加。"
},
{
"type": "text",
"text": "由于一些原因,当前版本中隐藏图块的动画也无法显示,将会在 2.B.1 中修复。"
} }
], ],
"events": { "events": {

View File

@ -29,8 +29,8 @@ main.floors.sample1=
[151, 0,151,151, 0, 87, 0,152,152,152, 85,153,153], [151, 0,151,151, 0, 87, 0,152,152,152, 85,153,153],
[ 0, 0, 0,151, 0, 0, 0,152,152,221, 0,221,153], [ 0, 0, 0,151, 0, 0, 0,152,152,221, 0,221,153],
[ 0, 0, 0,151, 0, 0, 0,121, 0, 0, 0, 0,153], [ 0, 0, 0,151, 0, 0, 0,121, 0, 0, 0, 0,153],
[151, 0,151,151, 0,153,153,153,153,153,153,153,153], [151, 0,151,151, 81,153,153,153,153,153,153,153,153],
[ 0, 0, 0, 0, 0, 0, 0,164, 0, 0,163, 0, 0], [ 0, 0, 0,121, 0, 0, 0,164, 0, 0,163, 0, 0],
[ 1, 1, 1, 1, 0, 20, 0, 0, 0,162, 0,161, 0], [ 1, 1, 1, 1, 0, 20, 0, 0, 0,162, 0,161, 0],
[ 1, 0,123, 1, 0, 20,124, 0,121, 0,122, 0,126], [ 1, 0,123, 1, 0, 20,124, 0,121, 0,122, 0,126],
[ 1, 0, 0, 1, 88, 20, 0, 0, 0, 0, 0, 0, 0] [ 1, 0, 0, 1, 88, 20, 0, 0, 0, 0, 0, 0, 0]
@ -816,6 +816,55 @@ main.floors.sample1=
"icon": "recluse", "icon": "recluse",
"text": "具体可参见样板中本事件的写法。" "text": "具体可参见样板中本事件的写法。"
} }
],
"4,8": {
"trigger": "action",
"enable": true,
"noPass": null,
"displayDamage": true,
"opacity": 1,
"filter": {
"blur": 0,
"hue": 0,
"grayscale": 0,
"invert": false,
"shadow": 0
},
"data": [
{
"type": "text",
"title": "样板提示",
"text": "在 2.B 中新增了自定义自动元件连接方式的功能,可以让自动元件与另一种图块之间实现连接效果,就像这里的门一样,左右的自动元件会与门连接起来,对野外地图有一定的帮助。"
},
{
"type": "text",
"title": "样板提示",
"text": "你可以修改自动元件的连接属性来修改此行为,参考样板的自动元件写法。"
},
{
"type": "openDoor"
}
]
},
"3,9": [
{
"type": "text",
"title": "老人",
"icon": "man",
"text": "在 2.B 中还新增了热重载功能,它允许你修改怪物属性、地图等内容时自动更新,而不需要刷新游戏页面。"
},
{
"type": "text",
"title": "老人",
"icon": "man",
"text": "包括地图事件也可以热重载,如果你编写好事件并保存,那么游戏内就可以立刻起效果。"
},
{
"type": "text",
"title": "老人",
"icon": "man",
"text": "试着给我添加一个隐藏事件让我消失吧!"
}
] ]
}, },
"changeFloor": { "changeFloor": {

Binary file not shown.

Binary file not shown.

View File

@ -389,7 +389,7 @@ var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a =
"cls": "tools", "cls": "tools",
"name": "中心对称飞行器", "name": "中心对称飞行器",
"text": "可以飞向当前楼层中心对称的位置", "text": "可以飞向当前楼层中心对称的位置",
"useItemEffect": "core.playSound('centerFly.mp3');\ncore.clearMap('hero');\ncore.setHeroLoc('x', core.bigmap.width - 1 - core.getHeroLoc('x'));\ncore.setHeroLoc('y', core.bigmap.height - 1 - core.getHeroLoc('y'));\ncore.drawHero();\ncore.drawTip(core.material.items[itemId].name + '使用成功');", "useItemEffect": "core.playSound('centerFly.opus');\ncore.clearMap('hero');\ncore.setHeroLoc('x', core.bigmap.width - 1 - core.getHeroLoc('x'));\ncore.setHeroLoc('y', core.bigmap.height - 1 - core.getHeroLoc('y'));\ncore.drawHero();\ncore.drawTip(core.material.items[itemId].name + '使用成功');",
"canUseItemEffect": "(function () {\n\tvar toX = core.bigmap.width - 1 - core.getHeroLoc('x'),\n\t\ttoY = core.bigmap.height - 1 - core.getHeroLoc('y');\n\tvar id = core.getBlockId(toX, toY);\n\treturn id == null;\n})();" "canUseItemEffect": "(function () {\n\tvar toX = core.bigmap.width - 1 - core.getHeroLoc('x'),\n\t\ttoY = core.bigmap.height - 1 - core.getHeroLoc('y');\n\tvar id = core.getBlockId(toX, toY);\n\treturn id == null;\n})();"
}, },
"upFly": { "upFly": {

View File

@ -1,11 +1,11 @@
var maps_90f36752_8815_4be8_b32b_d7fad1d0542e = var maps_90f36752_8815_4be8_b32b_d7fad1d0542e =
{ {
"1": {"cls":"animates","id":"yellowWall","canBreak":true,"animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{}}}, "1": {"cls":"animates","id":"yellowWall","canBreak":true,"animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{}}},
"2": {"cls":"animates","id":"whiteWall","canBreak":true,"animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{}}}, "2": {"cls":"animates","id":"whiteWall","canBreak":true,"animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{}}},
"3": {"cls":"animates","id":"blueWall","canBreak":true,"animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{}}}, "3": {"cls":"animates","id":"blueWall","canBreak":true,"animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{}}},
"4": {"cls":"animates","id":"star","name":"星空"}, "4": {"cls":"animates","id":"star","name":"星空"},
"5": {"cls":"animates","id":"lava","name":"岩浆"}, "5": {"cls":"animates","id":"lava","name":"岩浆"},
"6": {"cls":"animates","id":"ice","doorInfo":{"time":160,"openSound":"破冰镐","closeSound":"door.mp3","keys":{"icePickaxe":1}},"animate":1}, "6": {"cls":"animates","id":"ice","doorInfo":{"time":160,"openSound":"破冰镐","closeSound":"door.opus","keys":{"icePickaxe":1}},"animate":1},
"7": {"cls":"terrains","id":"blueShopLeft"}, "7": {"cls":"terrains","id":"blueShopLeft"},
"8": {"cls":"terrains","id":"blueShopRight"}, "8": {"cls":"terrains","id":"blueShopRight"},
"9": {"cls":"terrains","id":"pinkShopLeft"}, "9": {"cls":"terrains","id":"pinkShopLeft"},
@ -68,12 +68,12 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e =
"71": {"cls":"items","id":"shield0"}, "71": {"cls":"items","id":"shield0"},
"72": {"cls":"items","id":"skill1"}, "72": {"cls":"items","id":"skill1"},
"73": {"cls":"items","id":"wand"}, "73": {"cls":"items","id":"wand"},
"81": {"cls":"animates","id":"yellowDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"yellowKey":1}},"name":"黄门"}, "81": {"cls":"animates","id":"yellowDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"yellowKey":1}},"name":"黄门"},
"82": {"cls":"animates","id":"blueDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"blueKey":1}},"name":"蓝门"}, "82": {"cls":"animates","id":"blueDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"blueKey":1}},"name":"蓝门"},
"83": {"cls":"animates","id":"redDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"redKey":1}},"name":"红门"}, "83": {"cls":"animates","id":"redDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"redKey":1}},"name":"红门"},
"84": {"cls":"animates","id":"greenDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"greenKey":1}},"name":"绿门"}, "84": {"cls":"animates","id":"greenDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"greenKey":1}},"name":"绿门"},
"85": {"cls":"animates","id":"specialDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"specialKey":1}},"name":"机关门"}, "85": {"cls":"animates","id":"specialDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"specialKey":1}},"name":"机关门"},
"86": {"cls":"animates","id":"steelDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"steelKey":1}},"name":"铁门"}, "86": {"cls":"animates","id":"steelDoor","trigger":"openDoor","animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"steelKey":1}},"name":"铁门"},
"87": {"cls":"terrains","id":"upFloor","canPass":true}, "87": {"cls":"terrains","id":"upFloor","canPass":true},
"88": {"cls":"terrains","id":"downFloor","canPass":true}, "88": {"cls":"terrains","id":"downFloor","canPass":true},
"89": {"cls":"animates","id":"portal","canPass":true}, "89": {"cls":"animates","id":"portal","canPass":true},
@ -86,7 +86,7 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e =
"102": {"cls":"animates","id":"crystalBottom"}, "102": {"cls":"animates","id":"crystalBottom"},
"103": {"cls":"animates","id":"fire"}, "103": {"cls":"animates","id":"fire"},
"104": {"cls":"animates","id":"switch"}, "104": {"cls":"animates","id":"switch"},
"109": {"cls":"animates","id":"magentaWall","canBreak":true,"animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{}}}, "109": {"cls":"animates","id":"magentaWall","canBreak":true,"animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{}}},
"121": {"cls":"npcs","id":"man"}, "121": {"cls":"npcs","id":"man"},
"122": {"cls":"npcs","id":"trader"}, "122": {"cls":"npcs","id":"trader"},
"123": {"cls":"npcs","id":"thief"}, "123": {"cls":"npcs","id":"thief"},
@ -105,9 +105,9 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e =
"136": {"cls":"npc48","id":"npc3","faceIds":{"down":"npc0","left":"npc1","right":"npc2","up":"npc3"},"animate":1}, "136": {"cls":"npc48","id":"npc3","faceIds":{"down":"npc0","left":"npc1","right":"npc2","up":"npc3"},"animate":1},
"137": {"cls":"npcs","id":"greenMan"}, "137": {"cls":"npcs","id":"greenMan"},
"138": {"cls":"npcs","id":"blueTrader"}, "138": {"cls":"npcs","id":"blueTrader"},
"151": {"cls":"autotile","id":"autotile1"}, "151": {"cls":"autotile","id":"autotile1","autotileConnection":["yellowDoor"]},
"152": {"cls":"autotile","id":"autotile2"}, "152": {"cls":"autotile","id":"autotile2"},
"153": {"cls":"autotile","id":"autotile3"}, "153": {"cls":"autotile","id":"autotile3","autotileConnection":["yellowDoor"]},
"161": {"cls":"terrains","id":"arrowUp","canPass":true,"cannotOut":["left","right","down"],"cannotIn":["up"]}, "161": {"cls":"terrains","id":"arrowUp","canPass":true,"cannotOut":["left","right","down"],"cannotIn":["up"]},
"162": {"cls":"terrains","id":"arrowDown","canPass":true,"cannotOut":["left","right","up"],"cannotIn":["down"]}, "162": {"cls":"terrains","id":"arrowDown","canPass":true,"cannotOut":["left","right","up"],"cannotIn":["down"]},
"163": {"cls":"terrains","id":"arrowLeft","canPass":true,"cannotOut":["up","down","right"],"cannotIn":["left"]}, "163": {"cls":"terrains","id":"arrowLeft","canPass":true,"cannotOut":["up","down","right"],"cannotIn":["left"]},
@ -212,12 +212,12 @@ var maps_90f36752_8815_4be8_b32b_d7fad1d0542e =
"316": {"cls":"terrains","id":"sWallTLR","name":"薄墙-上左右","cannotOut":["up","left","right"],"cannotIn":["up","left","right"]}, "316": {"cls":"terrains","id":"sWallTLR","name":"薄墙-上左右","cannotOut":["up","left","right"],"cannotIn":["up","left","right"]},
"317": {"cls":"terrains","id":"sWallTBR","name":"薄墙-上下右","cannotOut":["up","down","right"],"cannotIn":["up","down","right"]}, "317": {"cls":"terrains","id":"sWallTBR","name":"薄墙-上下右","cannotOut":["up","down","right"],"cannotIn":["up","down","right"]},
"318": {"cls":"terrains","id":"sWallTBL","name":"薄墙-上下左","cannotOut":["up","down","left"],"cannotIn":["up","down","left"]}, "318": {"cls":"terrains","id":"sWallTBL","name":"薄墙-上下左","cannotOut":["up","down","left"],"cannotIn":["up","down","left"]},
"319": {"cls":"npc48","id":"tallYellowDoor","trigger":"openDoor","name":"高黄门","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"yellowKey":1}}}, "319": {"cls":"npc48","id":"tallYellowDoor","trigger":"openDoor","name":"高黄门","animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"yellowKey":1}}},
"320": {"cls":"npc48","id":"tallBlueDoor","trigger":"openDoor","name":"高蓝门","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"blueKey":1}}}, "320": {"cls":"npc48","id":"tallBlueDoor","trigger":"openDoor","name":"高蓝门","animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"blueKey":1}}},
"321": {"cls":"npc48","id":"tallRedDoor","trigger":"openDoor","name":"高红门","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"redKey":1}}}, "321": {"cls":"npc48","id":"tallRedDoor","trigger":"openDoor","name":"高红门","animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"redKey":1}}},
"322": {"cls":"npc48","id":"tallGreenDoor","trigger":"openDoor","name":"高绿门","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"greenKey":1}}}, "322": {"cls":"npc48","id":"tallGreenDoor","trigger":"openDoor","name":"高绿门","animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"greenKey":1}}},
"323": {"cls":"npc48","id":"tallSpecialDoor","trigger":"openDoor","name":"高机关门","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"specialKey":1}}}, "323": {"cls":"npc48","id":"tallSpecialDoor","trigger":"openDoor","name":"高机关门","animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"specialKey":1}}},
"324": {"cls":"npc48","id":"tallSteelDoor","trigger":"openDoor","name":"高铁门","animate":1,"doorInfo":{"time":160,"openSound":"door.mp3","closeSound":"door.mp3","keys":{"steelKey":1}}}, "324": {"cls":"npc48","id":"tallSteelDoor","trigger":"openDoor","name":"高铁门","animate":1,"doorInfo":{"time":160,"openSound":"door.opus","closeSound":"door.opus","keys":{"steelKey":1}}},
"325": {"cls":"enemys","id":"keiskeiFairy"}, "325": {"cls":"enemys","id":"keiskeiFairy"},
"326": {"cls":"enemys","id":"tulipFairy"}, "326": {"cls":"enemys","id":"tulipFairy"},
"327": {"cls":"enemy48","id":"bearDown"}, "327": {"cls":"enemy48","id":"bearDown"},

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 685 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 104 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 628 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 735 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 628 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 95 KiB

View File

@ -59,6 +59,7 @@ body {
left: 0; left: 0;
background: rgba(127, 127, 127, 0.6); background: rgba(127, 127, 127, 0.6);
z-index: 2000; z-index: 2000;
color: black;
} }
#inputDialog { #inputDialog {
@ -69,6 +70,7 @@ body {
background: white; background: white;
width: 250px; width: 250px;
min-height: 50px; min-height: 50px;
color: black;
} }
#inputMessage { #inputMessage {
@ -76,6 +78,7 @@ body {
text-align: left; text-align: left;
margin-left: 8%; margin-left: 8%;
margin-right: 5%; margin-right: 5%;
color: black;
} }
#inputBox { #inputBox {
@ -85,16 +88,19 @@ body {
padding: 5px 3px; padding: 5px 3px;
border: 1px solid; border: 1px solid;
background: #f0f0f0; background: #f0f0f0;
color: black;
} }
#inputYes { #inputYes {
margin-bottom: 15px; margin-bottom: 15px;
margin-left: 8%; margin-left: 8%;
color: black;
} }
#inputNo { #inputNo {
float: right; float: right;
margin-right: 10%; margin-right: 10%;
color: black;
} }
#_selector, #_selector,

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

49
script/pack-template.ts Normal file
View File

@ -0,0 +1,49 @@
/* eslint-disable no-console */
import { copy, emptyDir, ensureDir } from 'fs-extra';
import { resolve } from 'path';
const base = resolve(process.cwd());
const template = resolve(base, 'template');
async function packTemplate() {
await ensureDir(template);
await emptyDir(template);
// 复制必要文件
const toCopy = [
'.vscode',
'packages',
'packages-user',
'public',
'script',
'src',
'.gitignore',
'.madgerc',
'.prettierignore',
'.prettierrc',
'eslint.config.js',
'index.html',
'LICENSE',
'package.json',
'pnpm-lock.yaml',
'pnpm-workspace.yaml',
'README.md',
'tsconfig.json',
'tsconfig.node.json',
'vite.config.ts'
];
await Promise.all(
toCopy.map(v =>
copy(resolve(base, v), resolve(template, v), {
filter: src => !src.includes('node_modules')
})
)
);
console.log(`样板打包完成`);
}
(() => {
packTemplate();
})();

View File

@ -127,5 +127,6 @@ div.toolbar-editor-item {
position: fixed; position: fixed;
border: none; border: none;
z-index: 1000; z-index: 1000;
background-color: transparent; background-color: black;
transform-origin: 0 0;
} }

View File

@ -4,7 +4,7 @@ interface IdToCls {
blueWall: 'animates'; blueWall: 'animates';
star: 'animates'; star: 'animates';
lava: 'animates'; lava: 'animates';
ice: 'terrains'; ice: 'animates';
blueShopLeft: 'terrains'; blueShopLeft: 'terrains';
blueShopRight: 'terrains'; blueShopRight: 'terrains';
pinkShopLeft: 'terrains'; pinkShopLeft: 'terrains';
@ -13,7 +13,7 @@ interface IdToCls {
poisonNet: 'animates'; poisonNet: 'animates';
weakNet: 'animates'; weakNet: 'animates';
curseNet: 'animates'; curseNet: 'animates';
blueWater: 'animates'; blueLava: 'animates';
water: 'animates'; water: 'animates';
autotile: 'autotile'; autotile: 'autotile';
yellowKey: 'items'; yellowKey: 'items';
@ -58,7 +58,7 @@ interface IdToCls {
curseWine: 'items'; curseWine: 'items';
superWine: 'items'; superWine: 'items';
dagger: 'items'; dagger: 'items';
silverCoin: 'items'; pack: 'items';
amulet: 'items'; amulet: 'items';
hammer: 'items'; hammer: 'items';
lifeWand: 'items'; lifeWand: 'items';
@ -85,10 +85,6 @@ interface IdToCls {
crystalBottom: 'animates'; crystalBottom: 'animates';
fire: 'animates'; fire: 'animates';
switch: 'animates'; switch: 'animates';
steelDoor2: 'animates';
steelDoor3: 'animates';
iceDoor: 'animates';
iceDoor2: 'animates';
magentaWall: 'animates'; magentaWall: 'animates';
man: 'npcs'; man: 'npcs';
trader: 'npcs'; trader: 'npcs';
@ -108,16 +104,6 @@ interface IdToCls {
npc3: 'npc48'; npc3: 'npc48';
greenMan: 'npcs'; greenMan: 'npcs';
blueTrader: 'npcs'; blueTrader: 'npcs';
redMSNpc: 'npcs';
blackTrader: 'npcs';
autotile4: 'autotile';
autotile5: 'autotile';
autotile6: 'autotile';
autotile7: 'autotile';
autotile8: 'autotile';
autotile9: 'autotile';
autotile10: 'autotile';
autotile11: 'autotile';
autotile1: 'autotile'; autotile1: 'autotile';
autotile2: 'autotile'; autotile2: 'autotile';
autotile3: 'autotile'; autotile3: 'autotile';
@ -131,22 +117,6 @@ interface IdToCls {
flower: 'terrains'; flower: 'terrains';
box: 'terrains'; box: 'terrains';
boxed: 'terrains'; boxed: 'terrains';
octopusLeftTop: 'npcs';
octopusTop: 'npcs';
octopusRightTop: 'npcs';
octopusLeft: 'npcs';
octopusCenter: 'npcs';
octopusRight: 'npcs';
octopusLeftBottom: 'npcs';
octopusRightBottom: 'npcs';
dragonLeftTop: 'npcs';
dragonTop: 'npcs';
dragonRightTop: 'npcs';
dragonLeft: 'npcs';
dragonCenter: 'npcs';
dragonRight: 'npcs';
dragonLeftBottom: 'npcs';
dragonRightBottom: 'npcs';
greenSlime: 'enemys'; greenSlime: 'enemys';
redSlime: 'enemys'; redSlime: 'enemys';
blackSlime: 'enemys'; blackSlime: 'enemys';
@ -214,15 +184,10 @@ interface IdToCls {
silverSlimelord: 'enemys'; silverSlimelord: 'enemys';
goldSlimelord: 'enemys'; goldSlimelord: 'enemys';
grayRock: 'enemys'; grayRock: 'enemys';
blueRock: 'enemys';
skeletonLite: 'enemys';
greenKnight: 'enemys'; greenKnight: 'enemys';
bowman: 'enemys'; bowman: 'enemys';
liteBowman: 'enemys'; purpleBowman: 'enemys';
crimsonZombie: 'enemys';
frozenSkeleton: 'enemys';
watcherSlime: 'enemys'; watcherSlime: 'enemys';
mutantSlimeman: 'enemys';
frostBat: 'enemys'; frostBat: 'enemys';
devilKnight: 'enemys'; devilKnight: 'enemys';
grayPriest: 'enemys'; grayPriest: 'enemys';
@ -246,478 +211,16 @@ interface IdToCls {
sWallTLR: 'terrains'; sWallTLR: 'terrains';
sWallTBR: 'terrains'; sWallTBR: 'terrains';
sWallTBL: 'terrains'; sWallTBL: 'terrains';
I319: 'items'; tallYellowDoor: 'npc48';
I320: 'items'; tallBlueDoor: 'npc48';
I321: 'items'; tallRedDoor: 'npc48';
I322: 'items'; tallGreenDoor: 'npc48';
I323: 'items'; tallSpecialDoor: 'npc48';
I324: 'items'; tallSteelDoor: 'npc48';
I325: 'items'; keiskeiFairy: 'enemys';
I326: 'items'; tulipFairy: 'enemys';
I327: 'items'; bearDown: 'enemy48';
I328: 'items'; bearLeft: 'enemy48';
I329: 'items'; bearRight: 'enemy48';
I330: 'items'; bearUp: 'enemy48';
T331: 'terrains';
T332: 'terrains';
T333: 'terrains';
T334: 'terrains';
T335: 'terrains';
T336: 'terrains';
T337: 'terrains';
T338: 'terrains';
T339: 'terrains';
T340: 'terrains';
T341: 'terrains';
T342: 'terrains';
T343: 'terrains';
T344: 'terrains';
T345: 'terrains';
T346: 'terrains';
T347: 'terrains';
T348: 'terrains';
T349: 'terrains';
T350: 'terrains';
T351: 'terrains';
T352: 'terrains';
T353: 'terrains';
T354: 'terrains';
T355: 'terrains';
T356: 'terrains';
T357: 'terrains';
T358: 'terrains';
T359: 'terrains';
T360: 'terrains';
T361: 'terrains';
T362: 'terrains';
T363: 'terrains';
T364: 'terrains';
T365: 'terrains';
T366: 'terrains';
N367: 'npc48';
E368: 'enemys';
E369: 'enemys';
E370: 'enemys';
E371: 'enemys';
E372: 'enemys';
E373: 'enemys';
E374: 'enemys';
E375: 'enemys';
I376: 'items';
I377: 'items';
I378: 'items';
I379: 'items';
I380: 'items';
I381: 'items';
I382: 'items';
I383: 'items';
I384: 'items';
I385: 'items';
I386: 'items';
I387: 'items';
I388: 'items';
I389: 'items';
I390: 'items';
I391: 'items';
I392: 'items';
I393: 'items';
I394: 'items';
I395: 'items';
I396: 'items';
I397: 'items';
I398: 'items';
I399: 'items';
I400: 'items';
I401: 'items';
I402: 'items';
I403: 'items';
I404: 'items';
I405: 'items';
I406: 'items';
I407: 'items';
I408: 'items';
I409: 'items';
I410: 'items';
I411: 'items';
I412: 'items';
I413: 'items';
I414: 'items';
I415: 'items';
I416: 'items';
I417: 'items';
I418: 'items';
I419: 'items';
I420: 'items';
I421: 'items';
I422: 'items';
I423: 'items';
I424: 'items';
I425: 'items';
I426: 'items';
I427: 'items';
I428: 'items';
I429: 'items';
I430: 'items';
I431: 'items';
I432: 'items';
I433: 'items';
I434: 'items';
I435: 'items';
I436: 'items';
I437: 'items';
I438: 'items';
I439: 'items';
I440: 'items';
I441: 'items';
I442: 'items';
I443: 'items';
I444: 'items';
I445: 'items';
I446: 'items';
I447: 'items';
I448: 'items';
I449: 'items';
I450: 'items';
I451: 'items';
I452: 'items';
I453: 'items';
I454: 'items';
I455: 'items';
I456: 'items';
I457: 'items';
I458: 'items';
I459: 'items';
I460: 'items';
I461: 'items';
I462: 'items';
I463: 'items';
I464: 'items';
I465: 'items';
I466: 'items';
I467: 'items';
I468: 'items';
I469: 'items';
I470: 'items';
I471: 'items';
I472: 'items';
I473: 'items';
I474: 'items';
I475: 'items';
I476: 'items';
I477: 'items';
I478: 'items';
I479: 'items';
I480: 'items';
I481: 'items';
I482: 'items';
I483: 'items';
I484: 'items';
I485: 'items';
I486: 'items';
I487: 'items';
I488: 'items';
I489: 'items';
I490: 'items';
I491: 'items';
A492: 'animates';
A493: 'animates';
A494: 'animates';
A495: 'animates';
A496: 'animates';
A497: 'animates';
E498: 'enemys';
E499: 'enemys';
E500: 'enemys';
E501: 'enemys';
E502: 'enemys';
E503: 'enemys';
E504: 'enemys';
E505: 'enemys';
A506: 'animates';
A507: 'animates';
A508: 'animates';
A509: 'animates';
A510: 'animates';
E511: 'enemys';
E512: 'enemys';
E513: 'enemys';
E514: 'enemys';
E515: 'enemys';
T516: 'terrains';
E517: 'enemys';
E518: 'enemys';
E519: 'enemys';
E520: 'enemys';
E521: 'enemys';
E522: 'enemys';
E523: 'enemys';
E524: 'enemys';
E525: 'enemys';
T526: 'terrains';
T527: 'terrains';
T528: 'terrains';
T529: 'terrains';
T530: 'terrains';
T531: 'terrains';
N532: 'npcs';
N533: 'npcs';
N534: 'npcs';
N535: 'npcs';
E536: 'enemys';
E537: 'enemys';
E538: 'enemys';
E539: 'enemys';
A540: 'animates';
A541: 'animates';
A542: 'animates';
A543: 'animates';
E544: 'enemys';
E545: 'enemys';
E546: 'enemys';
E547: 'enemys';
E548: 'enemys';
E549: 'enemys';
E550: 'enemys';
T551: 'terrains';
T552: 'terrains';
T553: 'terrains';
T554: 'terrains';
T555: 'terrains';
E556: 'enemys';
E557: 'enemys';
I558: 'items';
I559: 'items';
I560: 'items';
E561: 'enemys';
E562: 'enemys';
E563: 'enemys';
E564: 'enemys';
I565: 'items';
E566: 'enemys';
E567: 'enemys';
E568: 'enemys';
E569: 'enemys';
E570: 'enemys';
E571: 'enemys';
E572: 'enemys';
E573: 'enemys';
I574: 'items';
I575: 'items';
E576: 'enemys';
E577: 'enemys';
E578: 'enemys';
E579: 'enemys';
T580: 'terrains';
T581: 'terrains';
T582: 'terrains';
T583: 'terrains';
T584: 'terrains';
T585: 'terrains';
T586: 'terrains';
T587: 'terrains';
T588: 'terrains';
I589: 'items';
E590: 'enemys';
E591: 'enemys';
E592: 'enemys';
E593: 'enemys';
E594: 'enemys';
E595: 'enemys';
E596: 'enemys';
E597: 'enemys';
E598: 'enemys';
E599: 'enemys';
E600: 'enemys';
E601: 'enemys';
E602: 'enemys';
E603: 'enemys';
T604: 'terrains';
E605: 'enemys';
E606: 'enemys';
E607: 'enemys';
E608: 'enemys';
E609: 'enemys';
E610: 'enemys';
E611: 'enemys';
E612: 'enemys';
E613: 'enemys';
E614: 'enemys';
E615: 'enemys';
E616: 'enemys';
E617: 'enemys';
E618: 'enemys';
N619: 'npcs';
N620: 'npcs';
N621: 'npcs';
N622: 'npcs';
N623: 'npcs';
N624: 'npcs';
N625: 'npcs';
N626: 'npcs';
T627: 'terrains';
T628: 'terrains';
T629: 'terrains';
N630: 'npc48';
N631: 'npc48';
N632: 'npc48';
N633: 'npc48';
N634: 'npc48';
N635: 'npc48';
N636: 'npc48';
N637: 'npc48';
N638: 'npc48';
N639: 'npc48';
T640: 'terrains';
I641: 'items';
I642: 'items';
E643: 'enemys';
E644: 'enemys';
E645: 'enemys';
E646: 'enemys';
E647: 'enemys';
T648: 'terrains';
T649: 'terrains';
T650: 'terrains';
T651: 'terrains';
T652: 'terrains';
T653: 'terrains';
T654: 'terrains';
T655: 'terrains';
E656: 'enemys';
E657: 'enemys';
E658: 'enemys';
E659: 'enemys';
T660: 'terrains';
T661: 'terrains';
I662: 'items';
I663: 'items';
I664: 'items';
I665: 'items';
E666: 'enemys';
E667: 'enemys';
E668: 'enemys';
E669: 'enemys';
E670: 'enemys';
E671: 'enemys';
E672: 'enemys';
E673: 'enemys';
E674: 'enemys';
E675: 'enemys';
E676: 'enemys';
E677: 'enemys';
E678: 'enemys';
E679: 'enemys';
E680: 'enemys';
E681: 'enemys';
E682: 'enemys';
E683: 'enemys';
E684: 'enemys';
E685: 'enemys';
E686: 'enemys';
E687: 'enemys';
E688: 'enemys';
E689: 'enemys';
E690: 'enemys';
E691: 'enemys';
E692: 'enemys';
E693: 'enemys';
I694: 'items';
I695: 'items';
I696: 'items';
I697: 'items';
E698: 'enemys';
E699: 'enemys';
E700: 'enemys';
E701: 'enemys';
E702: 'enemys';
E703: 'enemys';
E704: 'enemys';
E705: 'enemys';
T706: 'terrains';
E707: 'enemys';
E708: 'enemys';
E709: 'enemys';
E710: 'enemys';
X20032: 'tileset';
X20033: 'tileset';
X20034: 'tileset';
X20037: 'tileset';
X20038: 'tileset';
X20039: 'tileset';
X20040: 'tileset';
X20041: 'tileset';
X20042: 'tileset';
X20045: 'tileset';
X20047: 'tileset';
X20048: 'tileset';
X20049: 'tileset';
X20050: 'tileset';
X20053: 'tileset';
X20054: 'tileset';
X20055: 'tileset';
X20056: 'tileset';
X20057: 'tileset';
X20058: 'tileset';
X20064: 'tileset';
X20065: 'tileset';
X20066: 'tileset';
X20074: 'tileset';
X20152: 'tileset';
X20153: 'tileset';
X30040: 'tileset';
X30041: 'tileset';
X30042: 'tileset';
X30048: 'tileset';
X30050: 'tileset';
X30056: 'tileset';
X30057: 'tileset';
X30058: 'tileset';
X30105: 'tileset';
X30112: 'tileset';
X30113: 'tileset';
X30121: 'tileset';
X30196: 'tileset';
X30204: 'tileset';
X70019: 'tileset';
X70048: 'tileset';
X70049: 'tileset';
X70050: 'tileset';
X70056: 'tileset';
X70058: 'tileset';
X70059: 'tileset';
X70060: 'tileset';
X70064: 'tileset';
X70065: 'tileset';
X70066: 'tileset';
X70072: 'tileset';
X70073: 'tileset';
X70074: 'tileset';
X70080: 'tileset';
X70081: 'tileset';
X70082: 'tileset';
X70083: 'tileset';
X70084: 'tileset';
X70090: 'tileset';
X70091: 'tileset';
X70098: 'tileset';
X70099: 'tileset';
X70112: 'tileset';
X70114: 'tileset';
X70116: 'tileset';
X70120: 'tileset';
X70122: 'tileset';
X70124: 'tileset';
X70128: 'tileset';
X70130: 'tileset';
X70131: 'tileset';
X70132: 'tileset';
X70184: 'tileset';
X70185: 'tileset';
X70186: 'tileset';
X70200: 'tileset';
X70201: 'tileset';
X70202: 'tileset';
X90153: 'tileset';
X90154: 'tileset';
X90155: 'tileset';
} }