refactor: 渲染系统的部分目录结构

This commit is contained in:
unanmed 2025-01-31 13:00:47 +08:00
parent ed229e1601
commit 69da048438
15 changed files with 83 additions and 59 deletions

View File

@ -2853,11 +2853,7 @@ control.prototype.getMappedName = function (name) {
////// 更改天气效果 ////// ////// 更改天气效果 //////
control.prototype.setWeather = function (type, level) { control.prototype.setWeather = function (type, level) {
// Deprecated. Use WeatherController API instead. // Deprecated. Use WeatherController API instead.
Mota.r(() => { // Fallback see src/module/fallback/weather.ts
const controller = Mota.require('module', 'Weather').controller;
controller.clearWeather();
if (type !== null && type !== void 0) controller.activate(type, level);
});
}; };
////// 注册一个天气 ////// ////// 注册一个天气 //////

View File

@ -75,7 +75,6 @@ import './render/index';
import * as RenderUtils from './render/utils'; import * as RenderUtils from './render/utils';
import '@/module'; import '@/module';
import { MotaOffscreenCanvas2D } from './fx/canvas2d'; import { MotaOffscreenCanvas2D } from './fx/canvas2d';
import { TextboxStore } from './render/index';
// ----- 类注册 // ----- 类注册
Mota.register('class', 'CustomToolbar', CustomToolbar); Mota.register('class', 'CustomToolbar', CustomToolbar);
@ -157,8 +156,7 @@ Mota.register('module', 'Render', {
LayerGroupFloorBinder, LayerGroupFloorBinder,
Camera, Camera,
MotaOffscreenCanvas2D, MotaOffscreenCanvas2D,
Utils: RenderUtils, Utils: RenderUtils
TextboxStore
}); });
Mota.register('module', 'Action', { Mota.register('module', 'Action', {
HeroKeyMover HeroKeyMover

14
src/core/render/index.ts Normal file
View File

@ -0,0 +1,14 @@
export * from './preset';
export * from './renderer';
export * from './adapter';
export * from './cache';
export * from './camera';
export * from './container';
export * from './frame';
export * from './gl2';
export * from './item';
export * from './render';
export * from './shader';
export * from './sprite';
export * from './transform';
export * from './utils';

View File

@ -388,7 +388,7 @@ export abstract class RenderItem<E extends ERenderItemEvent = ERenderItemEvent>
/** /**
* *
* @param canvas * @param canvas
* @param transform * @param transform
* *
* `absolute` * `absolute`
* `Layer``Damage` * `Layer``Damage`

View File

@ -38,7 +38,6 @@ import type * as Animation from 'mutate-animate';
import type * as RenderUtils from '@/core/render/utils'; import type * as RenderUtils from '@/core/render/utils';
import type { WeatherController } from '@/module/weather/weather'; import type { WeatherController } from '@/module/weather/weather';
import type { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d'; import type { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
import type { TextboxStore } from '@/core/render';
interface ClassInterface { interface ClassInterface {
// 渲染进程与游戏进程通用 // 渲染进程与游戏进程通用
@ -115,7 +114,6 @@ interface ModuleInterface {
Camera: typeof Camera; Camera: typeof Camera;
MotaOffscreenCanvas2D: typeof MotaOffscreenCanvas2D; MotaOffscreenCanvas2D: typeof MotaOffscreenCanvas2D;
Utils: typeof RenderUtils; Utils: typeof RenderUtils;
TextboxStore: typeof TextboxStore;
}; };
State: { State: {
ItemState: typeof ItemState; ItemState: typeof ItemState;

View File

@ -1,9 +1,10 @@
import { Patch } from '@/common/patch'; import { Patch } from '@/common/patch';
import { patchAudio } from './audio'; import { patchAudio } from './audio';
import { patchWeather } from './weather';
patchAudio();
export function patchAll() { export function patchAll() {
patchAudio();
patchWeather();
const loading = Mota.require('var', 'loading'); const loading = Mota.require('var', 'loading');
loading.once('coreInit', () => { loading.once('coreInit', () => {
Patch.patchAll(); Patch.patchAll();

View File

@ -0,0 +1,21 @@
import { Patch, PatchClass } from '@/common/patch';
import { WeatherController } from '../weather';
import { isNil } from 'lodash-es';
export function patchWeather() {
const patch = new Patch(PatchClass.Control);
let nowWeather: string = '';
let nowLevel: number = 0;
patch.add('setWeather', (type, level) => {
const weather = WeatherController.get('main');
if (!weather) return;
if (type === nowWeather && level === nowLevel) return;
weather.clearWeather();
if (!isNil(type)) {
weather.activate(type, level);
nowWeather = type;
nowLevel = level ?? 5;
}
});
}

View File

@ -1,19 +1,21 @@
import { soundPlayer } from './audio'; import { soundPlayer } from './audio';
import { patchAll } from './fallback'; import { patchAll } from './fallback';
import { controller } from './weather'; import { create } from './render';
import { RainWeather } from './weather/rain'; import { RainWeather } from './weather/rain';
import { WeatherController } from './weather/weather'; import { WeatherController } from './weather/weather';
patchAll(); patchAll();
Mota.register('module', 'Weather', { Mota.register('module', 'Weather', {
controller,
WeatherController, WeatherController,
RainWeather RainWeather
}); });
Mota.register('module', 'Audio', { soundPlayer }); Mota.register('module', 'Audio', {
soundPlayer
});
Mota.require('var', 'loading').once('coreInit', create);
export * from './weather'; export * from './weather';
export * from './audio'; export * from './audio';
export * from './loader'; export * from './loader';
export * from './fallback'; export * from './fallback';
export * from './ui'; export * from './render';

View File

@ -1,26 +1,25 @@
import { FloorItemDetail } from '@/plugin/fx/itemDetail'; import { FloorItemDetail } from '@/plugin/fx/itemDetail';
import { FloorDamageExtends } from './preset/damage'; import { FloorDamageExtends, LayerGroup } from '@/core/render';
import { LayerDoorAnimate } from './preset/floor'; import { LayerDoorAnimate } from '@/core/render';
import { HeroRenderer } from './preset/hero'; import { HeroRenderer } from '@/core/render';
import { MotaRenderer } from './render'; import { MotaRenderer } from '@/core/render';
import { LayerShadowExtends } from '../fx/shadow'; import { LayerShadowExtends } from '@/core/fx/shadow';
import { LayerGroupFilter } from '@/plugin/fx/gameCanvas'; import { LayerGroupFilter } from '@/plugin/fx/gameCanvas';
import { LayerGroupAnimate } from './preset/animate'; import { LayerGroupAnimate } from '@/core/render';
import { LayerGroupPortal } from '@/plugin/fx/portal'; import { LayerGroupPortal } from '@/plugin/fx/portal';
import { LayerGroupHalo } from '@/plugin/fx/halo'; import { LayerGroupHalo } from '@/plugin/fx/halo';
import { FloorViewport } from './preset/viewport'; import { FloorViewport } from '@/core/render';
import { PopText } from '@/plugin/fx/pop'; import { PopText } from '@/plugin/fx/pop';
import { FloorChange } from '@/plugin/fallback'; import { FloorChange } from '@/plugin/fallback';
import { createApp } from './renderer'; import { createApp } from '@/core/render';
import { defineComponent } from 'vue'; import { defineComponent, onMounted, ref } from 'vue';
import { Textbox } from '../../module/ui/components'; import { Textbox } from './components';
import { ILayerGroupRenderExtends, ILayerRenderExtends } from './preset'; import { ILayerGroupRenderExtends, ILayerRenderExtends } from '@/core/render';
import { Props } from './utils'; import { Props } from '@/core/render';
import { WeatherController } from '../weather';
let main: MotaRenderer; export function create() {
const main = new MotaRenderer();
Mota.require('var', 'loading').once('coreInit', () => {
main = new MotaRenderer();
const App = defineComponent(_props => { const App = defineComponent(_props => {
const layerGroupExtends: ILayerGroupRenderExtends[] = [ const layerGroupExtends: ILayerGroupRenderExtends[] = [
@ -57,9 +56,16 @@ Mota.require('var', 'loading').once('coreInit', () => {
lineHeight: 6 lineHeight: 6
}; };
const map = ref<LayerGroup>();
const weather = new WeatherController('main');
onMounted(() => {
weather.bind(map.value);
});
return () => ( return () => (
<container id="map-draw" {...mapDrawProps}> <container id="map-draw" {...mapDrawProps}>
<layer-group id="layer-main" ex={layerGroupExtends}> <layer-group id="layer-main" ex={layerGroupExtends} ref={map}>
<layer layer="bg" zIndex={10}></layer> <layer layer="bg" zIndex={10}></layer>
<layer layer="bg2" zIndex={20}></layer> <layer layer="bg2" zIndex={20}></layer>
<layer layer="event" zIndex={30} ex={eventExtends}></layer> <layer layer="event" zIndex={30} ex={eventExtends}></layer>
@ -75,28 +81,16 @@ Mota.require('var', 'loading').once('coreInit', () => {
main.hide(); main.hide();
createApp(App).mount(main); createApp(App).mount(main);
// render(<Com></Com>, main);
Mota.require('var', 'hook').on('reset', () => {
main.show();
});
Mota.require('var', 'hook').on('restart', () => {
main.hide();
});
console.log(main); console.log(main);
}); }
Mota.require('var', 'hook').on('reset', () => { export * from './components';
main.show();
});
Mota.require('var', 'hook').on('restart', () => {
main.hide();
});
export * from './preset';
export * from './renderer';
export * from './adapter';
export * from './cache';
export * from './camera';
export * from './container';
export * from './gl2';
export * from './item';
export * from './render';
export * from './shader';
export * from './sprite';
export * from './transform';

View File

@ -1 +0,0 @@
export * from './components';

View File

@ -20,8 +20,8 @@ import {
} from './towerBossProjectile'; } from './towerBossProjectile';
import { IStateDamageable } from '@/game/state/interface'; import { IStateDamageable } from '@/game/state/interface';
import { HeroRenderer } from '@/core/render/preset/hero'; import { HeroRenderer } from '@/core/render/preset/hero';
import { controller } from '@/module/weather';
import { Pop } from '../fx/pop'; import { Pop } from '../fx/pop';
import { WeatherController } from '@/module';
Mota.require('var', 'loading').once('coreInit', () => { Mota.require('var', 'loading').once('coreInit', () => {
const shader = new Shader(); const shader = new Shader();
@ -401,7 +401,8 @@ export class TowerBoss extends BarrageBoss {
this.skill4Time = 5; this.skill4Time = 5;
this.skill5Time = 3; this.skill5Time = 3;
core.playBgm('towerBoss2.opus'); core.playBgm('towerBoss2.opus');
controller.activate('rain', 6); const weather = WeatherController.get('main');
weather?.activate('rain', 6);
} }
releaseSkill4() { releaseSkill4() {