mirror of
				https://github.com/unanmed/HumanBreak.git
				synced 2025-11-04 07:02:58 +08:00 
			
		
		
		
	refactor: 渲染系统的部分目录结构
This commit is contained in:
		
							parent
							
								
									ed229e1601
								
							
						
					
					
						commit
						69da048438
					
				@ -2853,11 +2853,7 @@ control.prototype.getMappedName = function (name) {
 | 
			
		||||
////// 更改天气效果 //////
 | 
			
		||||
control.prototype.setWeather = function (type, level) {
 | 
			
		||||
    // Deprecated. Use WeatherController API instead.
 | 
			
		||||
    Mota.r(() => {
 | 
			
		||||
        const controller = Mota.require('module', 'Weather').controller;
 | 
			
		||||
        controller.clearWeather();
 | 
			
		||||
        if (type !== null && type !== void 0) controller.activate(type, level);
 | 
			
		||||
    });
 | 
			
		||||
    // Fallback see src/module/fallback/weather.ts
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
////// 注册一个天气 //////
 | 
			
		||||
 | 
			
		||||
@ -75,7 +75,6 @@ import './render/index';
 | 
			
		||||
import * as RenderUtils from './render/utils';
 | 
			
		||||
import '@/module';
 | 
			
		||||
import { MotaOffscreenCanvas2D } from './fx/canvas2d';
 | 
			
		||||
import { TextboxStore } from './render/index';
 | 
			
		||||
 | 
			
		||||
// ----- 类注册
 | 
			
		||||
Mota.register('class', 'CustomToolbar', CustomToolbar);
 | 
			
		||||
@ -157,8 +156,7 @@ Mota.register('module', 'Render', {
 | 
			
		||||
    LayerGroupFloorBinder,
 | 
			
		||||
    Camera,
 | 
			
		||||
    MotaOffscreenCanvas2D,
 | 
			
		||||
    Utils: RenderUtils,
 | 
			
		||||
    TextboxStore
 | 
			
		||||
    Utils: RenderUtils
 | 
			
		||||
});
 | 
			
		||||
Mota.register('module', 'Action', {
 | 
			
		||||
    HeroKeyMover
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										14
									
								
								src/core/render/index.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/core/render/index.ts
									
									
									
									
									
										Normal 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';
 | 
			
		||||
@ -388,7 +388,7 @@ export abstract class RenderItem<E extends ERenderItemEvent = ERenderItemEvent>
 | 
			
		||||
    /**
 | 
			
		||||
     * 渲染函数
 | 
			
		||||
     * @param canvas 渲染至的画布
 | 
			
		||||
     * @param transform 当前变换矩阵的,渲染时已经进行变换处理,不需要对画布再次进行变换处理
 | 
			
		||||
     * @param transform 当前变换矩阵的,渲染时已经进行变换处理,不需要对画布再次进行变换处理。
 | 
			
		||||
     *                  此参数可用于自己对元素进行变换处理,也会用于对子元素的处理。
 | 
			
		||||
     *                  例如对于`absolute`类型的元素,同时有对视角改变的需求,就可以通过此参数进行变换。
 | 
			
		||||
     *                  样板内置的`Layer`及`Damage`元素就是通过此方式实现的
 | 
			
		||||
 | 
			
		||||
@ -38,7 +38,6 @@ import type * as Animation from 'mutate-animate';
 | 
			
		||||
import type * as RenderUtils from '@/core/render/utils';
 | 
			
		||||
import type { WeatherController } from '@/module/weather/weather';
 | 
			
		||||
import type { MotaOffscreenCanvas2D } from '@/core/fx/canvas2d';
 | 
			
		||||
import type { TextboxStore } from '@/core/render';
 | 
			
		||||
 | 
			
		||||
interface ClassInterface {
 | 
			
		||||
    // 渲染进程与游戏进程通用
 | 
			
		||||
@ -115,7 +114,6 @@ interface ModuleInterface {
 | 
			
		||||
        Camera: typeof Camera;
 | 
			
		||||
        MotaOffscreenCanvas2D: typeof MotaOffscreenCanvas2D;
 | 
			
		||||
        Utils: typeof RenderUtils;
 | 
			
		||||
        TextboxStore: typeof TextboxStore;
 | 
			
		||||
    };
 | 
			
		||||
    State: {
 | 
			
		||||
        ItemState: typeof ItemState;
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,10 @@
 | 
			
		||||
import { Patch } from '@/common/patch';
 | 
			
		||||
import { patchAudio } from './audio';
 | 
			
		||||
 | 
			
		||||
patchAudio();
 | 
			
		||||
import { patchWeather } from './weather';
 | 
			
		||||
 | 
			
		||||
export function patchAll() {
 | 
			
		||||
    patchAudio();
 | 
			
		||||
    patchWeather();
 | 
			
		||||
    const loading = Mota.require('var', 'loading');
 | 
			
		||||
    loading.once('coreInit', () => {
 | 
			
		||||
        Patch.patchAll();
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										21
									
								
								src/module/fallback/weather.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								src/module/fallback/weather.ts
									
									
									
									
									
										Normal 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;
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
@ -1,19 +1,21 @@
 | 
			
		||||
import { soundPlayer } from './audio';
 | 
			
		||||
import { patchAll } from './fallback';
 | 
			
		||||
import { controller } from './weather';
 | 
			
		||||
import { create } from './render';
 | 
			
		||||
import { RainWeather } from './weather/rain';
 | 
			
		||||
import { WeatherController } from './weather/weather';
 | 
			
		||||
 | 
			
		||||
patchAll();
 | 
			
		||||
Mota.register('module', 'Weather', {
 | 
			
		||||
    controller,
 | 
			
		||||
    WeatherController,
 | 
			
		||||
    RainWeather
 | 
			
		||||
});
 | 
			
		||||
Mota.register('module', 'Audio', { soundPlayer });
 | 
			
		||||
Mota.register('module', 'Audio', {
 | 
			
		||||
    soundPlayer
 | 
			
		||||
});
 | 
			
		||||
Mota.require('var', 'loading').once('coreInit', create);
 | 
			
		||||
 | 
			
		||||
export * from './weather';
 | 
			
		||||
export * from './audio';
 | 
			
		||||
export * from './loader';
 | 
			
		||||
export * from './fallback';
 | 
			
		||||
export * from './ui';
 | 
			
		||||
export * from './render';
 | 
			
		||||
 | 
			
		||||
@ -1,26 +1,25 @@
 | 
			
		||||
import { FloorItemDetail } from '@/plugin/fx/itemDetail';
 | 
			
		||||
import { FloorDamageExtends } from './preset/damage';
 | 
			
		||||
import { LayerDoorAnimate } from './preset/floor';
 | 
			
		||||
import { HeroRenderer } from './preset/hero';
 | 
			
		||||
import { MotaRenderer } from './render';
 | 
			
		||||
import { LayerShadowExtends } from '../fx/shadow';
 | 
			
		||||
import { FloorDamageExtends, LayerGroup } from '@/core/render';
 | 
			
		||||
import { LayerDoorAnimate } from '@/core/render';
 | 
			
		||||
import { HeroRenderer } from '@/core/render';
 | 
			
		||||
import { MotaRenderer } from '@/core/render';
 | 
			
		||||
import { LayerShadowExtends } from '@/core/fx/shadow';
 | 
			
		||||
import { LayerGroupFilter } from '@/plugin/fx/gameCanvas';
 | 
			
		||||
import { LayerGroupAnimate } from './preset/animate';
 | 
			
		||||
import { LayerGroupAnimate } from '@/core/render';
 | 
			
		||||
import { LayerGroupPortal } from '@/plugin/fx/portal';
 | 
			
		||||
import { LayerGroupHalo } from '@/plugin/fx/halo';
 | 
			
		||||
import { FloorViewport } from './preset/viewport';
 | 
			
		||||
import { FloorViewport } from '@/core/render';
 | 
			
		||||
import { PopText } from '@/plugin/fx/pop';
 | 
			
		||||
import { FloorChange } from '@/plugin/fallback';
 | 
			
		||||
import { createApp } from './renderer';
 | 
			
		||||
import { defineComponent } from 'vue';
 | 
			
		||||
import { Textbox } from '../../module/ui/components';
 | 
			
		||||
import { ILayerGroupRenderExtends, ILayerRenderExtends } from './preset';
 | 
			
		||||
import { Props } from './utils';
 | 
			
		||||
import { createApp } from '@/core/render';
 | 
			
		||||
import { defineComponent, onMounted, ref } from 'vue';
 | 
			
		||||
import { Textbox } from './components';
 | 
			
		||||
import { ILayerGroupRenderExtends, ILayerRenderExtends } from '@/core/render';
 | 
			
		||||
import { Props } from '@/core/render';
 | 
			
		||||
import { WeatherController } from '../weather';
 | 
			
		||||
 | 
			
		||||
let main: MotaRenderer;
 | 
			
		||||
 | 
			
		||||
Mota.require('var', 'loading').once('coreInit', () => {
 | 
			
		||||
    main = new MotaRenderer();
 | 
			
		||||
export function create() {
 | 
			
		||||
    const main = new MotaRenderer();
 | 
			
		||||
 | 
			
		||||
    const App = defineComponent(_props => {
 | 
			
		||||
        const layerGroupExtends: ILayerGroupRenderExtends[] = [
 | 
			
		||||
@ -57,9 +56,16 @@ Mota.require('var', 'loading').once('coreInit', () => {
 | 
			
		||||
            lineHeight: 6
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        const map = ref<LayerGroup>();
 | 
			
		||||
        const weather = new WeatherController('main');
 | 
			
		||||
 | 
			
		||||
        onMounted(() => {
 | 
			
		||||
            weather.bind(map.value);
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        return () => (
 | 
			
		||||
            <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="bg2" zIndex={20}></layer>
 | 
			
		||||
                    <layer layer="event" zIndex={30} ex={eventExtends}></layer>
 | 
			
		||||
@ -75,28 +81,16 @@ Mota.require('var', 'loading').once('coreInit', () => {
 | 
			
		||||
 | 
			
		||||
    main.hide();
 | 
			
		||||
    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);
 | 
			
		||||
});
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Mota.require('var', 'hook').on('reset', () => {
 | 
			
		||||
    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';
 | 
			
		||||
export * from './components';
 | 
			
		||||
@ -1 +0,0 @@
 | 
			
		||||
export * from './components';
 | 
			
		||||
@ -20,8 +20,8 @@ import {
 | 
			
		||||
} from './towerBossProjectile';
 | 
			
		||||
import { IStateDamageable } from '@/game/state/interface';
 | 
			
		||||
import { HeroRenderer } from '@/core/render/preset/hero';
 | 
			
		||||
import { controller } from '@/module/weather';
 | 
			
		||||
import { Pop } from '../fx/pop';
 | 
			
		||||
import { WeatherController } from '@/module';
 | 
			
		||||
 | 
			
		||||
Mota.require('var', 'loading').once('coreInit', () => {
 | 
			
		||||
    const shader = new Shader();
 | 
			
		||||
@ -401,7 +401,8 @@ export class TowerBoss extends BarrageBoss {
 | 
			
		||||
        this.skill4Time = 5;
 | 
			
		||||
        this.skill5Time = 3;
 | 
			
		||||
        core.playBgm('towerBoss2.opus');
 | 
			
		||||
        controller.activate('rain', 6);
 | 
			
		||||
        const weather = WeatherController.get('main');
 | 
			
		||||
        weather?.activate('rain', 6);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    releaseSkill4() {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user