移除demo
@@ -1,43 +0,0 @@
|
||||
{
|
||||
"engineVersion": "5.2.33",
|
||||
"compilerVersion": "5.2.33",
|
||||
"template": {},
|
||||
"target": {
|
||||
"current": "web"
|
||||
},
|
||||
"modules": [
|
||||
{
|
||||
"name": "egret"
|
||||
},
|
||||
{
|
||||
"name": "eui"
|
||||
},
|
||||
{
|
||||
"name": "assetsmanager"
|
||||
},
|
||||
{
|
||||
"name": "game"
|
||||
},
|
||||
{
|
||||
"name": "tween"
|
||||
},
|
||||
{
|
||||
"name": "promise"
|
||||
},
|
||||
{
|
||||
"name": "dragonBones"
|
||||
},
|
||||
{
|
||||
"name": "fairygui",
|
||||
"path": "./libs/fairygui"
|
||||
},
|
||||
{
|
||||
"name": "framework",
|
||||
"path": "./libs/framework"
|
||||
},
|
||||
{
|
||||
"name": "framework_tiled",
|
||||
"path": "./libs/framework_tiled"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
Before Width: | Height: | Size: 4.2 KiB |
@@ -1,95 +0,0 @@
|
||||
<!DOCTYPE HTML>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>Egret</title>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no" />
|
||||
<meta name="apple-mobile-web-app-capable" content="yes" />
|
||||
<meta name="full-screen" content="true" />
|
||||
<meta name="screen-orientation" content="portrait" />
|
||||
<meta name="x5-fullscreen" content="true" />
|
||||
<meta name="360-fullscreen" content="true" />
|
||||
<style>
|
||||
html, body {
|
||||
-ms-touch-action: none;
|
||||
background: #888888;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
margin: 0;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div style="margin: auto;width: 100%;height: 100%;" class="egret-player"
|
||||
data-entry-class="Main"
|
||||
data-orientation="auto"
|
||||
data-scale-mode="fixedWidth"
|
||||
data-frame-rate="60"
|
||||
data-content-width="640"
|
||||
data-content-height="1136"
|
||||
data-multi-fingered="2"
|
||||
data-show-fps="false" data-show-log="false"
|
||||
data-show-fps-style="x:0,y:0,size:12,textColor:0xffffff,bgAlpha:0.9">
|
||||
</div>
|
||||
<script>
|
||||
var loadScript = function (list, callback) {
|
||||
var loaded = 0;
|
||||
var loadNext = function () {
|
||||
loadSingleScript(list[loaded], function () {
|
||||
loaded++;
|
||||
if (loaded >= list.length) {
|
||||
callback();
|
||||
}
|
||||
else {
|
||||
loadNext();
|
||||
}
|
||||
})
|
||||
};
|
||||
loadNext();
|
||||
};
|
||||
|
||||
var loadSingleScript = function (src, callback) {
|
||||
var s = document.createElement('script');
|
||||
s.async = false;
|
||||
s.src = src;
|
||||
s.addEventListener('load', function () {
|
||||
s.parentNode.removeChild(s);
|
||||
s.removeEventListener('load', arguments.callee, false);
|
||||
callback();
|
||||
}, false);
|
||||
document.body.appendChild(s);
|
||||
};
|
||||
|
||||
var xhr = new XMLHttpRequest();
|
||||
xhr.open('GET', './manifest.json?v=' + Math.random(), true);
|
||||
xhr.addEventListener("load", function () {
|
||||
var manifest = JSON.parse(xhr.response);
|
||||
var list = manifest.initial.concat(manifest.game);
|
||||
loadScript(list, function () {
|
||||
/**
|
||||
* {
|
||||
* "renderMode":, //Engine rendering mode, "canvas" or "webgl"
|
||||
* "audioType": 0 //Use the audio type, 0: default, 2: web audio, 3: audio
|
||||
* "antialias": //Whether the anti-aliasing is enabled in WebGL mode, true: on, false: off, defaults to false
|
||||
* "calculateCanvasScaleFactor": //a function return canvas scale factor
|
||||
* }
|
||||
**/
|
||||
egret.runEgret({ renderMode: "webgl", audioType: 0, calculateCanvasScaleFactor:function(context) {
|
||||
var backingStore = context.backingStorePixelRatio ||
|
||||
context.webkitBackingStorePixelRatio ||
|
||||
context.mozBackingStorePixelRatio ||
|
||||
context.msBackingStorePixelRatio ||
|
||||
context.oBackingStorePixelRatio ||
|
||||
context.backingStorePixelRatio || 1;
|
||||
return (window.devicePixelRatio || 1) / backingStore;
|
||||
}});
|
||||
});
|
||||
});
|
||||
xhr.send(null);
|
||||
</script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -1,52 +0,0 @@
|
||||
declare module skins{
|
||||
class ButtonSkin extends eui.Skin{
|
||||
}
|
||||
}
|
||||
declare module skins{
|
||||
class CheckBoxSkin extends eui.Skin{
|
||||
}
|
||||
}
|
||||
declare module skins{
|
||||
class HScrollBarSkin extends eui.Skin{
|
||||
}
|
||||
}
|
||||
declare module skins{
|
||||
class HSliderSkin extends eui.Skin{
|
||||
}
|
||||
}
|
||||
declare module skins{
|
||||
class ItemRendererSkin extends eui.Skin{
|
||||
}
|
||||
}
|
||||
declare module skins{
|
||||
class PanelSkin extends eui.Skin{
|
||||
}
|
||||
}
|
||||
declare module skins{
|
||||
class ProgressBarSkin extends eui.Skin{
|
||||
}
|
||||
}
|
||||
declare module skins{
|
||||
class RadioButtonSkin extends eui.Skin{
|
||||
}
|
||||
}
|
||||
declare module skins{
|
||||
class ScrollerSkin extends eui.Skin{
|
||||
}
|
||||
}
|
||||
declare module skins{
|
||||
class TextInputSkin extends eui.Skin{
|
||||
}
|
||||
}
|
||||
declare module skins{
|
||||
class ToggleSwitchSkin extends eui.Skin{
|
||||
}
|
||||
}
|
||||
declare module skins{
|
||||
class VScrollBarSkin extends eui.Skin{
|
||||
}
|
||||
}
|
||||
declare module skins{
|
||||
class VSliderSkin extends eui.Skin{
|
||||
}
|
||||
}
|
||||
@@ -1,357 +0,0 @@
|
||||
declare module es {
|
||||
class TiledMapRenderer extends RenderableComponent {
|
||||
tiledMap: TmxMap;
|
||||
physicsLayer: Ref<number>;
|
||||
layerIndicesToRender: number[];
|
||||
private toContainer;
|
||||
readonly width: number;
|
||||
readonly height: number;
|
||||
collisionLayer: TmxLayer;
|
||||
_shouldCreateColliders: boolean;
|
||||
_colliders: Collider[];
|
||||
constructor(tiledMap: TmxMap, collisionLayerName?: string, shouldCreateColliders?: boolean);
|
||||
setLayerToRender(layerName: string): void;
|
||||
setLayersToRender(...layerNames: string[]): void;
|
||||
private getLayerIndex;
|
||||
getRowAtWorldPosition(yPos: number): number;
|
||||
getColumnAtWorldPosition(xPos: number): number;
|
||||
onEntityTransformChanged(comp: transform.Component): void;
|
||||
onAddedToEntity(): void;
|
||||
onRemovedFromEntity(): void;
|
||||
update(): void;
|
||||
render(camera: es.Camera): void;
|
||||
addColliders(): void;
|
||||
removeColliders(): void;
|
||||
}
|
||||
}
|
||||
declare module es {
|
||||
class TmxGroup implements ITmxLayer {
|
||||
map: TmxMap;
|
||||
offsetX: number;
|
||||
offsetY: number;
|
||||
opacity: number;
|
||||
properties: Map<string, string>;
|
||||
visible: boolean;
|
||||
name: string;
|
||||
layers: ITmxLayer[];
|
||||
tileLayers: TmxLayer[];
|
||||
objectGroups: TmxObjectGroup[];
|
||||
imageLayers: TmxImageLayer[];
|
||||
groups: TmxGroup[];
|
||||
}
|
||||
}
|
||||
declare module es {
|
||||
interface ITmxLayer {
|
||||
offsetX: number;
|
||||
offsetY: number;
|
||||
opacity: number;
|
||||
visible: boolean;
|
||||
properties: Map<string, string>;
|
||||
}
|
||||
}
|
||||
declare module es {
|
||||
class TmxImageLayer implements ITmxLayer {
|
||||
map: TmxMap;
|
||||
name: string;
|
||||
offsetX: number;
|
||||
offsetY: number;
|
||||
opacity: number;
|
||||
properties: Map<string, string>;
|
||||
visible: boolean;
|
||||
width?: number;
|
||||
height?: number;
|
||||
image: TmxImage;
|
||||
}
|
||||
}
|
||||
declare module es {
|
||||
class TmxLayer implements ITmxLayer {
|
||||
map: TmxMap;
|
||||
name: string;
|
||||
opacity: number;
|
||||
offsetX: number;
|
||||
offsetY: number;
|
||||
properties: Map<string, string>;
|
||||
visible: boolean;
|
||||
readonly offset: Vector2;
|
||||
width: number;
|
||||
height: number;
|
||||
tiles: TmxLayerTile[];
|
||||
getTileWithGid(gid: number): TmxLayerTile;
|
||||
getTile(x: number, y: number): TmxLayerTile;
|
||||
getCollisionRectangles(): Rectangle[];
|
||||
findBoundsRect(startX: number, endX: number, startY: number, checkedIndexes?: boolean[]): Rectangle;
|
||||
}
|
||||
class TmxLayerTile {
|
||||
static readonly FLIPPED_HORIZONTALLY_FLAG: number;
|
||||
static readonly FLIPPED_VERTICALLY_FLAG: number;
|
||||
tileset: TmxTileset;
|
||||
gid: number;
|
||||
x: number;
|
||||
y: number;
|
||||
readonly position: Vector2;
|
||||
horizontalFlip: boolean;
|
||||
verticalFlip: boolean;
|
||||
_tilesetTileIndex?: number;
|
||||
readonly tilesetTile: TmxTilesetTile;
|
||||
constructor(map: TmxMap, id: number, x: number, y: number);
|
||||
}
|
||||
}
|
||||
declare module es {
|
||||
class TmxDocument {
|
||||
tmxDirectory: string;
|
||||
constructor();
|
||||
}
|
||||
interface ITmxElement {
|
||||
name: string;
|
||||
}
|
||||
class TmxImage {
|
||||
texture: egret.Bitmap;
|
||||
bitmap: egret.SpriteSheet;
|
||||
source: string;
|
||||
format: string;
|
||||
data: any;
|
||||
trans: number;
|
||||
width: number;
|
||||
height: number;
|
||||
dispose(): void;
|
||||
}
|
||||
}
|
||||
declare module es {
|
||||
class TmxMap extends TmxDocument {
|
||||
version: string;
|
||||
tiledVersion: string;
|
||||
width: number;
|
||||
height: number;
|
||||
readonly worldWidth: number;
|
||||
readonly worldHeight: number;
|
||||
tileWidth: number;
|
||||
tileHeight: number;
|
||||
hexSideLength?: number;
|
||||
orientation: OrientationType;
|
||||
staggerAxis: StaggerAxisType;
|
||||
staggerIndex: StaggerIndexType;
|
||||
renderOrder: RenderOrderType;
|
||||
backgroundColor: number;
|
||||
nextObjectID?: number;
|
||||
layers: ITmxLayer[];
|
||||
tilesets: TmxTileset[];
|
||||
tileLayers: TmxLayer[];
|
||||
objectGroups: TmxObjectGroup[];
|
||||
imageLayers: TmxImageLayer[];
|
||||
groups: TmxGroup[];
|
||||
properties: Map<string, string>;
|
||||
maxTileWidth: number;
|
||||
maxTileHeight: number;
|
||||
readonly requiresLargeTileCulling: boolean;
|
||||
getTilesetForTileGid(gid: number): TmxTileset;
|
||||
worldToTilePositionX(x: number, clampToTilemapBounds?: boolean): number;
|
||||
worldToTilePositionY(y: number, clampToTilemapBounds?: boolean): number;
|
||||
getLayer(name: string): ITmxLayer;
|
||||
update(): void;
|
||||
_isDisposed: any;
|
||||
dispose(disposing?: boolean): void;
|
||||
}
|
||||
enum OrientationType {
|
||||
unknown = 0,
|
||||
orthogonal = 1,
|
||||
isometric = 2,
|
||||
staggered = 3,
|
||||
hexagonal = 4
|
||||
}
|
||||
enum StaggerAxisType {
|
||||
x = 0,
|
||||
y = 1
|
||||
}
|
||||
enum StaggerIndexType {
|
||||
odd = 0,
|
||||
even = 1
|
||||
}
|
||||
enum RenderOrderType {
|
||||
rightDown = 0,
|
||||
rightUp = 1,
|
||||
leftDown = 2,
|
||||
leftUp = 3
|
||||
}
|
||||
}
|
||||
declare module es {
|
||||
class TmxObjectGroup implements ITmxLayer {
|
||||
map: TmxMap;
|
||||
name: string;
|
||||
opacity: number;
|
||||
visible: boolean;
|
||||
offsetX: number;
|
||||
offsetY: number;
|
||||
color: number;
|
||||
drawOrder: DrawOrderType;
|
||||
objects: TmxObject[];
|
||||
properties: Map<string, string>;
|
||||
}
|
||||
class TmxObject implements ITmxElement {
|
||||
id: number;
|
||||
name: string;
|
||||
shape: egret.Shape;
|
||||
textField: egret.TextField;
|
||||
objectType: TmxObjectType;
|
||||
type: string;
|
||||
x: number;
|
||||
y: number;
|
||||
width: number;
|
||||
height: number;
|
||||
rotation: number;
|
||||
tile: TmxLayerTile;
|
||||
visible: boolean;
|
||||
text: TmxText;
|
||||
points: Vector2[];
|
||||
properties: Map<string, string>;
|
||||
constructor();
|
||||
}
|
||||
class TmxText {
|
||||
fontFamily: string;
|
||||
pixelSize: number;
|
||||
wrap: boolean;
|
||||
color: number;
|
||||
bold: boolean;
|
||||
italic: boolean;
|
||||
underline: boolean;
|
||||
strikeout: boolean;
|
||||
kerning: boolean;
|
||||
alignment: TmxAlignment;
|
||||
value: string;
|
||||
}
|
||||
class TmxAlignment {
|
||||
horizontal: TmxHorizontalAlignment;
|
||||
vertical: TmxVerticalAlignment;
|
||||
}
|
||||
enum TmxObjectType {
|
||||
basic = 0,
|
||||
point = 1,
|
||||
tile = 2,
|
||||
ellipse = 3,
|
||||
polygon = 4,
|
||||
polyline = 5,
|
||||
text = 6
|
||||
}
|
||||
enum DrawOrderType {
|
||||
unkownOrder = -1,
|
||||
TopDown = 0,
|
||||
IndexOrder = 1
|
||||
}
|
||||
enum TmxHorizontalAlignment {
|
||||
left = 0,
|
||||
center = 1,
|
||||
right = 2,
|
||||
justify = 3
|
||||
}
|
||||
enum TmxVerticalAlignment {
|
||||
top = 0,
|
||||
center = 1,
|
||||
bottom = 2
|
||||
}
|
||||
}
|
||||
declare module es {
|
||||
class TiledMapLoader {
|
||||
static loadTmxMap(map: TmxMap, filePath: string): Promise<TmxMap>;
|
||||
static loadTmxMapData(map: TmxMap, xMap: any, info: any): Promise<TmxMap>;
|
||||
static parseLayers(container: any, xEle: any, map: TmxMap, width: number, height: number, tmxDirectory: string): Promise<void>;
|
||||
static loadTmxGroup(group: TmxGroup, map: TmxMap, xGroup: any, width: number, height: number, tmxDirectory: string): Promise<TmxGroup>;
|
||||
static loadTmxImageLayer(layer: TmxImageLayer, map: TmxMap, xImageLayer: any, tmxDirectory: string): Promise<TmxImageLayer>;
|
||||
static loadTmxLayer(layer: TmxLayer, map: TmxMap, xLayer: any, width: number, height: number): TmxLayer;
|
||||
private static updateMaxTileSizes;
|
||||
static parseOrientationType(type: string): OrientationType;
|
||||
static parseStaggerAxisType(type: string): StaggerAxisType;
|
||||
static parseStaggerIndexType(type: string): StaggerIndexType;
|
||||
static parseRenderOrderType(type: string): RenderOrderType;
|
||||
static parsePropertyDict(prop: any): Map<string, string>;
|
||||
static parseTmxTileset(map: TmxMap, xTileset: any): Promise<TmxTileset>;
|
||||
static loadTmxTileset(tileset: TmxTileset, map: TmxMap, xTileset: any, firstGid: number): Promise<TmxTileset>;
|
||||
static loadTmxTilesetTile(tile: TmxTilesetTile, tileset: TmxTileset, xTile: any, terrains: TmxTerrain[], tmxDirectory: string): Promise<TmxTilesetTile>;
|
||||
static loadTmxAnimationFrame(frame: TmxAnimationFrame, xFrame: any): TmxAnimationFrame;
|
||||
static loadTmxObjectGroup(group: TmxObjectGroup, map: TmxMap, xObjectGroup: any): TmxObjectGroup;
|
||||
static loadTmxObject(obj: TmxObject, map: TmxMap, xObject: any): TmxObject;
|
||||
static loadTmxText(text: TmxText, xText: any): TmxText;
|
||||
static loadTmxAlignment(alignment: TmxAlignment, xText: any): TmxAlignment;
|
||||
static parsePoints(xPoints: any): any[];
|
||||
static parsePoint(pt: {
|
||||
x: number;
|
||||
y: number;
|
||||
}): Vector2;
|
||||
static parseTmxTerrain(xTerrain: any): TmxTerrain;
|
||||
static parseTmxTileOffset(xTileOffset: any): TmxTileOffset;
|
||||
static loadTmxImage(image: TmxImage, xImage: any, tmxDirectory: string): Promise<TmxImage>;
|
||||
}
|
||||
}
|
||||
declare module es {
|
||||
class TiledRendering {
|
||||
static renderMap(map: TmxMap, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number): void;
|
||||
static renderLayer(layer: TmxLayer, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number): void;
|
||||
static renderLayerRenderCamera(layer: ITmxLayer, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number, camerClipBounds: Rectangle): void;
|
||||
static renderLayerCamera(layer: TmxLayer, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number, camerClipBounds: Rectangle): void;
|
||||
static renderImageLayer(layer: TmxImageLayer, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number): void;
|
||||
static renderObjectGroup(objGroup: TmxObjectGroup, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number): void;
|
||||
private static renderTilesetTile;
|
||||
static renderGroup(group: TmxGroup, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, layerDepth: number): void;
|
||||
static renderTile(tile: TmxLayerTile, container: egret.DisplayObjectContainer, position: Vector2, scale: Vector2, tileWidth: number, tileHeight: number, color: egret.ColorMatrixFilter, layerDepth: number): void;
|
||||
}
|
||||
}
|
||||
declare module es {
|
||||
class TmxTileset extends TmxDocument implements ITmxElement {
|
||||
map: TmxMap;
|
||||
firstGid: number;
|
||||
name: any;
|
||||
tileWidth: number;
|
||||
tileHeight: number;
|
||||
spacing: number;
|
||||
margin: number;
|
||||
columns?: number;
|
||||
tileCount?: number;
|
||||
tiles: Map<number, TmxTilesetTile>;
|
||||
tileOffset: TmxTileOffset;
|
||||
properties: Map<string, string>;
|
||||
image: TmxImage;
|
||||
terrains: TmxTerrain[];
|
||||
tileRegions: Map<number, Rectangle>;
|
||||
update(): void;
|
||||
}
|
||||
class TmxTileOffset {
|
||||
x: number;
|
||||
y: number;
|
||||
}
|
||||
class TmxTerrain implements ITmxElement {
|
||||
name: any;
|
||||
tile: number;
|
||||
properties: Map<string, string>;
|
||||
}
|
||||
}
|
||||
declare module es {
|
||||
class TmxTilesetTile {
|
||||
tileset: TmxTileset;
|
||||
id: number;
|
||||
terrainEdges: TmxTerrain[];
|
||||
probability: number;
|
||||
type: string;
|
||||
properties: Map<string, string>;
|
||||
image: TmxImage;
|
||||
objectGroups: TmxObjectGroup[];
|
||||
animationFrames: TmxAnimationFrame[];
|
||||
readonly currentAnimationFrameGid: number;
|
||||
_animationElapsedTime: number;
|
||||
_animationCurrentFrame: number;
|
||||
isDestructable: boolean;
|
||||
isSlope: boolean;
|
||||
isOneWayPlatform: boolean;
|
||||
slopeTopLeft: number;
|
||||
slopeTopRight: number;
|
||||
processProperties(): void;
|
||||
updateAnimatedTiles(): void;
|
||||
}
|
||||
class TmxAnimationFrame {
|
||||
gid: number;
|
||||
duration: number;
|
||||
}
|
||||
}
|
||||
declare module es {
|
||||
class TmxUtils {
|
||||
static decode(data: any, encoding: any, compression: string): Array<number>;
|
||||
static color16ToUnit($color: string): number;
|
||||
}
|
||||
}
|
||||
@@ -1,53 +0,0 @@
|
||||
{
|
||||
"initial": [
|
||||
"libs/modules/egret/egret.js",
|
||||
"libs/modules/egret/egret.web.js",
|
||||
"libs/modules/eui/eui.js",
|
||||
"libs/modules/assetsmanager/assetsmanager.js",
|
||||
"libs/modules/game/game.js",
|
||||
"libs/modules/tween/tween.js",
|
||||
"libs/modules/promise/promise.js",
|
||||
"libs/modules/dragonBones/dragonBones.js",
|
||||
"libs/fairygui/fairygui.js",
|
||||
"libs/framework/framework.js",
|
||||
"libs/framework_tiled/framework_tiled.js"
|
||||
],
|
||||
"game": [
|
||||
"bin-debug/Fgui/common/commonBinder.js",
|
||||
"bin-debug/UI/mvc/BaseView.js",
|
||||
"bin-debug/SampleHelpers/SampleScene.js",
|
||||
"bin-debug/Scenes/NinjaAdventure/ProjectileHitDetector.js",
|
||||
"bin-debug/UI/loading/LoadingView.js",
|
||||
"bin-debug/Scenes/NinjaAdventure/CameraBounds.js",
|
||||
"bin-debug/Fgui/loading/loadingBinder.js",
|
||||
"bin-debug/Fgui/loading/UI_View_loading.js",
|
||||
"bin-debug/Fgui/sc/scBinder.js",
|
||||
"bin-debug/Fgui/sc/UI_btn_sc.js",
|
||||
"bin-debug/Fgui/sc/UI_combo_sc_popup.js",
|
||||
"bin-debug/Fgui/sc/UI_View_sc.js",
|
||||
"bin-debug/Platform.js",
|
||||
"bin-debug/Scenes/AnimatedTiles/AnimatedTilesScene.js",
|
||||
"bin-debug/Scenes/EmptyScene/BasicScene.js",
|
||||
"bin-debug/Scenes/GOAP/GoapScene.js",
|
||||
"bin-debug/Scenes/LineCasting/LineCaster.js",
|
||||
"bin-debug/Scenes/LineCasting/LineCastingScene.js",
|
||||
"bin-debug/Main.js",
|
||||
"bin-debug/Scenes/NinjaAdventure/FireballProjectileController.js",
|
||||
"bin-debug/Scenes/NinjaAdventure/Ninja.js",
|
||||
"bin-debug/Scenes/NinjaAdventure/NinjaAdventureScene.js",
|
||||
"bin-debug/ThemeAdapter.js",
|
||||
"bin-debug/UI/PopManager.js",
|
||||
"bin-debug/UI/loading/LoadingControl.js",
|
||||
"bin-debug/UI/loading/LoadingEvents.js",
|
||||
"bin-debug/AssetAdapter.js",
|
||||
"bin-debug/Fgui/common/UI_com_tips.js",
|
||||
"bin-debug/UI/mvc/EventManager.js",
|
||||
"bin-debug/UI/mvc/Extension.js",
|
||||
"bin-debug/UI/mvc/FguiUtils.js",
|
||||
"bin-debug/UI/mvc/LayerManager.js",
|
||||
"bin-debug/UI/mvc/ViewManager.js",
|
||||
"bin-debug/UI/sc/ScControl.js",
|
||||
"bin-debug/UI/sc/ScEvents.js",
|
||||
"bin-debug/UI/sc/ScView.js"
|
||||
]
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
@@ -1,126 +0,0 @@
|
||||
{
|
||||
"groups": [
|
||||
{
|
||||
"keys": "bg_png,bgNorm_png,moon_png,orange_png,moonNorm_png,orangeNorm_png,tiledMap_json,orthogonal-outside_json,tilemap_json,plume_png,cabbage_png",
|
||||
"name": "preload"
|
||||
},
|
||||
{
|
||||
"keys": "loading",
|
||||
"name": "loading"
|
||||
},
|
||||
{
|
||||
"keys": "sc",
|
||||
"name": "sc"
|
||||
},
|
||||
{
|
||||
"keys": "common",
|
||||
"name": "common"
|
||||
},
|
||||
{
|
||||
"keys": "1_png,2_png,3_png,4_png,5_png,6_png",
|
||||
"name": "characters"
|
||||
}
|
||||
],
|
||||
"resources": [
|
||||
{
|
||||
"url": "preload/bg.png",
|
||||
"type": "image",
|
||||
"name": "bg_png"
|
||||
},
|
||||
{
|
||||
"url": "preload/bgNorm.png",
|
||||
"type": "image",
|
||||
"name": "bgNorm_png"
|
||||
},
|
||||
{
|
||||
"url": "preload/moon.png",
|
||||
"type": "image",
|
||||
"name": "moon_png"
|
||||
},
|
||||
{
|
||||
"url": "preload/orange.png",
|
||||
"type": "image",
|
||||
"name": "orange_png"
|
||||
},
|
||||
{
|
||||
"url": "preload/moonNorm.png",
|
||||
"type": "image",
|
||||
"name": "moonNorm_png"
|
||||
},
|
||||
{
|
||||
"url": "preload/orangeNorm.png",
|
||||
"type": "image",
|
||||
"name": "orangeNorm_png"
|
||||
},
|
||||
{
|
||||
"url": "characters/1.png",
|
||||
"type": "image",
|
||||
"name": "1_png"
|
||||
},
|
||||
{
|
||||
"url": "characters/2.png",
|
||||
"type": "image",
|
||||
"name": "2_png"
|
||||
},
|
||||
{
|
||||
"url": "characters/3.png",
|
||||
"type": "image",
|
||||
"name": "3_png"
|
||||
},
|
||||
{
|
||||
"url": "characters/4.png",
|
||||
"type": "image",
|
||||
"name": "4_png"
|
||||
},
|
||||
{
|
||||
"url": "characters/5.png",
|
||||
"type": "image",
|
||||
"name": "5_png"
|
||||
},
|
||||
{
|
||||
"url": "characters/6.png",
|
||||
"type": "image",
|
||||
"name": "6_png"
|
||||
},
|
||||
{
|
||||
"url": "fgui/common.zip",
|
||||
"type": "bin",
|
||||
"name": "common"
|
||||
},
|
||||
{
|
||||
"url": "fgui/sc.zip",
|
||||
"type": "bin",
|
||||
"name": "sc"
|
||||
},
|
||||
{
|
||||
"url": "fgui/loading.zip",
|
||||
"type": "bin",
|
||||
"name": "loading"
|
||||
},
|
||||
{
|
||||
"url": "preload/caveman/tiledMap.json",
|
||||
"type": "json",
|
||||
"name": "tiledMap_json"
|
||||
},
|
||||
{
|
||||
"url": "preload/orthogonal/orthogonal-outside.json",
|
||||
"type": "json",
|
||||
"name": "orthogonal-outside_json"
|
||||
},
|
||||
{
|
||||
"url": "preload/ninja/tilemap.json",
|
||||
"type": "json",
|
||||
"name": "tilemap_json"
|
||||
},
|
||||
{
|
||||
"url": "preload/plume.png",
|
||||
"type": "image",
|
||||
"name": "plume_png"
|
||||
},
|
||||
{
|
||||
"url": "preload/cabbage.png",
|
||||
"type": "image",
|
||||
"name": "cabbage_png"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -1,34 +0,0 @@
|
||||
{
|
||||
"skins": {
|
||||
"eui.Button": "resource/eui_skins/ButtonSkin.exml",
|
||||
"eui.CheckBox": "resource/eui_skins/CheckBoxSkin.exml",
|
||||
"eui.HScrollBar": "resource/eui_skins/HScrollBarSkin.exml",
|
||||
"eui.HSlider": "resource/eui_skins/HSliderSkin.exml",
|
||||
"eui.Panel": "resource/eui_skins/PanelSkin.exml",
|
||||
"eui.TextInput": "resource/eui_skins/TextInputSkin.exml",
|
||||
"eui.ProgressBar": "resource/eui_skins/ProgressBarSkin.exml",
|
||||
"eui.RadioButton": "resource/eui_skins/RadioButtonSkin.exml",
|
||||
"eui.Scroller": "resource/eui_skins/ScrollerSkin.exml",
|
||||
"eui.ToggleSwitch": "resource/eui_skins/ToggleSwitchSkin.exml",
|
||||
"eui.VScrollBar": "resource/eui_skins/VScrollBarSkin.exml",
|
||||
"eui.VSlider": "resource/eui_skins/VSliderSkin.exml",
|
||||
"eui.ItemRenderer": "resource/eui_skins/ItemRendererSkin.exml"
|
||||
},
|
||||
"autoGenerateExmlsList": true,
|
||||
"exmls": [
|
||||
"resource/eui_skins/ButtonSkin.exml",
|
||||
"resource/eui_skins/CheckBoxSkin.exml",
|
||||
"resource/eui_skins/HScrollBarSkin.exml",
|
||||
"resource/eui_skins/HSliderSkin.exml",
|
||||
"resource/eui_skins/ItemRendererSkin.exml",
|
||||
"resource/eui_skins/PanelSkin.exml",
|
||||
"resource/eui_skins/ProgressBarSkin.exml",
|
||||
"resource/eui_skins/RadioButtonSkin.exml",
|
||||
"resource/eui_skins/ScrollerSkin.exml",
|
||||
"resource/eui_skins/TextInputSkin.exml",
|
||||
"resource/eui_skins/ToggleSwitchSkin.exml",
|
||||
"resource/eui_skins/VScrollBarSkin.exml",
|
||||
"resource/eui_skins/VSliderSkin.exml"
|
||||
],
|
||||
"path": "resource/default.thm.json"
|
||||
}
|
||||
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 4.5 KiB |
|
Before Width: | Height: | Size: 11 KiB |
@@ -1,193 +0,0 @@
|
||||
{ "height":30,
|
||||
"infinite":false,
|
||||
"layers":[
|
||||
{
|
||||
"data":[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2147483652, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2147483652, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2147483652, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2147483652, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 0, 0, 0, 0, 0, 0, 0, 2147483652, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
"height":30,
|
||||
"id":1,
|
||||
"name":"main",
|
||||
"opacity":1,
|
||||
"type":"tilelayer",
|
||||
"visible":true,
|
||||
"width":40,
|
||||
"x":0,
|
||||
"y":0
|
||||
},
|
||||
{
|
||||
"draworder":"topdown",
|
||||
"id":2,
|
||||
"name":"objects",
|
||||
"objects":[
|
||||
{
|
||||
"height":14.8796,
|
||||
"id":6,
|
||||
"name":"spawn",
|
||||
"rotation":0,
|
||||
"type":"",
|
||||
"visible":true,
|
||||
"width":14.8796,
|
||||
"x":48.4346,
|
||||
"y":240.503
|
||||
}],
|
||||
"opacity":1,
|
||||
"type":"objectgroup",
|
||||
"visible":true,
|
||||
"x":0,
|
||||
"y":0
|
||||
}],
|
||||
"nextlayerid":3,
|
||||
"nextobjectid":7,
|
||||
"orientation":"orthogonal",
|
||||
"renderorder":"right-down",
|
||||
"tiledversion":"1.2.1",
|
||||
"tileheight":16,
|
||||
"tilesets":[
|
||||
{
|
||||
"columns":2,
|
||||
"firstgid":1,
|
||||
"image":"tileset.png",
|
||||
"imageheight":32,
|
||||
"imagewidth":32,
|
||||
"margin":0,
|
||||
"name":"tileset",
|
||||
"spacing":0,
|
||||
"tilecount":4,
|
||||
"tileheight":16,
|
||||
"tiles":[
|
||||
{
|
||||
"id":0,
|
||||
"objectgroup":
|
||||
{
|
||||
"draworder":"index",
|
||||
"name":"",
|
||||
"objects":[
|
||||
{
|
||||
"height":16,
|
||||
"id":1,
|
||||
"name":"",
|
||||
"rotation":0,
|
||||
"type":"",
|
||||
"visible":true,
|
||||
"width":16,
|
||||
"x":0,
|
||||
"y":0
|
||||
}],
|
||||
"opacity":1,
|
||||
"type":"objectgroup",
|
||||
"visible":true,
|
||||
"x":0,
|
||||
"y":0
|
||||
}
|
||||
},
|
||||
{
|
||||
"id":2,
|
||||
"objectgroup":
|
||||
{
|
||||
"draworder":"index",
|
||||
"name":"",
|
||||
"objects":[
|
||||
{
|
||||
"height":3,
|
||||
"id":1,
|
||||
"name":"",
|
||||
"rotation":0,
|
||||
"type":"",
|
||||
"visible":true,
|
||||
"width":16,
|
||||
"x":0,
|
||||
"y":0
|
||||
}],
|
||||
"opacity":1,
|
||||
"type":"objectgroup",
|
||||
"visible":true,
|
||||
"x":0,
|
||||
"y":0
|
||||
},
|
||||
"properties":[
|
||||
{
|
||||
"name":"filewtf",
|
||||
"type":"file",
|
||||
"value":""
|
||||
},
|
||||
{
|
||||
"name":"floaty",
|
||||
"type":"float",
|
||||
"value":0
|
||||
},
|
||||
{
|
||||
"name":"inty",
|
||||
"type":"int",
|
||||
"value":0
|
||||
},
|
||||
{
|
||||
"name":"nez:isOneWayPlatform",
|
||||
"type":"bool",
|
||||
"value":true
|
||||
},
|
||||
{
|
||||
"name":"poop",
|
||||
"type":"color",
|
||||
"value":""
|
||||
}]
|
||||
},
|
||||
{
|
||||
"id":3,
|
||||
"objectgroup":
|
||||
{
|
||||
"draworder":"index",
|
||||
"name":"",
|
||||
"objects":[
|
||||
{
|
||||
"height":0,
|
||||
"id":1,
|
||||
"name":"",
|
||||
"polygon":[
|
||||
{
|
||||
"x":0,
|
||||
"y":0
|
||||
},
|
||||
{
|
||||
"x":0,
|
||||
"y":16
|
||||
},
|
||||
{
|
||||
"x":16,
|
||||
"y":16
|
||||
}],
|
||||
"rotation":0,
|
||||
"type":"",
|
||||
"visible":true,
|
||||
"width":0,
|
||||
"x":0,
|
||||
"y":0
|
||||
}],
|
||||
"opacity":1,
|
||||
"type":"objectgroup",
|
||||
"visible":true,
|
||||
"x":0,
|
||||
"y":0
|
||||
},
|
||||
"properties":[
|
||||
{
|
||||
"name":"nez:isSlope",
|
||||
"type":"bool",
|
||||
"value":true
|
||||
},
|
||||
{
|
||||
"name":"nez:slopeTopLeft",
|
||||
"type":"int",
|
||||
"value":0
|
||||
},
|
||||
{
|
||||
"name":"nez:slopeTopRight",
|
||||
"type":"int",
|
||||
"value":15
|
||||
}]
|
||||
}],
|
||||
"tilewidth":16
|
||||
}],
|
||||
"tilewidth":16,
|
||||
"type":"map",
|
||||
"version":1.2,
|
||||
"width":40
|
||||
}
|
||||
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 770 B |
|
Before Width: | Height: | Size: 19 KiB |
|
Before Width: | Height: | Size: 86 KiB |
|
Before Width: | Height: | Size: 5.8 KiB |
|
Before Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 13 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
@@ -1,452 +0,0 @@
|
||||
|
||||
/**
|
||||
* ResourceManager 配置文件
|
||||
*/
|
||||
type ResourceManagerConfig = {
|
||||
/**
|
||||
* 构建与发布配置
|
||||
*/
|
||||
buildConfig: (param: BuildConfigParam) => UserConfig,
|
||||
/**
|
||||
* 设置资源类型
|
||||
*/
|
||||
typeSelector: (path: string) => (string | null | undefined)
|
||||
/**
|
||||
* 设置资源的合并策略
|
||||
*/
|
||||
mergeSelector?: (path: string) => (string | null | undefined),
|
||||
/**
|
||||
* 设置资源的命名策略
|
||||
* beta 功能,请勿随意使用
|
||||
*/
|
||||
nameSelector?: (path: string) => (string | null | undefined)
|
||||
}
|
||||
/**
|
||||
* 构建配置
|
||||
*/
|
||||
type UserConfig = {
|
||||
/**
|
||||
* 输出路径
|
||||
*/
|
||||
outputDir: string,
|
||||
/**
|
||||
* 插件
|
||||
*/
|
||||
commands: (string | plugins.Command)[]
|
||||
}
|
||||
|
||||
type BuildConfigParam = {
|
||||
|
||||
|
||||
/**
|
||||
* 当前命令,build 或者 command
|
||||
*/
|
||||
readonly command: string;
|
||||
|
||||
/**
|
||||
* 发布平台
|
||||
*/
|
||||
readonly target: string;
|
||||
|
||||
/**
|
||||
* 开发者指定的版本号
|
||||
*/
|
||||
readonly version: string;
|
||||
|
||||
/**
|
||||
* 项目名称
|
||||
*/
|
||||
readonly projectName: string;
|
||||
|
||||
/**
|
||||
* 项目路径
|
||||
*/
|
||||
readonly projectRoot: string;
|
||||
|
||||
/**
|
||||
* 项目配置
|
||||
*/
|
||||
readonly projectConfig: ProjectConfig;
|
||||
}
|
||||
|
||||
type ProjectConfig = {
|
||||
entryClassName: string;
|
||||
orientation: string;
|
||||
frameRate: number;
|
||||
scaleMode: string;
|
||||
contentWidth: number;
|
||||
contentHeight: number;
|
||||
showFPS: boolean;
|
||||
fpsStyles: string;
|
||||
showLog: boolean;
|
||||
maxTouches: number;
|
||||
}
|
||||
/**
|
||||
* 匹配机制,将满足 from 的文件输出为 to 格式的文件
|
||||
* from 采用 glob 表达式 , to 包含 [path][name][hash][ext]四个变量
|
||||
* 示例:{ from:"resource/**.*" , to:"[path][name]_[hash].[ext]" }
|
||||
*/
|
||||
type Matcher = {
|
||||
|
||||
from: string,
|
||||
|
||||
to: string
|
||||
|
||||
}
|
||||
|
||||
|
||||
declare namespace plugins {
|
||||
|
||||
interface CommandContext {
|
||||
|
||||
/**
|
||||
* 可以用此接口进行文件创建
|
||||
*/
|
||||
createFile(relativeFilePath: string, contents: Buffer);
|
||||
|
||||
/**
|
||||
* 构建配置
|
||||
*/
|
||||
buildConfig: BuildConfigParam;
|
||||
|
||||
/**
|
||||
* 项目绝对路径
|
||||
*/
|
||||
projectRoot: string;
|
||||
|
||||
/**
|
||||
* 项目输出绝对路径
|
||||
*/
|
||||
outputDir: string;
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建管线命令
|
||||
*/
|
||||
interface Command {
|
||||
|
||||
/**
|
||||
* 项目中的每个文件都会执行此函数,返回 file 表示保留此文件,返回 null 表示将此文件从构建管线中删除,即不会发布
|
||||
*/
|
||||
onFile?(file: File): Promise<File | null>
|
||||
|
||||
/**
|
||||
* 项目中所有文件均执行完后,最终会执行此函数。
|
||||
* 这个函数主要被用于创建新文件
|
||||
*/
|
||||
onFinish?(pluginContext?: CommandContext): Promise<void>
|
||||
|
||||
[options: string]: any;
|
||||
}
|
||||
|
||||
interface File {
|
||||
|
||||
/**
|
||||
* 文件内容的二进制流,如果开发者需要修改文件内容,请修改此属性
|
||||
*/
|
||||
contents: Buffer;
|
||||
|
||||
|
||||
/**
|
||||
* 文件绝对路径,如果开发者需要对文件进行重命名,请修改此属性
|
||||
*/
|
||||
path: string;
|
||||
|
||||
/**
|
||||
* 文件所在的项目的项目路径
|
||||
*/
|
||||
readonly base: string;
|
||||
|
||||
/**
|
||||
* 文件的相对于 base 属性的相对路径
|
||||
*/
|
||||
readonly relative: string;
|
||||
|
||||
|
||||
/**
|
||||
* 文件变更历史,history[0] 即 origin 属性
|
||||
*/
|
||||
readonly history: ReadonlyArray<string>;
|
||||
|
||||
|
||||
/**
|
||||
* 文件所在的文件夹的绝对路径
|
||||
*/
|
||||
readonly dirname: string;
|
||||
|
||||
/**
|
||||
* 文件的文件名
|
||||
*/
|
||||
readonly basename: string;
|
||||
|
||||
|
||||
/**
|
||||
* 文件的扩展名
|
||||
*/
|
||||
readonly extname: string;
|
||||
|
||||
/**
|
||||
* 文件的初始文件名
|
||||
*/
|
||||
readonly origin: string;
|
||||
|
||||
/**
|
||||
* 其他自定义属性
|
||||
*/
|
||||
[customProperty: string]: any;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
declare module 'built-in' {
|
||||
|
||||
/**
|
||||
* 混淆插件参数,设置源代码和目标代码
|
||||
*/
|
||||
type UglifyPluginOption = { sources: string[], target: string };
|
||||
|
||||
type UglifyPluginOptions = UglifyPluginOption[];
|
||||
|
||||
/**
|
||||
* 混淆插件
|
||||
*/
|
||||
export class UglifyPlugin implements plugins.Command {
|
||||
|
||||
constructor(mergeSelector: UglifyPluginOptions);
|
||||
|
||||
}
|
||||
|
||||
|
||||
type LibraryType = "debug" | "release";
|
||||
|
||||
type CompilePluginOptions = { libraryType: LibraryType, defines?: any };
|
||||
/**
|
||||
* 编译命令
|
||||
*/
|
||||
export class CompilePlugin implements plugins.Command {
|
||||
|
||||
constructor(options: CompilePluginOptions);
|
||||
}
|
||||
|
||||
/**
|
||||
* EXML 插件,用于发布 EXML 文件
|
||||
*/
|
||||
export class ExmlPlugin implements plugins.Command {
|
||||
|
||||
constructor(publishPolicy: EXML_Publish_Policy);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 发布策略
|
||||
* * debug : 默认策略,用于开发环境
|
||||
* * contents : 将 EXML 的内容写入到主题文件中
|
||||
* * gjs : 将生成的JS文件写入到主题文件中
|
||||
* * commonjs : 将EXML合并为一个 CommonJS 风格的文件
|
||||
* * commonjs2 : 将EXML合并为一个含有解析方法和皮肤定义的文件,且皮肤抽离为一份配置
|
||||
* * json : 将每个EXML文件生成一份配置
|
||||
*/
|
||||
type EXML_Publish_Policy = "debug" | "contents" | "gjs" | "commonjs" | "commonjs2" | "json"
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 生成 manifest 文件,这个文件会被用于记录 JavaScript 文件的版本号
|
||||
*/
|
||||
export class ManifestPlugin implements plugins.Command {
|
||||
constructor(options?: ManifestPluginOptions)
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成文件的文件名
|
||||
* 支持 json 与 js 两种格式
|
||||
*/
|
||||
type ManifestPluginOptions = {
|
||||
|
||||
output: string,
|
||||
|
||||
hash?: "crc32",
|
||||
|
||||
/**
|
||||
* 是否输出转换过程
|
||||
*/
|
||||
verbose?: boolean,
|
||||
/**
|
||||
* 其他传递的消息参数
|
||||
*/
|
||||
info?:any
|
||||
/**
|
||||
* use wechat engine plugin
|
||||
*/
|
||||
useWxPlugin?: boolean
|
||||
/**
|
||||
* use QQgame engine plugin
|
||||
*/
|
||||
qqPlugin?: { use: boolean, pluginList: string[] }
|
||||
}
|
||||
|
||||
/**
|
||||
* EmitResConfigFilePlugin 的参数
|
||||
* * output: 生成路径,可以指定生成为 *.res.js 文件或者 *.res.json 文件
|
||||
* * typeSelector: 根据文件路径决定文件类型
|
||||
* * nameSelector: 根据文件路径决定文件的资源名
|
||||
* * groupSelector: 根据文件路径决定资源所述的资源组
|
||||
*/
|
||||
type EmitResConfigFilePluginOptions = {
|
||||
output: string,
|
||||
typeSelector: (path: string) => string | null | undefined,
|
||||
nameSelector: (path: string) => string | null | undefined,
|
||||
groupSelector: (path: string) => string | null | undefined,
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 生成 res.json 文件或者 res.js 文件
|
||||
*/
|
||||
export class EmitResConfigFilePlugin implements plugins.Command {
|
||||
|
||||
constructor(options: EmitResConfigFilePluginOptions)
|
||||
|
||||
}
|
||||
|
||||
export type ConvertResourceConfigPluginOption = {
|
||||
|
||||
resourceConfigFiles: { filename: string, root: string }[];
|
||||
|
||||
nameSelector: (url: string) => string;
|
||||
|
||||
TM_Verbose: boolean;
|
||||
}
|
||||
|
||||
export class ConvertResConfigFilePlugin implements plugins.Command {
|
||||
|
||||
constructor(options: ConvertResourceConfigPluginOption);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 增量编译
|
||||
* 这个插件生成的 JavaScript 代码不会被添加到构建管线中,后续其他插件无法获取生成的 js 文件
|
||||
* 这个功能将会在未来被 watch 模式代替掉
|
||||
*/
|
||||
export class IncrementCompilePlugin implements plugins.Command {
|
||||
|
||||
}
|
||||
|
||||
type TextureMergerOptions = {
|
||||
textureMergerRoot: string[];
|
||||
}
|
||||
|
||||
/**
|
||||
* 使用 TextureMerger 实现纹理自动合并,依赖 TextureMerger 1.7 以上的版本
|
||||
*/
|
||||
export class TextureMergerPlugin implements plugins.Command {
|
||||
|
||||
constructor(options: TextureMergerOptions);
|
||||
|
||||
}
|
||||
|
||||
type CleanPluginOptions = {
|
||||
|
||||
matchers: string[]
|
||||
}
|
||||
|
||||
|
||||
export class CleanPlugin implements plugins.Command {
|
||||
constructor(options: CleanPluginOptions);
|
||||
}
|
||||
|
||||
|
||||
type RenamePluginOptions = {
|
||||
|
||||
/**
|
||||
* 是否输出日志
|
||||
* Whether to output the log
|
||||
*/
|
||||
verbose?: boolean
|
||||
|
||||
/**
|
||||
* 采用何种 hash 算法,目前暂时只支持 crc32
|
||||
* What hash algorithm is used, currently only crc32 is supported
|
||||
*/
|
||||
hash?: "crc32"
|
||||
|
||||
|
||||
/**
|
||||
* 设置匹配规则,将指定文件进行改名
|
||||
* 该参数是个数组,允许设置多个匹配规则
|
||||
* Set up matching rules to copy specified files to other folders
|
||||
* This parameter is an array that allows multiple matching rules to be set
|
||||
*/
|
||||
matchers: Matcher[]
|
||||
|
||||
/**
|
||||
* 回调函数,返回值里包括文件的一些信息
|
||||
* The callback function, return value includes some information about the file
|
||||
*/
|
||||
callback?: Function
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 修改文件名插件
|
||||
*/
|
||||
export class RenamePlugin implements plugins.Command {
|
||||
constructor(options: RenamePluginOptions);
|
||||
}
|
||||
|
||||
type ResSplitPluginOptions = {
|
||||
|
||||
/**
|
||||
* 是否输出日志
|
||||
* Whether to output the log
|
||||
*/
|
||||
verbose?: boolean
|
||||
|
||||
/**
|
||||
* 设置匹配规则,将指定文件拷贝至其他文件夹
|
||||
* 该参数是个数组,允许设置多个匹配规则
|
||||
* Set up matching rules to copy specified files to other folders
|
||||
* This parameter is an array that allows multiple matching rules to be set
|
||||
*/
|
||||
matchers: Matcher[]
|
||||
}
|
||||
|
||||
export class ResSplitPlugin implements plugins.Command {
|
||||
constructor(options: ResSplitPluginOptions);
|
||||
}
|
||||
|
||||
|
||||
type ZipPluginOptions = {
|
||||
|
||||
mergeSelector: (p: string) => string
|
||||
}
|
||||
|
||||
export class ZipPlugin implements plugins.Command {
|
||||
|
||||
constructor(option: ZipPluginOptions);
|
||||
}
|
||||
|
||||
type MergeEuiJsonPluginOptions = {
|
||||
|
||||
mergeSelector?: (p: string) => string | null,
|
||||
|
||||
createConfig?: boolean
|
||||
}
|
||||
export class MergeEuiJsonPlugin implements plugins.Command {
|
||||
|
||||
constructor(option?: MergeEuiJsonPluginOptions);
|
||||
}
|
||||
}
|
||||
@@ -1,82 +0,0 @@
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
export class BaidugamePlugin implements plugins.Command {
|
||||
|
||||
constructor() {
|
||||
}
|
||||
async onFile(file: plugins.File) {
|
||||
if (file.extname == '.js') {
|
||||
const filename = file.origin;
|
||||
if (filename == "libs/modules/promise/promise.js" || filename == 'libs/modules/promise/promise.min.js') {
|
||||
return null;
|
||||
}
|
||||
if (filename == 'libs/modules/egret/egret.js' || filename == 'libs/modules/egret/egret.min.js') {
|
||||
let content = file.contents.toString();
|
||||
content += `;window.egret = egret;`;
|
||||
content = content.replace(/definition = __global/, "definition = window");
|
||||
file.contents = new Buffer(content);
|
||||
}
|
||||
else {
|
||||
let content = file.contents.toString();
|
||||
if (
|
||||
filename == "libs/modules/res/res.js" ||
|
||||
filename == 'libs/modules/res/res.min.js' ||
|
||||
filename == 'libs/modules/assetsmanager/assetsmanager.min.js' ||
|
||||
filename == 'libs/modules/assetsmanager/assetsmanager.js'
|
||||
) {
|
||||
content += ";window.RES = RES;"
|
||||
}
|
||||
if (filename == "libs/modules/eui/eui.js" || filename == 'libs/modules/eui/eui.min.js') {
|
||||
content += ";window.eui = eui;"
|
||||
}
|
||||
if (filename == 'libs/modules/dragonBones/dragonBones.js' || filename == 'libs/modules/dragonBones/dragonBones.min.js') {
|
||||
content += ';window.dragonBones = dragonBones';
|
||||
}
|
||||
content = "var egret = window.egret;" + content;
|
||||
if (filename == 'main.js') {
|
||||
content += "\n;window.Main = Main;"
|
||||
}
|
||||
file.contents = new Buffer(content);
|
||||
}
|
||||
}
|
||||
return file;
|
||||
}
|
||||
async onFinish(pluginContext: plugins.CommandContext) {
|
||||
//同步 index.html 配置到 game.js
|
||||
const gameJSPath = path.join(pluginContext.outputDir, "game.js");
|
||||
if(!fs.existsSync(gameJSPath)) {
|
||||
console.log(`${gameJSPath}不存在,请先使用 Launcher 发布百度小游戏`);
|
||||
return;
|
||||
}
|
||||
let gameJSContent = fs.readFileSync(gameJSPath, { encoding: "utf8" });
|
||||
const projectConfig = pluginContext.buildConfig.projectConfig;
|
||||
const optionStr =
|
||||
`entryClassName: ${projectConfig.entryClassName},\n\t\t` +
|
||||
`orientation: ${projectConfig.orientation},\n\t\t` +
|
||||
`frameRate: ${projectConfig.frameRate},\n\t\t` +
|
||||
`scaleMode: ${projectConfig.scaleMode},\n\t\t` +
|
||||
`contentWidth: ${projectConfig.contentWidth},\n\t\t` +
|
||||
`contentHeight: ${projectConfig.contentHeight},\n\t\t` +
|
||||
`showFPS: ${projectConfig.showFPS},\n\t\t` +
|
||||
`fpsStyles: ${projectConfig.fpsStyles},\n\t\t` +
|
||||
`showLog: ${projectConfig.showLog},\n\t\t` +
|
||||
`maxTouches: ${projectConfig.maxTouches},`;
|
||||
const reg = /\/\/----auto option start----[\s\S]*\/\/----auto option end----/;
|
||||
const replaceStr = '\/\/----auto option start----\n\t\t' + optionStr + '\n\t\t\/\/----auto option end----';
|
||||
gameJSContent = gameJSContent.replace(reg, replaceStr);
|
||||
fs.writeFileSync(gameJSPath, gameJSContent);
|
||||
|
||||
//修改横竖屏
|
||||
let orientation;
|
||||
if (projectConfig.orientation == '"landscape"') {
|
||||
orientation = "landscape";
|
||||
}
|
||||
else {
|
||||
orientation = "portrait";
|
||||
}
|
||||
const gameJSONPath = path.join(pluginContext.outputDir, "game.json");
|
||||
let gameJSONContent = JSON.parse(fs.readFileSync(gameJSONPath, { encoding: "utf8" }));
|
||||
gameJSONContent.deviceOrientation = orientation;
|
||||
fs.writeFileSync(gameJSONPath, JSON.stringify(gameJSONContent, null, "\t"));
|
||||
}
|
||||
}
|
||||
@@ -1,64 +0,0 @@
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
|
||||
|
||||
type ManifestConfig = {
|
||||
|
||||
initial: string[],
|
||||
|
||||
game: string[]
|
||||
|
||||
}
|
||||
|
||||
export class BricksPlugin implements plugins.Command {
|
||||
|
||||
constructor() {
|
||||
}
|
||||
async onFile(file: plugins.File) {
|
||||
const filename = file.basename;
|
||||
if (filename == 'manifest.json') {
|
||||
const contents = file.contents.toString();
|
||||
const jsonData: ManifestConfig = JSON.parse(contents);
|
||||
|
||||
let content = '';
|
||||
content += `BK.Script.loadlib("GameRes://js/promise.js");\n`;
|
||||
for (let item of jsonData.initial) {
|
||||
if (item != 'js/promise.js' && item != 'js/promise.min.js') {
|
||||
content += `BK.Script.loadlib("GameRes://${item}");\n`
|
||||
}
|
||||
}
|
||||
for (let item of jsonData.game) {
|
||||
content += `BK.Script.loadlib("GameRes://${item}");\n`
|
||||
}
|
||||
content += `BK.Script.loadlib("GameRes://egret.bricks.js");\n`
|
||||
file.path = file.dirname + '/manifest.js'
|
||||
file.contents = new Buffer(content);
|
||||
} else if (filename == 'main.js') {
|
||||
const content = file.contents.toString();
|
||||
let result = content.replace(/RES\.loadConfig\("resource\/default\.res\.json", "resource\/"\)/gm, 'RES.loadConfig("GameRes://resource/default.res.json", "GameRes://resource/")');
|
||||
result = result.replace(/eui\.Theme\("resource\/default\.thm\.json", _this\.stage\)/gm, 'eui.Theme("GameRes://resource/default.thm.json", _this.stage)');
|
||||
result += ";global.Main = Main;";
|
||||
file.path = file.dirname + '/main.js'
|
||||
file.contents = new Buffer(result);
|
||||
} else if (filename == 'promise.js') {
|
||||
return null;
|
||||
}
|
||||
return file;
|
||||
}
|
||||
async onFinish(pluginContext: plugins.CommandContext) {
|
||||
//同步index.html 配置到main.js
|
||||
let mainJSPath = path.join(pluginContext.outputDir, 'main.js');
|
||||
let mainJSContent = fs.readFileSync(mainJSPath, { encoding: "utf8" });
|
||||
let projectConfig = pluginContext.buildConfig.projectConfig;
|
||||
|
||||
mainJSContent = mainJSContent.replace(/frameRate: 30/gm, `frameRate: ${projectConfig.frameRate}`);
|
||||
mainJSContent = mainJSContent.replace(/contentWidth: 640/gm, `contentWidth: ${projectConfig.contentWidth}`);
|
||||
mainJSContent = mainJSContent.replace(/contentHeight: 1136/gm, `contentHeight: ${projectConfig.contentHeight}`);
|
||||
mainJSContent = mainJSContent.replace(/entryClassName: "Main"/gm, `entryClassName: ${projectConfig.entryClassName}`);
|
||||
mainJSContent = mainJSContent.replace(/scaleMode: "showAll"/gm, `scaleMode: ${projectConfig.scaleMode}`);
|
||||
mainJSContent = mainJSContent.replace(/orientation: "auto"/gm, `orientation: ${projectConfig.orientation}`);
|
||||
fs.writeFileSync(mainJSPath, mainJSContent);
|
||||
}
|
||||
}
|
||||
|
||||
declare var egret;
|
||||
@@ -1,52 +0,0 @@
|
||||
/// 阅读 api.d.ts 查看文档
|
||||
///<reference path="api.d.ts"/>
|
||||
|
||||
import * as path from 'path';
|
||||
import { UglifyPlugin, CompilePlugin, ManifestPlugin, ExmlPlugin, EmitResConfigFilePlugin, TextureMergerPlugin, CleanPlugin } from 'built-in';
|
||||
import * as defaultConfig from './config';
|
||||
|
||||
const config: ResourceManagerConfig = {
|
||||
|
||||
buildConfig: (params) => {
|
||||
const { target, command, projectName, version } = params;
|
||||
const outputDir = `../${projectName}_android/assets/game`;
|
||||
if (command == 'build') {
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CleanPlugin({ matchers: ["js", "resource"] }),
|
||||
new CompilePlugin({ libraryType: "debug", defines: { DEBUG: true, RELEASE: false } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new ManifestPlugin({ output: 'manifest.json' })
|
||||
]
|
||||
}
|
||||
}
|
||||
else if (command == 'publish') {
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CleanPlugin({ matchers: ["js", "resource"] }),
|
||||
new CompilePlugin({ libraryType: "release", defines: { DEBUG: false, RELEASE: true } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new UglifyPlugin([{
|
||||
sources: ["main.js"],
|
||||
target: "main.min.js"
|
||||
}
|
||||
]),
|
||||
new ManifestPlugin({ output: 'manifest.json' })
|
||||
]
|
||||
}
|
||||
}
|
||||
else {
|
||||
throw `unknown command : ${params.command}`;
|
||||
}
|
||||
},
|
||||
|
||||
mergeSelector: defaultConfig.mergeSelector,
|
||||
|
||||
typeSelector: defaultConfig.typeSelector
|
||||
}
|
||||
|
||||
|
||||
|
||||
export = config;
|
||||
@@ -1,63 +0,0 @@
|
||||
/// 阅读 api.d.ts 查看文档
|
||||
///<reference path="api.d.ts"/>
|
||||
|
||||
import * as path from 'path';
|
||||
import { UglifyPlugin, CompilePlugin, ManifestPlugin, ExmlPlugin, EmitResConfigFilePlugin, TextureMergerPlugin, CleanPlugin } from 'built-in';
|
||||
import { BaidugamePlugin } from './baidugame/baidugame';
|
||||
import { CustomPlugin } from './myplugin';
|
||||
import * as defaultConfig from './config';
|
||||
|
||||
const config: ResourceManagerConfig = {
|
||||
|
||||
buildConfig: (params) => {
|
||||
|
||||
const { target, command, projectName, version } = params;
|
||||
const outputDir = `../${projectName}_baidugame`;
|
||||
if (command == 'build') {
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CleanPlugin({ matchers: ["js", "resource"] }),
|
||||
new CompilePlugin({ libraryType: "debug", defines: { DEBUG: true, RELEASE: false } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new BaidugamePlugin(),
|
||||
new ManifestPlugin({ output: 'manifest.js' })
|
||||
]
|
||||
}
|
||||
}
|
||||
else if (command == 'publish') {
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CleanPlugin({ matchers: ["js", "resource"] }),
|
||||
new CompilePlugin({ libraryType: "release", defines: { DEBUG: false, RELEASE: true } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new BaidugamePlugin(),
|
||||
new UglifyPlugin([
|
||||
// 使用 EUI 项目,要压缩皮肤文件,可以开启这个压缩配置
|
||||
// {
|
||||
// sources: ["resource/default.thm.js"],
|
||||
// target: "default.thm.min.js"
|
||||
// },
|
||||
{
|
||||
sources: ["main.js"],
|
||||
target: "main.min.js"
|
||||
}
|
||||
]),
|
||||
new ManifestPlugin({ output: 'manifest.js' })
|
||||
]
|
||||
}
|
||||
}
|
||||
else {
|
||||
throw `unknown command : ${params.command}`;
|
||||
}
|
||||
},
|
||||
|
||||
mergeSelector: defaultConfig.mergeSelector,
|
||||
|
||||
typeSelector: defaultConfig.typeSelector
|
||||
}
|
||||
|
||||
|
||||
|
||||
export = config;
|
||||
@@ -1,55 +0,0 @@
|
||||
/// 阅读 api.d.ts 查看文档
|
||||
///<reference path="api.d.ts"/>
|
||||
|
||||
import * as path from 'path';
|
||||
import { UglifyPlugin, CompilePlugin, ManifestPlugin, ExmlPlugin, EmitResConfigFilePlugin, TextureMergerPlugin, CleanPlugin } from 'built-in';
|
||||
import { BricksPlugin } from './bricks/bricks';
|
||||
import { CustomPlugin } from './myplugin';
|
||||
import * as defaultConfig from './config';
|
||||
|
||||
const config: ResourceManagerConfig = {
|
||||
|
||||
buildConfig: (params) => {
|
||||
|
||||
const { target, command, projectName, version } = params;
|
||||
const outputDir = `../${projectName}_bricks/PublicBrickEngineGame/Res`;
|
||||
if (command == 'build') {
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CompilePlugin({ libraryType: "debug", defines: { DEBUG: true, RELEASE: false } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new ManifestPlugin({ output: 'manifest.json' }),
|
||||
new BricksPlugin()
|
||||
]
|
||||
}
|
||||
}
|
||||
else if (command == 'publish') {
|
||||
console.log('执行publish')
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CompilePlugin({ libraryType: "debug", defines: { DEBUG: true, RELEASE: false } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new ManifestPlugin({ output: 'manifest.json' }),
|
||||
new UglifyPlugin([{
|
||||
sources: ["main.js"],
|
||||
target: "js/main.min.js"
|
||||
}
|
||||
]),
|
||||
new BricksPlugin(),
|
||||
]
|
||||
}
|
||||
} else {
|
||||
throw `unknown command : ${params.command}`;
|
||||
}
|
||||
},
|
||||
|
||||
mergeSelector: defaultConfig.mergeSelector,
|
||||
|
||||
typeSelector: defaultConfig.typeSelector
|
||||
}
|
||||
|
||||
|
||||
|
||||
export = config;
|
||||
@@ -1,52 +0,0 @@
|
||||
/// 阅读 api.d.ts 查看文档
|
||||
///<reference path="api.d.ts"/>
|
||||
|
||||
import * as path from 'path';
|
||||
import { UglifyPlugin, CompilePlugin, ManifestPlugin, ExmlPlugin, EmitResConfigFilePlugin, TextureMergerPlugin, CleanPlugin } from 'built-in';
|
||||
import * as defaultConfig from './config';
|
||||
|
||||
const config: ResourceManagerConfig = {
|
||||
|
||||
buildConfig: (params) => {
|
||||
const { target, command, projectName, version } = params;
|
||||
const outputDir = `../${projectName}_ios/assets/game`;
|
||||
if (command == 'build') {
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CleanPlugin({ matchers: ["js", "resource"] }),
|
||||
new CompilePlugin({ libraryType: "debug", defines: { DEBUG: true, RELEASE: false } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new ManifestPlugin({ output: 'manifest.json' })
|
||||
]
|
||||
}
|
||||
}
|
||||
else if (command == 'publish') {
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CleanPlugin({ matchers: ["js", "resource"] }),
|
||||
new CompilePlugin({ libraryType: "release", defines: { DEBUG: false, RELEASE: true } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new UglifyPlugin([{
|
||||
sources: ["main.js"],
|
||||
target: "main.min.js"
|
||||
}
|
||||
]),
|
||||
new ManifestPlugin({ output: 'manifest.json' })
|
||||
]
|
||||
}
|
||||
}
|
||||
else {
|
||||
throw `unknown command : ${params.command}`;
|
||||
}
|
||||
},
|
||||
|
||||
mergeSelector: defaultConfig.mergeSelector,
|
||||
|
||||
typeSelector: defaultConfig.typeSelector
|
||||
}
|
||||
|
||||
|
||||
|
||||
export = config;
|
||||
@@ -1,63 +0,0 @@
|
||||
/// 阅读 api.d.ts 查看文档
|
||||
///<reference path="api.d.ts"/>
|
||||
|
||||
import * as path from 'path';
|
||||
import { UglifyPlugin, CompilePlugin, ManifestPlugin, ExmlPlugin, EmitResConfigFilePlugin, TextureMergerPlugin, CleanPlugin } from 'built-in';
|
||||
import { MygamePlugin } from './mygame/mygame';
|
||||
import { CustomPlugin } from './myplugin';
|
||||
import * as defaultConfig from './config';
|
||||
|
||||
const config: ResourceManagerConfig = {
|
||||
|
||||
buildConfig: (params) => {
|
||||
|
||||
const { target, command, projectName, version } = params;
|
||||
const outputDir = `../${projectName}_mygame`;
|
||||
if (command == 'build') {
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CleanPlugin({ matchers: ["js", "resource"] }),
|
||||
new CompilePlugin({ libraryType: "debug", defines: { DEBUG: true, RELEASE: false } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new MygamePlugin(),
|
||||
new ManifestPlugin({ output: 'manifest.js' })
|
||||
]
|
||||
}
|
||||
}
|
||||
else if (command == 'publish') {
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CleanPlugin({ matchers: ["js", "resource"] }),
|
||||
new CompilePlugin({ libraryType: "release", defines: { DEBUG: false, RELEASE: true } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new MygamePlugin(),
|
||||
new UglifyPlugin([
|
||||
// 使用 EUI 项目,要压缩皮肤文件,可以开启这个压缩配置
|
||||
// {
|
||||
// sources: ["resource/default.thm.js"],
|
||||
// target: "default.thm.min.js"
|
||||
// },
|
||||
{
|
||||
sources: ["main.js"],
|
||||
target: "main.min.js"
|
||||
}
|
||||
]),
|
||||
new ManifestPlugin({ output: 'manifest.js' })
|
||||
]
|
||||
}
|
||||
}
|
||||
else {
|
||||
throw `unknown command : ${params.command}`;
|
||||
}
|
||||
},
|
||||
|
||||
mergeSelector: defaultConfig.mergeSelector,
|
||||
|
||||
typeSelector: defaultConfig.typeSelector
|
||||
}
|
||||
|
||||
|
||||
|
||||
export = config;
|
||||
@@ -1,62 +0,0 @@
|
||||
/// 阅读 api.d.ts 查看文档
|
||||
///<reference path="api.d.ts"/>
|
||||
|
||||
import * as path from 'path';
|
||||
import { UglifyPlugin, CompilePlugin, ManifestPlugin, ExmlPlugin, ResSplitPlugin, CleanPlugin } from 'built-in';
|
||||
import { OppogamePlugin } from './oppogame/oppogame';
|
||||
import * as defaultConfig from './config';
|
||||
|
||||
const config: ResourceManagerConfig = {
|
||||
|
||||
buildConfig: (params) => {
|
||||
|
||||
const { target, command, projectName, version } = params;
|
||||
const outputDir = `../${projectName}_oppogame`;
|
||||
if (command == 'build') {
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CleanPlugin({ matchers: ["js", "resource"] }),
|
||||
new CompilePlugin({ libraryType: "debug", defines: { DEBUG: true, RELEASE: false } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new OppogamePlugin(),
|
||||
new ManifestPlugin({ output: 'manifest.js' })
|
||||
]
|
||||
}
|
||||
}
|
||||
else if (command == 'publish') {
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CleanPlugin({ matchers: ["js", "resource"] }),
|
||||
new CompilePlugin({ libraryType: "release", defines: { DEBUG: false, RELEASE: true } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new OppogamePlugin(),
|
||||
new UglifyPlugin([
|
||||
// 使用 EUI 项目,要压缩皮肤文件,可以开启这个压缩配置
|
||||
// {
|
||||
// sources: ["resource/default.thm.js"],
|
||||
// target: "default.thm.min.js"
|
||||
// },
|
||||
{
|
||||
sources: ["main.js"],
|
||||
target: "main.min.js"
|
||||
}
|
||||
]),
|
||||
new ManifestPlugin({ output: 'manifest.js' })
|
||||
]
|
||||
}
|
||||
}
|
||||
else {
|
||||
throw `unknown command : ${params.command}`;
|
||||
}
|
||||
},
|
||||
|
||||
mergeSelector: defaultConfig.mergeSelector,
|
||||
|
||||
typeSelector: defaultConfig.typeSelector
|
||||
}
|
||||
|
||||
|
||||
|
||||
export = config;
|
||||
@@ -1,62 +0,0 @@
|
||||
/// 阅读 api.d.ts 查看文档
|
||||
///<reference path="api.d.ts"/>
|
||||
|
||||
import * as path from 'path';
|
||||
import { UglifyPlugin, CompilePlugin, ManifestPlugin, ExmlPlugin, ResSplitPlugin, CleanPlugin } from 'built-in';
|
||||
import { MiqgamePlugin } from './qgame/qgame';
|
||||
import * as defaultConfig from './config';
|
||||
|
||||
const config: ResourceManagerConfig = {
|
||||
|
||||
buildConfig: (params) => {
|
||||
|
||||
const { target, command, projectName, version } = params;
|
||||
const outputDir = `../${projectName}_qgame`;
|
||||
if (command == 'build') {
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CleanPlugin({ matchers: ["js", "resource"] }),
|
||||
new CompilePlugin({ libraryType: "debug", defines: { DEBUG: true, RELEASE: false } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new MiqgamePlugin(),
|
||||
new ManifestPlugin({ output: 'manifest.js' })
|
||||
]
|
||||
}
|
||||
}
|
||||
else if (command == 'publish') {
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CleanPlugin({ matchers: ["js", "resource"] }),
|
||||
new CompilePlugin({ libraryType: "release", defines: { DEBUG: false, RELEASE: true } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new MiqgamePlugin(),
|
||||
new UglifyPlugin([
|
||||
// 使用 EUI 项目,要压缩皮肤文件,可以开启这个压缩配置
|
||||
// {
|
||||
// sources: ["resource/default.thm.js"],
|
||||
// target: "default.thm.min.js"
|
||||
// },
|
||||
{
|
||||
sources: ["main.js"],
|
||||
target: "main.min.js"
|
||||
}
|
||||
]),
|
||||
new ManifestPlugin({ output: 'manifest.js' })
|
||||
]
|
||||
}
|
||||
}
|
||||
else {
|
||||
throw `unknown command : ${params.command}`;
|
||||
}
|
||||
},
|
||||
|
||||
mergeSelector: defaultConfig.mergeSelector,
|
||||
|
||||
typeSelector: defaultConfig.typeSelector
|
||||
}
|
||||
|
||||
|
||||
|
||||
export = config;
|
||||
@@ -1,65 +0,0 @@
|
||||
/// 阅读 api.d.ts 查看文档
|
||||
///<reference path="api.d.ts"/>
|
||||
|
||||
import * as path from 'path';
|
||||
import { UglifyPlugin, CompilePlugin, ManifestPlugin, ExmlPlugin, EmitResConfigFilePlugin, TextureMergerPlugin, CleanPlugin } from 'built-in';
|
||||
import { QQgamePlugin } from './qqgame/qqgame';
|
||||
import { CustomPlugin } from './myplugin';
|
||||
import * as defaultConfig from './config';
|
||||
//是否使用QQ小游戏引擎插件
|
||||
const useQQPlugin: boolean = false;
|
||||
let pluginList: string[] = []
|
||||
const config: ResourceManagerConfig = {
|
||||
|
||||
buildConfig: (params) => {
|
||||
|
||||
const { target, command, projectName, version } = params;
|
||||
const outputDir = `../${projectName}_qqgame`;
|
||||
if (command == 'build') {
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CleanPlugin({ matchers: ["js", "resource"] }),
|
||||
new CompilePlugin({ libraryType: "debug", defines: { DEBUG: true, RELEASE: false } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new QQgamePlugin(useQQPlugin, pluginList),
|
||||
new ManifestPlugin({ output: 'manifest.js', qqPlugin: { use: useQQPlugin, pluginList: pluginList } })
|
||||
]
|
||||
}
|
||||
}
|
||||
else if (command == 'publish') {
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CleanPlugin({ matchers: ["js", "resource"] }),
|
||||
new CompilePlugin({ libraryType: "release", defines: { DEBUG: false, RELEASE: true } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new QQgamePlugin(useQQPlugin, pluginList),
|
||||
new UglifyPlugin([
|
||||
// 使用 EUI 项目,要压缩皮肤文件,可以开启这个压缩配置
|
||||
// {
|
||||
// sources: ["resource/default.thm.js"],
|
||||
// target: "default.thm.min.js"
|
||||
// },
|
||||
{
|
||||
sources: ["main.js"],
|
||||
target: "main.min.js"
|
||||
}
|
||||
]),
|
||||
new ManifestPlugin({ output: 'manifest.js', qqPlugin: { use: useQQPlugin, pluginList: pluginList } })
|
||||
]
|
||||
}
|
||||
}
|
||||
else {
|
||||
throw `unknown command : ${params.command}`;
|
||||
}
|
||||
},
|
||||
|
||||
mergeSelector: defaultConfig.mergeSelector,
|
||||
|
||||
typeSelector: defaultConfig.typeSelector
|
||||
}
|
||||
|
||||
|
||||
|
||||
export = config;
|
||||
@@ -1,95 +0,0 @@
|
||||
/// 阅读 api.d.ts 查看文档
|
||||
///<reference path="api.d.ts"/>
|
||||
|
||||
import * as path from 'path';
|
||||
import { UglifyPlugin, IncrementCompilePlugin, CompilePlugin, ManifestPlugin, ExmlPlugin, EmitResConfigFilePlugin, TextureMergerPlugin, RenamePlugin } from 'built-in';
|
||||
import { WxgamePlugin } from './wxgame/wxgame';
|
||||
import { BricksPlugin } from './bricks/bricks';
|
||||
import { CustomPlugin } from './myplugin';
|
||||
|
||||
const config: ResourceManagerConfig = {
|
||||
|
||||
|
||||
buildConfig: (params) => {
|
||||
|
||||
const { target, command, projectName, version } = params;
|
||||
|
||||
if (command == 'build') {
|
||||
const outputDir = '.';
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
// new EmitResConfigFilePlugin({
|
||||
// output: "resource/default.res.json",
|
||||
// typeSelector: config.typeSelector,
|
||||
// nameSelector: p => path.basename(p).replace(/\./gi, "_"),
|
||||
// groupSelector: p => "preload"
|
||||
// }),
|
||||
new ExmlPlugin('debug'), // 非 EUI 项目关闭此设置
|
||||
new IncrementCompilePlugin(),
|
||||
]
|
||||
}
|
||||
}
|
||||
else if (command == 'publish') {
|
||||
const outputDir = `bin-release/web/${version}`;
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CustomPlugin(),
|
||||
new CompilePlugin({ libraryType: "release", defines: { DEBUG: false, RELEASE: true } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new UglifyPlugin([{
|
||||
sources: ["main.js"],
|
||||
target: "main.min.js"
|
||||
}]),
|
||||
new RenamePlugin({
|
||||
verbose: true, hash: 'crc32', matchers: [
|
||||
{ from: "**/*.js", to: "[path][name]_[hash].[ext]" }
|
||||
]
|
||||
}),
|
||||
new ManifestPlugin({ output: "manifest.json" })
|
||||
]
|
||||
}
|
||||
}
|
||||
else {
|
||||
throw `unknown command : ${params.command}`
|
||||
}
|
||||
},
|
||||
|
||||
mergeSelector: (path) => {
|
||||
if (path.indexOf("assets/bitmap/") >= 0) {
|
||||
return "assets/bitmap/sheet.sheet"
|
||||
}
|
||||
else if (path.indexOf("armature") >= 0 && path.indexOf(".json") >= 0) {
|
||||
return "assets/armature/1.zip";
|
||||
}
|
||||
},
|
||||
|
||||
typeSelector: (path) => {
|
||||
const ext = path.substr(path.lastIndexOf(".") + 1);
|
||||
const typeMap = {
|
||||
"jpg": "image",
|
||||
"png": "image",
|
||||
"webp": "image",
|
||||
"json": "json",
|
||||
"fnt": "font",
|
||||
"pvr": "pvr",
|
||||
"mp3": "sound",
|
||||
"zip": "zip",
|
||||
"sheet": "sheet",
|
||||
"exml": "text"
|
||||
}
|
||||
let type = typeMap[ext];
|
||||
if (type == "json") {
|
||||
if (path.indexOf("sheet") >= 0) {
|
||||
type = "sheet";
|
||||
} else if (path.indexOf("movieclip") >= 0) {
|
||||
type = "movieclip";
|
||||
};
|
||||
}
|
||||
return type;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
export = config;
|
||||
@@ -1,62 +0,0 @@
|
||||
/// 阅读 api.d.ts 查看文档
|
||||
///<reference path="api.d.ts"/>
|
||||
|
||||
import * as path from 'path';
|
||||
import { UglifyPlugin, CompilePlugin, ManifestPlugin, ExmlPlugin, ResSplitPlugin, CleanPlugin } from 'built-in';
|
||||
import { VivogamePlugin } from './vivogame/vivogame';
|
||||
import * as defaultConfig from './config';
|
||||
|
||||
const config: ResourceManagerConfig = {
|
||||
|
||||
buildConfig: (params) => {
|
||||
|
||||
const { target, command, projectName, version } = params;
|
||||
const outputDir = `../${projectName}_vivogame/src`;
|
||||
if (command == 'build') {
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CleanPlugin({ matchers: ["../engine/js", "resource"] }),
|
||||
new CompilePlugin({ libraryType: "debug", defines: { DEBUG: true, RELEASE: false } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new VivogamePlugin(),
|
||||
new ManifestPlugin({ output: 'manifest.js', info: { target: 'vivogame' } })
|
||||
]
|
||||
}
|
||||
}
|
||||
else if (command == 'publish') {
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CleanPlugin({ matchers: ["../engine/js", "resource"] }),
|
||||
new CompilePlugin({ libraryType: "release", defines: { DEBUG: false, RELEASE: true } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new VivogamePlugin(),
|
||||
new UglifyPlugin([
|
||||
// 使用 EUI 项目,要压缩皮肤文件,可以开启这个压缩配置
|
||||
// {
|
||||
// sources: ["resource/default.thm.js"],
|
||||
// target: "default.thm.min.js"
|
||||
// },
|
||||
{
|
||||
sources: ["main.js"],
|
||||
target: "main.min.js"
|
||||
}
|
||||
]),
|
||||
new ManifestPlugin({ output: 'manifest.js', info: { target: 'vivogame' } })
|
||||
]
|
||||
}
|
||||
}
|
||||
else {
|
||||
throw `unknown command : ${params.command}`;
|
||||
}
|
||||
},
|
||||
|
||||
mergeSelector: defaultConfig.mergeSelector,
|
||||
|
||||
typeSelector: defaultConfig.typeSelector
|
||||
}
|
||||
|
||||
|
||||
|
||||
export = config;
|
||||
@@ -1,65 +0,0 @@
|
||||
/// 阅读 api.d.ts 查看文档
|
||||
///<reference path="api.d.ts"/>
|
||||
|
||||
import * as path from 'path';
|
||||
import { UglifyPlugin, CompilePlugin, ManifestPlugin, ExmlPlugin, EmitResConfigFilePlugin, TextureMergerPlugin, CleanPlugin } from 'built-in';
|
||||
import { WxgamePlugin } from './wxgame/wxgame';
|
||||
import { CustomPlugin } from './myplugin';
|
||||
import * as defaultConfig from './config';
|
||||
|
||||
//是否使用微信分离插件
|
||||
const useWxPlugin: boolean = false;
|
||||
const config: ResourceManagerConfig = {
|
||||
|
||||
buildConfig: (params) => {
|
||||
|
||||
const { target, command, projectName, version } = params;
|
||||
const outputDir = `../${projectName}_wxgame`;
|
||||
if (command == 'build') {
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CleanPlugin({ matchers: ["js", "resource", "egret-library"] }),
|
||||
new CompilePlugin({ libraryType: "debug", defines: { DEBUG: true, RELEASE: false } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new WxgamePlugin(useWxPlugin),
|
||||
new ManifestPlugin({ output: 'manifest.js' })
|
||||
]
|
||||
}
|
||||
}
|
||||
else if (command == 'publish') {
|
||||
return {
|
||||
outputDir,
|
||||
commands: [
|
||||
new CleanPlugin({ matchers: ["js", "resource", "egret-library"] }),
|
||||
new CompilePlugin({ libraryType: "release", defines: { DEBUG: false, RELEASE: true } }),
|
||||
new ExmlPlugin('commonjs'), // 非 EUI 项目关闭此设置
|
||||
new WxgamePlugin(useWxPlugin),
|
||||
new UglifyPlugin([
|
||||
// 使用 EUI 项目,要压缩皮肤文件,可以开启这个压缩配置
|
||||
// {
|
||||
// sources: ["resource/default.thm.js"],
|
||||
// target: "default.thm.min.js"
|
||||
// },
|
||||
{
|
||||
sources: ["main.js"],
|
||||
target: "main.min.js"
|
||||
}
|
||||
]),
|
||||
new ManifestPlugin({ output: 'manifest.js', useWxPlugin: useWxPlugin })
|
||||
]
|
||||
}
|
||||
}
|
||||
else {
|
||||
throw `unknown command : ${params.command}`;
|
||||
}
|
||||
},
|
||||
|
||||
mergeSelector: defaultConfig.mergeSelector,
|
||||
|
||||
typeSelector: defaultConfig.typeSelector
|
||||
}
|
||||
|
||||
|
||||
|
||||
export = config;
|
||||
@@ -1,82 +0,0 @@
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
export class MygamePlugin implements plugins.Command {
|
||||
|
||||
constructor() {
|
||||
}
|
||||
async onFile(file: plugins.File) {
|
||||
if (file.extname == '.js') {
|
||||
const filename = file.origin;
|
||||
if (filename == "libs/modules/promise/promise.js" || filename == 'libs/modules/promise/promise.min.js') {
|
||||
return null;
|
||||
}
|
||||
if (filename == 'libs/modules/egret/egret.js' || filename == 'libs/modules/egret/egret.min.js') {
|
||||
let content = file.contents.toString();
|
||||
content += `;window.egret = egret;`;
|
||||
content = content.replace(/definition = __global/, "definition = window");
|
||||
file.contents = new Buffer(content);
|
||||
}
|
||||
else {
|
||||
let content = file.contents.toString();
|
||||
if (
|
||||
filename == "libs/modules/res/res.js" ||
|
||||
filename == 'libs/modules/res/res.min.js' ||
|
||||
filename == 'libs/modules/assetsmanager/assetsmanager.min.js' ||
|
||||
filename == 'libs/modules/assetsmanager/assetsmanager.js'
|
||||
) {
|
||||
content += ";window.RES = RES;"
|
||||
}
|
||||
if (filename == "libs/modules/eui/eui.js" || filename == 'libs/modules/eui/eui.min.js') {
|
||||
content += ";window.eui = eui;"
|
||||
}
|
||||
if (filename == 'libs/modules/dragonBones/dragonBones.js' || filename == 'libs/modules/dragonBones/dragonBones.min.js') {
|
||||
content += ';window.dragonBones = dragonBones';
|
||||
}
|
||||
content = "var egret = window.egret;" + content;
|
||||
if (filename == 'main.js') {
|
||||
content += "\n;window.Main = Main;"
|
||||
}
|
||||
file.contents = new Buffer(content);
|
||||
}
|
||||
}
|
||||
return file;
|
||||
}
|
||||
async onFinish(pluginContext: plugins.CommandContext) {
|
||||
//同步 index.html 配置到 game.js
|
||||
const gameJSPath = path.join(pluginContext.outputDir, "game.js");
|
||||
if (!fs.existsSync(gameJSPath)) {
|
||||
console.log(`${gameJSPath}不存在,请先使用 Launcher 发布支付宝小游戏`);
|
||||
return;
|
||||
}
|
||||
let gameJSContent = fs.readFileSync(gameJSPath, { encoding: "utf8" });
|
||||
const projectConfig = pluginContext.buildConfig.projectConfig;
|
||||
const optionStr =
|
||||
`entryClassName: ${projectConfig.entryClassName},\n\t\t` +
|
||||
`orientation: ${projectConfig.orientation},\n\t\t` +
|
||||
`frameRate: ${projectConfig.frameRate},\n\t\t` +
|
||||
`scaleMode: ${projectConfig.scaleMode},\n\t\t` +
|
||||
`contentWidth: ${projectConfig.contentWidth},\n\t\t` +
|
||||
`contentHeight: ${projectConfig.contentHeight},\n\t\t` +
|
||||
`showFPS: ${projectConfig.showFPS},\n\t\t` +
|
||||
`fpsStyles: ${projectConfig.fpsStyles},\n\t\t` +
|
||||
`showLog: ${projectConfig.showLog},\n\t\t` +
|
||||
`maxTouches: ${projectConfig.maxTouches},`;
|
||||
const reg = /\/\/----auto option start----[\s\S]*\/\/----auto option end----/;
|
||||
const replaceStr = '\/\/----auto option start----\n\t\t' + optionStr + '\n\t\t\/\/----auto option end----';
|
||||
gameJSContent = gameJSContent.replace(reg, replaceStr);
|
||||
fs.writeFileSync(gameJSPath, gameJSContent);
|
||||
|
||||
//修改横竖屏
|
||||
let orientation;
|
||||
if (projectConfig.orientation == '"landscape"') {
|
||||
orientation = "landscape";
|
||||
}
|
||||
else {
|
||||
orientation = "portrait";
|
||||
}
|
||||
const gameJSONPath = path.join(pluginContext.outputDir, "game.json");
|
||||
let gameJSONContent = JSON.parse(fs.readFileSync(gameJSONPath, { encoding: "utf8" }));
|
||||
gameJSONContent.deviceOrientation = orientation;
|
||||
fs.writeFileSync(gameJSONPath, JSON.stringify(gameJSONContent, null, "\t"));
|
||||
}
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
/**
|
||||
* 示例自定义插件,您可以查阅 http://developer.egret.com/cn/github/egret-docs/Engine2D/projectConfig/cmdExtensionPlugin/index.html
|
||||
* 了解如何开发一个自定义插件
|
||||
*/
|
||||
export class CustomPlugin implements plugins.Command {
|
||||
|
||||
constructor() {
|
||||
}
|
||||
|
||||
async onFile(file: plugins.File) {
|
||||
return file;
|
||||
}
|
||||
|
||||
async onFinish(commandContext: plugins.CommandContext) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,90 +0,0 @@
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
export class OppogamePlugin implements plugins.Command {
|
||||
|
||||
constructor() {
|
||||
}
|
||||
async onFile(file: plugins.File) {
|
||||
if (file.extname == '.js') {
|
||||
const filename = file.origin;
|
||||
if (filename == "libs/modules/promise/promise.js" || filename == 'libs/modules/promise/promise.min.js') {
|
||||
return null;
|
||||
}
|
||||
if (filename == 'libs/modules/egret/egret.js' || filename == 'libs/modules/egret/egret.min.js') {
|
||||
let content = file.contents.toString();
|
||||
content += `;window.egret = egret;`;
|
||||
content = content.replace(/definition = __global/, "definition = window");
|
||||
file.contents = new Buffer(content);
|
||||
}
|
||||
else {
|
||||
let content = file.contents.toString();
|
||||
if (
|
||||
filename == "libs/modules/res/res.js" ||
|
||||
filename == 'libs/modules/res/res.min.js' ||
|
||||
filename == 'libs/modules/assetsmanager/assetsmanager.min.js' ||
|
||||
filename == 'libs/modules/assetsmanager/assetsmanager.js'
|
||||
) {
|
||||
content += ";window.RES = RES;"
|
||||
}
|
||||
if (filename == "libs/modules/eui/eui.js" || filename == 'libs/modules/eui/eui.min.js') {
|
||||
content += ";window.eui = eui;"
|
||||
if(filename == "libs/modules/eui/eui.js"){
|
||||
content = content.replace("function getRepeatedIds","window.getRepeatedIds=function getRepeatedIds");
|
||||
content = content.replace("function getIds","window.getIds=function getIds");
|
||||
content = content.replace("function toXMLString","window.toXMLString=function toXMLString");
|
||||
content = content.replace("function checkDeclarations","window.checkDeclarations=function checkDeclarations");
|
||||
content = content.replace("function getPropertyStr","window.getPropertyStr=function getPropertyStr");
|
||||
}
|
||||
}
|
||||
if (filename == 'libs/modules/dragonBones/dragonBones.js' || filename == 'libs/modules/dragonBones/dragonBones.min.js') {
|
||||
content += ';window.dragonBones = dragonBones';
|
||||
}
|
||||
content = "var egret = window.egret;" + content;
|
||||
|
||||
if (filename == 'main.js') {
|
||||
content += "\n;window.Main = Main;"
|
||||
}
|
||||
file.contents = new Buffer(content);
|
||||
}
|
||||
}
|
||||
return file;
|
||||
}
|
||||
async onFinish(pluginContext: plugins.CommandContext) {
|
||||
//同步 index.html 配置到 game.js
|
||||
const gameJSPath = path.join(pluginContext.outputDir, "main.js");
|
||||
if(!fs.existsSync(gameJSPath)) {
|
||||
console.log(`${gameJSPath}不存在,请先使用 Launcher 发布Oppo快游戏`);
|
||||
return;
|
||||
}
|
||||
let gameJSContent = fs.readFileSync(gameJSPath, { encoding: "utf8" });
|
||||
const projectConfig = pluginContext.buildConfig.projectConfig;
|
||||
const optionStr =
|
||||
`entryClassName: ${projectConfig.entryClassName},\n\t\t` +
|
||||
`orientation: ${projectConfig.orientation},\n\t\t` +
|
||||
`frameRate: ${projectConfig.frameRate},\n\t\t` +
|
||||
`scaleMode: ${projectConfig.scaleMode},\n\t\t` +
|
||||
`contentWidth: ${projectConfig.contentWidth},\n\t\t` +
|
||||
`contentHeight: ${projectConfig.contentHeight},\n\t\t` +
|
||||
`showFPS: ${projectConfig.showFPS},\n\t\t` +
|
||||
`fpsStyles: ${projectConfig.fpsStyles},\n\t\t` +
|
||||
`showLog: ${projectConfig.showLog},\n\t\t` +
|
||||
`maxTouches: ${projectConfig.maxTouches},`;
|
||||
const reg = /\/\/----auto option start----[\s\S]*\/\/----auto option end----/;
|
||||
const replaceStr = '\/\/----auto option start----\n\t\t' + optionStr + '\n\t\t\/\/----auto option end----';
|
||||
gameJSContent = gameJSContent.replace(reg, replaceStr);
|
||||
fs.writeFileSync(gameJSPath, gameJSContent);
|
||||
|
||||
//修改横竖屏
|
||||
let orientation;
|
||||
if (projectConfig.orientation == '"landscape"') {
|
||||
orientation = "landscape";
|
||||
}
|
||||
else {
|
||||
orientation = "portrait";
|
||||
}
|
||||
const gameJSONPath = path.join(pluginContext.outputDir, "manifest.json");
|
||||
let gameJSONContent = JSON.parse(fs.readFileSync(gameJSONPath, { encoding: "utf8" }));
|
||||
gameJSONContent.orientation = orientation;
|
||||
fs.writeFileSync(gameJSONPath, JSON.stringify(gameJSONContent, null, "\t"));
|
||||
}
|
||||
}
|
||||
@@ -1,90 +0,0 @@
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
export class MiqgamePlugin implements plugins.Command {
|
||||
|
||||
constructor() {
|
||||
}
|
||||
async onFile(file: plugins.File) {
|
||||
if (file.extname == '.js') {
|
||||
const filename = file.origin;
|
||||
if (filename == "libs/modules/promise/promise.js" || filename == 'libs/modules/promise/promise.min.js') {
|
||||
return null;
|
||||
}
|
||||
if (filename == 'libs/modules/egret/egret.js' || filename == 'libs/modules/egret/egret.min.js') {
|
||||
let content = file.contents.toString();
|
||||
content += `;window.egret = egret;`;
|
||||
content = content.replace(/definition = __global/, "definition = window");
|
||||
file.contents = new Buffer(content);
|
||||
}
|
||||
else {
|
||||
let content = file.contents.toString();
|
||||
if (
|
||||
filename == "libs/modules/res/res.js" ||
|
||||
filename == 'libs/modules/res/res.min.js' ||
|
||||
filename == 'libs/modules/assetsmanager/assetsmanager.min.js' ||
|
||||
filename == 'libs/modules/assetsmanager/assetsmanager.js'
|
||||
) {
|
||||
content += ";window.RES = RES;"
|
||||
}
|
||||
if (filename == "libs/modules/eui/eui.js" || filename == 'libs/modules/eui/eui.min.js') {
|
||||
content += ";window.eui = eui;"
|
||||
if(filename == "libs/modules/eui/eui.js"){
|
||||
content = content.replace("function getRepeatedIds","window.getRepeatedIds=function getRepeatedIds");
|
||||
content = content.replace("function getIds","window.getIds=function getIds");
|
||||
content = content.replace("function toXMLString","window.toXMLString=function toXMLString");
|
||||
content = content.replace("function checkDeclarations","window.checkDeclarations=function checkDeclarations");
|
||||
content = content.replace("function getPropertyStr","window.getPropertyStr=function getPropertyStr");
|
||||
}
|
||||
}
|
||||
if (filename == 'libs/modules/dragonBones/dragonBones.js' || filename == 'libs/modules/dragonBones/dragonBones.min.js') {
|
||||
content += ';window.dragonBones = dragonBones';
|
||||
}
|
||||
content = "var egret = window.egret;" + content;
|
||||
|
||||
if (filename == 'main.js') {
|
||||
content += "\n;window.Main = Main;"
|
||||
}
|
||||
file.contents = new Buffer(content);
|
||||
}
|
||||
}
|
||||
return file;
|
||||
}
|
||||
async onFinish(pluginContext: plugins.CommandContext) {
|
||||
//同步 index.html 配置到 game.js
|
||||
const gameJSPath = path.join(pluginContext.outputDir, "main.js");
|
||||
if(!fs.existsSync(gameJSPath)) {
|
||||
console.log(`${gameJSPath}不存在,请先使用 Launcher 发布小米快游戏`);
|
||||
return;
|
||||
}
|
||||
let gameJSContent = fs.readFileSync(gameJSPath, { encoding: "utf8" });
|
||||
const projectConfig = pluginContext.buildConfig.projectConfig;
|
||||
const optionStr =
|
||||
`entryClassName: ${projectConfig.entryClassName},\n\t\t` +
|
||||
`orientation: ${projectConfig.orientation},\n\t\t` +
|
||||
`frameRate: ${projectConfig.frameRate},\n\t\t` +
|
||||
`scaleMode: ${projectConfig.scaleMode},\n\t\t` +
|
||||
`contentWidth: ${projectConfig.contentWidth},\n\t\t` +
|
||||
`contentHeight: ${projectConfig.contentHeight},\n\t\t` +
|
||||
`showFPS: ${projectConfig.showFPS},\n\t\t` +
|
||||
`fpsStyles: ${projectConfig.fpsStyles},\n\t\t` +
|
||||
`showLog: ${projectConfig.showLog},\n\t\t` +
|
||||
`maxTouches: ${projectConfig.maxTouches},`;
|
||||
const reg = /\/\/----auto option start----[\s\S]*\/\/----auto option end----/;
|
||||
const replaceStr = '\/\/----auto option start----\n\t\t' + optionStr + '\n\t\t\/\/----auto option end----';
|
||||
gameJSContent = gameJSContent.replace(reg, replaceStr);
|
||||
fs.writeFileSync(gameJSPath, gameJSContent);
|
||||
|
||||
//修改横竖屏
|
||||
let orientation;
|
||||
if (projectConfig.orientation == '"landscape"') {
|
||||
orientation = "landscape";
|
||||
}
|
||||
else {
|
||||
orientation = "portrait";
|
||||
}
|
||||
const gameJSONPath = path.join(pluginContext.outputDir, "manifest.json");
|
||||
let gameJSONContent = JSON.parse(fs.readFileSync(gameJSONPath, { encoding: "utf8" }));
|
||||
gameJSONContent.orientation = orientation;
|
||||
fs.writeFileSync(gameJSONPath, JSON.stringify(gameJSONContent, null, "\t"));
|
||||
}
|
||||
}
|
||||
@@ -1,118 +0,0 @@
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
export class QQgamePlugin implements plugins.Command {
|
||||
private useQQPlugin: boolean = false;
|
||||
private pliginList: string[] = [];//qq engine plugin
|
||||
constructor(useQQPlugin: boolean, pliginList: string[]) {
|
||||
this.useQQPlugin = useQQPlugin
|
||||
this.pliginList = pliginList
|
||||
}
|
||||
|
||||
async onFile(file: plugins.File) {
|
||||
if (file.extname == '.js') {
|
||||
|
||||
const filename = file.origin;
|
||||
if (filename == "libs/modules/promise/promise.js" || filename == 'libs/modules/promise/promise.min.js') {
|
||||
return null;
|
||||
}
|
||||
if (this.useQQPlugin) {
|
||||
const basename = file.basename
|
||||
//QQ 小游戏引擎插件,支持下列官方库
|
||||
let engineJS = ['assetsmanager', 'dragonBones', 'egret', 'game', 'eui', 'socket', 'tween']
|
||||
for (let i in engineJS) {
|
||||
let jsName = engineJS[i]
|
||||
if (basename == jsName + ".js" || basename == jsName + ".min.js") {
|
||||
this.pliginList.push(`requirePlugin("egret-library/${jsName}.min.js")`);
|
||||
return null
|
||||
}
|
||||
}
|
||||
}
|
||||
if (filename == 'libs/modules/egret/egret.js' || filename == 'libs/modules/egret/egret.min.js') {
|
||||
let content = file.contents.toString();
|
||||
content += `;window.egret = egret;`;
|
||||
content = content.replace(/definition = __global/, "definition = window");
|
||||
file.contents = new Buffer(content);
|
||||
}
|
||||
else {
|
||||
let content = file.contents.toString();
|
||||
if (
|
||||
filename == "libs/modules/res/res.js" ||
|
||||
filename == 'libs/modules/res/res.min.js' ||
|
||||
filename == 'libs/modules/assetsmanager/assetsmanager.min.js' ||
|
||||
filename == 'libs/modules/assetsmanager/assetsmanager.js'
|
||||
) {
|
||||
content += ";window.RES = RES;"
|
||||
}
|
||||
if (filename == "libs/modules/eui/eui.js" || filename == 'libs/modules/eui/eui.min.js') {
|
||||
content += ";window.eui = eui;"
|
||||
}
|
||||
if (filename == 'libs/modules/dragonBones/dragonBones.js' || filename == 'libs/modules/dragonBones/dragonBones.min.js') {
|
||||
content += ';window.dragonBones = dragonBones';
|
||||
}
|
||||
content = "var egret = window.egret;" + content;
|
||||
if (filename == 'main.js') {
|
||||
content += "\n;window.Main = Main;"
|
||||
}
|
||||
file.contents = new Buffer(content);
|
||||
}
|
||||
}
|
||||
return file;
|
||||
}
|
||||
async onFinish(pluginContext: plugins.CommandContext) {
|
||||
let { projectRoot, outputDir, buildConfig } = pluginContext
|
||||
//同步 index.html 配置到 game.js
|
||||
const gameJSPath = path.join(outputDir, "game.js");
|
||||
if (!fs.existsSync(gameJSPath)) {
|
||||
console.log(`${gameJSPath}不存在,请先使用 Launcher 发布QQ小游戏`);
|
||||
return;
|
||||
}
|
||||
let gameJSContent = fs.readFileSync(gameJSPath, { encoding: "utf8" });
|
||||
const projectConfig = buildConfig.projectConfig;
|
||||
const optionStr =
|
||||
`entryClassName: ${projectConfig.entryClassName},\n\t\t` +
|
||||
`orientation: ${projectConfig.orientation},\n\t\t` +
|
||||
`frameRate: ${projectConfig.frameRate},\n\t\t` +
|
||||
`scaleMode: ${projectConfig.scaleMode},\n\t\t` +
|
||||
`contentWidth: ${projectConfig.contentWidth},\n\t\t` +
|
||||
`contentHeight: ${projectConfig.contentHeight},\n\t\t` +
|
||||
`showFPS: ${projectConfig.showFPS},\n\t\t` +
|
||||
`fpsStyles: ${projectConfig.fpsStyles},\n\t\t` +
|
||||
`showLog: ${projectConfig.showLog},\n\t\t` +
|
||||
`maxTouches: ${projectConfig.maxTouches},`;
|
||||
const reg = /\/\/----auto option start----[\s\S]*\/\/----auto option end----/;
|
||||
const replaceStr = '\/\/----auto option start----\n\t\t' + optionStr + '\n\t\t\/\/----auto option end----';
|
||||
gameJSContent = gameJSContent.replace(reg, replaceStr);
|
||||
fs.writeFileSync(gameJSPath, gameJSContent);
|
||||
|
||||
//修改横竖屏
|
||||
let orientation;
|
||||
if (projectConfig.orientation == '"landscape"') {
|
||||
orientation = "landscape";
|
||||
}
|
||||
else {
|
||||
orientation = "portrait";
|
||||
}
|
||||
const gameJSONPath = path.join(outputDir, "game.json");
|
||||
let gameJSONContent = this.readData(gameJSONPath);
|
||||
gameJSONContent.deviceOrientation = orientation;
|
||||
if (!gameJSONContent.plugins) {
|
||||
gameJSONContent.plugins = {}
|
||||
}
|
||||
if (!this.useQQPlugin) {
|
||||
delete gameJSONContent.plugins["egret-library"]
|
||||
} else {
|
||||
let engineVersion = this.readData(path.join(projectRoot, "egretProperties.json")).engineVersion;
|
||||
gameJSONContent.plugins["egret-library"] = {
|
||||
"provider": "1110108620",
|
||||
"version": engineVersion
|
||||
}
|
||||
}
|
||||
this.writeData(gameJSONContent, gameJSONPath)
|
||||
}
|
||||
readData(filePath: string): any {
|
||||
return JSON.parse(fs.readFileSync(filePath, { encoding: "utf8" }));
|
||||
}
|
||||
writeData(data: object, filePath: string) {
|
||||
fs.writeFileSync(filePath, JSON.stringify(data, null, "\t"));
|
||||
}
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
/* Basic Options */
|
||||
"target": "es5", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', or 'ESNEXT'. */
|
||||
"module": "commonjs", /* Specify module code generation: 'commonjs', 'amd', 'system', 'umd' or 'es2015'. */
|
||||
"lib": [
|
||||
"es5",
|
||||
"es2015.promise"
|
||||
], /* Specify library files to be included in the compilation: */
|
||||
"allowJs": true, /* Allow javascript files to be compiled. */
|
||||
// "checkJs": true, /* Report errors in .js files. */
|
||||
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
|
||||
// "declaration": true, /* Generates corresponding '.d.ts' file. */
|
||||
// "sourceMap": true, /* Generates corresponding '.map' file. */
|
||||
// "outFile": "./", /* Concatenate and emit output to single file. */
|
||||
// "outDir": "./", /* Redirect output structure to the directory. */
|
||||
// "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
|
||||
// "removeComments": true, /* Do not emit comments to output. */
|
||||
// "noEmit": true, /* Do not emit outputs. */
|
||||
// "importHelpers": true, /* Import emit helpers from 'tslib'. */
|
||||
// "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
|
||||
// "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
|
||||
/* Strict Type-Checking Options */
|
||||
"strict": true, /* Enable all strict type-checking options. */
|
||||
"noImplicitAny": false /* Raise error on expressions and declarations with an implied 'any' type. */
|
||||
// "strictNullChecks": true, /* Enable strict null checks. */
|
||||
// "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
|
||||
// "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
|
||||
/* Additional Checks */
|
||||
// "noUnusedLocals": true, /* Report errors on unused locals. */
|
||||
// "noUnusedParameters": true, /* Report errors on unused parameters. */
|
||||
// "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
|
||||
// "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
|
||||
/* Module Resolution Options */
|
||||
// "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
|
||||
// "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
|
||||
/* List of root folders whose combined content represents the structure of the project at runtime. */
|
||||
// "typeRoots": [], /* List of folders to include type definitions from. */
|
||||
// "types": [], /* Type declaration files to be included in compilation. */
|
||||
// "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
|
||||
/* Source Map Options */
|
||||
// "sourceRoot": "./", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
|
||||
// "mapRoot": "./", /* Specify the location where debugger should locate map files instead of generated locations. */
|
||||
// "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
|
||||
// "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
|
||||
/* Experimental Options */
|
||||
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
|
||||
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
|
||||
}
|
||||
}
|
||||
@@ -1,126 +0,0 @@
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
export class VivogamePlugin implements plugins.Command {
|
||||
jsFileList: any = []
|
||||
constructor() {
|
||||
}
|
||||
async onFile(file: plugins.File) {
|
||||
if (file.extname == '.js') {
|
||||
const filename = file.origin;
|
||||
|
||||
if (filename == "libs/modules/promise/promise.js" || filename == 'libs/modules/promise/promise.min.js') {
|
||||
return null;
|
||||
}
|
||||
this.jsFileList.push(file.basename)
|
||||
if (filename == 'libs/modules/egret/egret.js' || filename == 'libs/modules/egret/egret.min.js') {
|
||||
let content = file.contents.toString();
|
||||
content += `;window.egret = egret;`;
|
||||
content = content.replace(/definition = __global/, "definition = window");
|
||||
file.contents = new Buffer(content);
|
||||
}
|
||||
else {
|
||||
let content = file.contents.toString();
|
||||
if (
|
||||
filename == "libs/modules/res/res.js" ||
|
||||
filename == 'libs/modules/res/res.min.js' ||
|
||||
filename == 'libs/modules/assetsmanager/assetsmanager.min.js' ||
|
||||
filename == 'libs/modules/assetsmanager/assetsmanager.js'
|
||||
) {
|
||||
content += ";window.RES = RES;"
|
||||
}
|
||||
if (filename == "libs/modules/eui/eui.js" || filename == 'libs/modules/eui/eui.min.js') {
|
||||
content += ";window.eui = eui;"
|
||||
if (filename == "libs/modules/eui/eui.js") {
|
||||
content = content.replace("function getRepeatedIds", "window.getRepeatedIds=function getRepeatedIds");
|
||||
content = content.replace("function getIds", "window.getIds=function getIds");
|
||||
content = content.replace("function toXMLString", "window.toXMLString=function toXMLString");
|
||||
content = content.replace("function checkDeclarations", "window.checkDeclarations=function checkDeclarations");
|
||||
content = content.replace("function getPropertyStr", "window.getPropertyStr=function getPropertyStr");
|
||||
}
|
||||
}
|
||||
if (filename == 'libs/modules/dragonBones/dragonBones.js' || filename == 'libs/modules/dragonBones/dragonBones.min.js') {
|
||||
content += ';window.dragonBones = dragonBones';
|
||||
}
|
||||
content = "var egret = window.egret;" + content;
|
||||
|
||||
if (filename == 'main.js') {
|
||||
content += "\n;window.Main = Main;"
|
||||
}
|
||||
file.contents = new Buffer(content);
|
||||
}
|
||||
}
|
||||
return file;
|
||||
}
|
||||
async onFinish(pluginContext: plugins.CommandContext) {
|
||||
//同步 index.html 配置到 game.js
|
||||
const gameJSPath = path.join(pluginContext.outputDir, "game.js");
|
||||
if (!fs.existsSync(gameJSPath)) {
|
||||
console.log(`${gameJSPath}不存在,请先使用 Launcher 发布 Vivo 小游戏`);
|
||||
return;
|
||||
}
|
||||
let gameJSContent = fs.readFileSync(gameJSPath, { encoding: "utf8" });
|
||||
const projectConfig = pluginContext.buildConfig.projectConfig;
|
||||
const optionStr =
|
||||
`entryClassName: ${projectConfig.entryClassName},\n\t\t` +
|
||||
`orientation: ${projectConfig.orientation},\n\t\t` +
|
||||
`frameRate: ${projectConfig.frameRate},\n\t\t` +
|
||||
`scaleMode: ${projectConfig.scaleMode},\n\t\t` +
|
||||
`contentWidth: ${projectConfig.contentWidth},\n\t\t` +
|
||||
`contentHeight: ${projectConfig.contentHeight},\n\t\t` +
|
||||
`showFPS: ${projectConfig.showFPS},\n\t\t` +
|
||||
`fpsStyles: ${projectConfig.fpsStyles},\n\t\t` +
|
||||
`showLog: ${projectConfig.showLog},\n\t\t` +
|
||||
`maxTouches: ${projectConfig.maxTouches},`;
|
||||
const reg = /\/\/----auto option start----[\s\S]*\/\/----auto option end----/;
|
||||
const replaceStr = '\/\/----auto option start----\n\t\t' + optionStr + '\n\t\t\/\/----auto option end----';
|
||||
gameJSContent = gameJSContent.replace(reg, replaceStr);
|
||||
fs.writeFileSync(gameJSPath, gameJSContent);
|
||||
|
||||
//修改横竖屏
|
||||
let orientation;
|
||||
if (projectConfig.orientation == '"landscape"') {
|
||||
orientation = "landscape";
|
||||
}
|
||||
else {
|
||||
orientation = "portrait";
|
||||
}
|
||||
const gameJSONPath = path.join(pluginContext.outputDir, "manifest.json");
|
||||
let gameJSONContent = JSON.parse(fs.readFileSync(gameJSONPath, { encoding: "utf8" }));
|
||||
gameJSONContent.deviceOrientation = orientation;
|
||||
let engineVersion = this.readData(path.join(pluginContext.projectRoot, "egretProperties.json")).engineVersion
|
||||
if(!gameJSONContent.thirdEngine)gameJSONContent.thirdEngine={}
|
||||
gameJSONContent.thirdEngine.egret = engineVersion
|
||||
|
||||
fs.writeFileSync(gameJSONPath, JSON.stringify(gameJSONContent, null, "\t"));
|
||||
let isPublish = pluginContext.buildConfig.command == "publish" ? true : false;
|
||||
let configArr: any[] = []
|
||||
for (var i = 0, len = this.jsFileList.length; i < len; i++) {
|
||||
let jsFile = this.jsFileList[i];
|
||||
if (isPublish) {
|
||||
if (jsFile == "main.js") {
|
||||
jsFile = 'main.min.js'
|
||||
} else if (jsFile == "default.thm.js") {
|
||||
jsFile = "default.thm.min.js"
|
||||
}
|
||||
}
|
||||
configArr.push(JSON.stringify({
|
||||
module_name: `./js/${jsFile}`,
|
||||
module_path: `./js/${jsFile}`,
|
||||
module_from: `engine/js/${jsFile}`,
|
||||
}, null, "\t"))
|
||||
}
|
||||
const replaceConfigStr = '\/\/----auto option start----\n\t\t' + configArr.toString() + '\n\t\t\/\/----auto option end----';
|
||||
const minigameConfigPath = path.join(pluginContext.outputDir,"../", "minigame.config.js");
|
||||
if(!fs.existsSync(minigameConfigPath)){
|
||||
//5.2.28版本,vivo更新了项目结构,老项目需要升级
|
||||
fs.writeFileSync(path.join(pluginContext.outputDir,"../","vivo更新了项目结构,请重新创建vivo小游戏项目.js"), "vivo更新了项目结构,请重新创建vivo小游戏项目");
|
||||
}else{
|
||||
let configJSContent = fs.readFileSync(minigameConfigPath, { encoding: "utf8" });
|
||||
configJSContent = configJSContent.replace(reg, replaceConfigStr);
|
||||
fs.writeFileSync(minigameConfigPath, configJSContent);
|
||||
}
|
||||
}
|
||||
readData(filePath: string): any {
|
||||
return JSON.parse(fs.readFileSync(filePath, { encoding: "utf8" }));
|
||||
}
|
||||
}
|
||||
@@ -1,149 +0,0 @@
|
||||
import * as fs from 'fs';
|
||||
import * as path from 'path';
|
||||
const crypto = require('crypto');
|
||||
export class WxgamePlugin implements plugins.Command {
|
||||
private useWxPlugin:boolean = false;
|
||||
constructor(useWxPlugin:boolean) {
|
||||
this.useWxPlugin = useWxPlugin
|
||||
}
|
||||
md5Obj = {}
|
||||
md5(content) {
|
||||
let md5 = crypto.createHash('md5');
|
||||
return md5.update(content).digest('hex');
|
||||
}
|
||||
async onFile(file: plugins.File) {
|
||||
if (file.extname == '.js') {
|
||||
const filename = file.origin;
|
||||
if (filename == "libs/modules/promise/promise.js" || filename == 'libs/modules/promise/promise.min.js') {
|
||||
return null;
|
||||
}
|
||||
if (filename == 'libs/modules/egret/egret.js' || filename == 'libs/modules/egret/egret.min.js') {
|
||||
let content = file.contents.toString();
|
||||
content += `;window.egret = egret;`;
|
||||
content = content.replace(/definition = __global/, "definition = window");
|
||||
this.md5Obj[path.basename(filename)] = this.md5(content)
|
||||
file.contents = new Buffer(content);
|
||||
}
|
||||
else {
|
||||
let content = file.contents.toString();
|
||||
if (
|
||||
filename == "libs/modules/res/res.js" ||
|
||||
filename == 'libs/modules/res/res.min.js' ||
|
||||
filename == 'libs/modules/assetsmanager/assetsmanager.min.js' ||
|
||||
filename == 'libs/modules/assetsmanager/assetsmanager.js'
|
||||
) {
|
||||
content += ";window.RES = RES;"
|
||||
}
|
||||
if (filename == "libs/modules/eui/eui.js" || filename == 'libs/modules/eui/eui.min.js') {
|
||||
content += ";window.eui = eui;"
|
||||
}
|
||||
if (filename == 'libs/modules/dragonBones/dragonBones.js' || filename == 'libs/modules/dragonBones/dragonBones.min.js') {
|
||||
content += ';window.dragonBones = dragonBones';
|
||||
}
|
||||
content = "var egret = window.egret;" + content;
|
||||
if (filename == 'main.js') {
|
||||
content += "\n;window.Main = Main;"
|
||||
}
|
||||
if (filename == 'libs/long/long.js' || filename == 'libs/long/long.min.js'){
|
||||
content += "window.Long = long;"
|
||||
}
|
||||
this.md5Obj[path.basename(filename)] = this.md5(content)
|
||||
file.contents = new Buffer(content);
|
||||
}
|
||||
}
|
||||
return file;
|
||||
}
|
||||
async onFinish(pluginContext: plugins.CommandContext) {
|
||||
let { projectRoot, outputDir, buildConfig } = pluginContext
|
||||
//同步 index.html 配置到 game.js
|
||||
const gameJSPath = path.join(outputDir, "game.js");
|
||||
if (!fs.existsSync(gameJSPath)) {
|
||||
console.log(`${gameJSPath}不存在,请先使用 Launcher 发布微信小游戏`);
|
||||
return;
|
||||
}
|
||||
let gameJSContent = fs.readFileSync(gameJSPath, { encoding: "utf8" });
|
||||
const projectConfig = buildConfig.projectConfig;
|
||||
const optionStr =
|
||||
`entryClassName: ${projectConfig.entryClassName},\n\t\t` +
|
||||
`orientation: ${projectConfig.orientation},\n\t\t` +
|
||||
`frameRate: ${projectConfig.frameRate},\n\t\t` +
|
||||
`scaleMode: ${projectConfig.scaleMode},\n\t\t` +
|
||||
`contentWidth: ${projectConfig.contentWidth},\n\t\t` +
|
||||
`contentHeight: ${projectConfig.contentHeight},\n\t\t` +
|
||||
`showFPS: ${projectConfig.showFPS},\n\t\t` +
|
||||
`fpsStyles: ${projectConfig.fpsStyles},\n\t\t` +
|
||||
`showLog: ${projectConfig.showLog},\n\t\t` +
|
||||
`maxTouches: ${projectConfig.maxTouches},`;
|
||||
const reg = /\/\/----auto option start----[\s\S]*\/\/----auto option end----/;
|
||||
const replaceStr = '\/\/----auto option start----\n\t\t' + optionStr + '\n\t\t\/\/----auto option end----';
|
||||
gameJSContent = gameJSContent.replace(reg, replaceStr);
|
||||
fs.writeFileSync(gameJSPath, gameJSContent);
|
||||
|
||||
//修改横竖屏
|
||||
let orientation;
|
||||
if (projectConfig.orientation == '"landscape"') {
|
||||
orientation = "landscape";
|
||||
}
|
||||
else {
|
||||
orientation = "portrait";
|
||||
}
|
||||
const gameJSONPath = path.join(outputDir, "game.json");
|
||||
let gameJSONContent = this.readData(gameJSONPath)
|
||||
gameJSONContent.deviceOrientation = orientation;
|
||||
if (buildConfig.command !== "publish" && gameJSONContent.plugins && gameJSONContent.plugins['egret-library']) {
|
||||
delete gameJSONContent.plugins["egret-library"]
|
||||
}
|
||||
this.writeData(gameJSONContent, gameJSONPath)
|
||||
|
||||
//下面的流程是配置开启微信插件的功能
|
||||
let engineVersion = this.readData(path.join(projectRoot, "egretProperties.json")).engineVersion;
|
||||
if (!gameJSONContent.plugins) {
|
||||
gameJSONContent.plugins = {}
|
||||
}
|
||||
if(buildConfig.command == "publish" && this.useWxPlugin){
|
||||
gameJSONContent.plugins["egret-library"] = {
|
||||
"provider": "wx7e2186943221985d",
|
||||
"version": engineVersion,
|
||||
"path": "egret-library"
|
||||
}
|
||||
}else{
|
||||
gameJSONContent.plugins = {}
|
||||
}
|
||||
|
||||
this.writeData(gameJSONContent, gameJSONPath)
|
||||
|
||||
if (buildConfig.command !== "publish" || !this.useWxPlugin) {
|
||||
return
|
||||
}
|
||||
|
||||
let libDir = path.join(outputDir, "egret-library")
|
||||
fs.mkdirSync(libDir)
|
||||
let pluginData = { "main": "index.js" }
|
||||
this.writeData(pluginData, path.join(libDir, "plugin.json"))
|
||||
let engineJS = ['assetsmanager', 'dragonBones', 'egret', 'game', 'eui', 'socket', 'tween']
|
||||
let signatureData: any = {
|
||||
"provider": "wx7e2186943221985d",
|
||||
"signature": []
|
||||
}
|
||||
for (let i in engineJS) {
|
||||
let name = engineJS[i] + '.min.js'
|
||||
if (this.md5Obj[name]) {
|
||||
let jsInfo: any = {
|
||||
"path": name,
|
||||
"md5": this.md5Obj[name]
|
||||
}
|
||||
signatureData.signature.push(jsInfo)
|
||||
}
|
||||
}
|
||||
this.writeData(signatureData, path.join(libDir, "signature.json"))
|
||||
fs.writeFileSync(path.join(libDir, "index.js"), null);
|
||||
|
||||
}
|
||||
|
||||
readData(filePath: string): any {
|
||||
return JSON.parse(fs.readFileSync(filePath, { encoding: "utf8" }));
|
||||
}
|
||||
writeData(data: object, filePath: string) {
|
||||
fs.writeFileSync(filePath, JSON.stringify(data, null, "\t"));
|
||||
}
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2014-present, Egret Technology.
|
||||
// All rights reserved.
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above copyright
|
||||
// notice, this list of conditions and the following disclaimer in the
|
||||
// documentation and/or other materials provided with the distribution.
|
||||
// * Neither the name of the Egret nor the
|
||||
// names of its contributors may be used to endorse or promote products
|
||||
// derived from this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY EGRET AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
|
||||
// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
// IN NO EVENT SHALL EGRET AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA,
|
||||
// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
class AssetAdapter implements eui.IAssetAdapter {
|
||||
/**
|
||||
* @language zh_CN
|
||||
* 解析素材
|
||||
* @param source 待解析的新素材标识符
|
||||
* @param compFunc 解析完成回调函数,示例:callBack(content:any,source:string):void;
|
||||
* @param thisObject callBack的 this 引用
|
||||
*/
|
||||
public getAsset(source: string, compFunc:Function, thisObject: any): void {
|
||||
function onGetRes(data: any): void {
|
||||
compFunc.call(thisObject, data, source);
|
||||
}
|
||||
if (RES.hasRes(source)) {
|
||||
let data = RES.getRes(source);
|
||||
if (data) {
|
||||
onGetRes(data);
|
||||
}
|
||||
else {
|
||||
RES.getResAsync(source, onGetRes, this);
|
||||
}
|
||||
}
|
||||
else {
|
||||
RES.getResByUrl(source, onGetRes, this, RES.ResourceItem.TYPE_IMAGE);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
|
||||
|
||||
module FUI.common {
|
||||
|
||||
export class UI_com_tips extends fairygui.GComponent {
|
||||
public m_content:fairygui.GTextField;
|
||||
public static URL:string = "ui://minsdstak7mf0";
|
||||
|
||||
public static createInstance():UI_com_tips {
|
||||
return <UI_com_tips>(fairygui.UIPackage.createObject("common", "com_tips"));
|
||||
}
|
||||
|
||||
protected constructFromXML(xml:any):void {
|
||||
super.constructFromXML(xml);
|
||||
|
||||
this.m_content = <fairygui.GTextField>(this.getChildAt(1));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
|
||||
|
||||
module FUI.common {
|
||||
|
||||
export class commonBinder {
|
||||
public static bindAll():void {
|
||||
fairygui.UIObjectFactory.setPackageItemExtension(UI_com_tips.URL, UI_com_tips);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
|
||||
|
||||
module FUI.loading {
|
||||
|
||||
export class UI_View_loading extends fairygui.GComponent {
|
||||
public m_title:fairygui.GTextField;
|
||||
public m_pg_loading:fairygui.GProgressBar;
|
||||
public static URL:string = "ui://mk2d64e7r5ro0";
|
||||
|
||||
public static createInstance():UI_View_loading {
|
||||
return <UI_View_loading>(fairygui.UIPackage.createObject("loading", "View_loading"));
|
||||
}
|
||||
|
||||
protected constructFromXML(xml:any):void {
|
||||
super.constructFromXML(xml);
|
||||
|
||||
this.m_title = <fairygui.GTextField>(this.getChildAt(1));
|
||||
this.m_pg_loading = <fairygui.GProgressBar>(this.getChildAt(2));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
|
||||
|
||||
module FUI.loading {
|
||||
|
||||
export class loadingBinder {
|
||||
public static bindAll():void {
|
||||
fairygui.UIObjectFactory.setPackageItemExtension(UI_View_loading.URL, UI_View_loading);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
|
||||
|
||||
module FUI.sc {
|
||||
|
||||
export class UI_View_sc extends fairygui.GComponent {
|
||||
public m_list_sc:fairygui.GList;
|
||||
public m_combo_transition:fairygui.GComboBox;
|
||||
public static URL:string = "ui://m4sln17ak7mf0";
|
||||
|
||||
public static createInstance():UI_View_sc {
|
||||
return <UI_View_sc>(fairygui.UIPackage.createObject("sc", "View_sc"));
|
||||
}
|
||||
|
||||
protected constructFromXML(xml:any):void {
|
||||
super.constructFromXML(xml);
|
||||
|
||||
this.m_list_sc = <fairygui.GList>(this.getChildAt(0));
|
||||
this.m_combo_transition = <fairygui.GComboBox>(this.getChildAt(1));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
|
||||
|
||||
module FUI.sc {
|
||||
|
||||
export class UI_btn_sc extends fairygui.GButton {
|
||||
public m_name:fairygui.GTextField;
|
||||
public static URL:string = "ui://m4sln17ak7mf2";
|
||||
|
||||
public static createInstance():UI_btn_sc {
|
||||
return <UI_btn_sc>(fairygui.UIPackage.createObject("sc", "btn_sc"));
|
||||
}
|
||||
|
||||
protected constructFromXML(xml:any):void {
|
||||
super.constructFromXML(xml);
|
||||
|
||||
this.m_name = <fairygui.GTextField>(this.getChildAt(3));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,19 +0,0 @@
|
||||
/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
|
||||
|
||||
module FUI.sc {
|
||||
|
||||
export class UI_combo_sc_popup extends fairygui.GComponent {
|
||||
public m_list:fairygui.GList;
|
||||
public static URL:string = "ui://m4sln17ajde14";
|
||||
|
||||
public static createInstance():UI_combo_sc_popup {
|
||||
return <UI_combo_sc_popup>(fairygui.UIPackage.createObject("sc", "combo_sc_popup"));
|
||||
}
|
||||
|
||||
protected constructFromXML(xml:any):void {
|
||||
super.constructFromXML(xml);
|
||||
|
||||
this.m_list = <fairygui.GList>(this.getChildAt(1));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
/** This is an automatically generated class by FairyGUI. Please do not modify it. **/
|
||||
|
||||
module FUI.sc {
|
||||
|
||||
export class scBinder {
|
||||
public static bindAll():void {
|
||||
fairygui.UIObjectFactory.setPackageItemExtension(UI_combo_sc_popup.URL, UI_combo_sc_popup);
|
||||
fairygui.UIObjectFactory.setPackageItemExtension(UI_View_sc.URL, UI_View_sc);
|
||||
fairygui.UIObjectFactory.setPackageItemExtension(UI_btn_sc.URL, UI_btn_sc);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,70 +0,0 @@
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (c) 2014-present, Egret Technology.
|
||||
// All rights reserved.
|
||||
// Redistribution and use in source and binary forms, with or without
|
||||
// modification, are permitted provided that the following conditions are met:
|
||||
//
|
||||
// * Redistributions of source code must retain the above copyright
|
||||
// notice, this list of conditions and the following disclaimer.
|
||||
// * Redistributions in binary form must reproduce the above copyright
|
||||
// notice, this list of conditions and the following disclaimer in the
|
||||
// documentation and/or other materials provided with the distribution.
|
||||
// * Neither the name of the Egret nor the
|
||||
// names of its contributors may be used to endorse or promote products
|
||||
// derived from this software without specific prior written permission.
|
||||
//
|
||||
// THIS SOFTWARE IS PROVIDED BY EGRET AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
|
||||
// OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
// OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
||||
// IN NO EVENT SHALL EGRET AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;LOSS OF USE, DATA,
|
||||
// OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
||||
// EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
import LoadingView = loading.LoadingView;
|
||||
|
||||
class Main extends es.Core {
|
||||
protected initialize() {
|
||||
try {
|
||||
es.Core.debugRenderEndabled = true;
|
||||
es.TimeRuler.Instance.showLog = true;
|
||||
this.runGame();
|
||||
} catch(err) {
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
|
||||
private runGame() {
|
||||
egret.ImageLoader.crossOrigin = "anonymous";
|
||||
this.initUIConfig();
|
||||
this.loadResource();
|
||||
this.initGameControl();
|
||||
}
|
||||
|
||||
private initUIConfig(){
|
||||
LayerManager.getInstance().init(this.stage);
|
||||
FguiUtils.packageNamespace = FUI;
|
||||
fairygui.UIConfig.defaultFont = "黑体";
|
||||
fairygui.UIConfig.bringWindowToFrontOnClick = false;
|
||||
this.stage.addChild(fgui.GRoot.inst.displayListContainer);
|
||||
}
|
||||
|
||||
private loadResource() {
|
||||
RES.loadConfig("resource/default.res.json", "resource/").then(()=>{
|
||||
EventManager.getInstance().dispatch(loading.LoadingEvents.OPENVIEW);
|
||||
}).catch(err =>{
|
||||
console.error(err);
|
||||
});
|
||||
}
|
||||
|
||||
private initGameControl(){
|
||||
loading.LoadingControl.getInstance();
|
||||
sc.ScControl.getInstance();
|
||||
}
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
/**
|
||||
* 平台数据接口。
|
||||
* 由于每款游戏通常需要发布到多个平台上,所以提取出一个统一的接口用于开发者获取平台数据信息
|
||||
* 推荐开发者通过这种方式封装平台逻辑,以保证整体结构的稳定
|
||||
* 由于不同平台的接口形式各有不同,白鹭推荐开发者将所有接口封装为基于 Promise 的异步形式
|
||||
*/
|
||||
declare interface Platform {
|
||||
|
||||
getUserInfo(): Promise<any>;
|
||||
|
||||
login(): Promise<any>
|
||||
|
||||
}
|
||||
|
||||
class DebugPlatform implements Platform {
|
||||
async getUserInfo() {
|
||||
return { nickName: "username" }
|
||||
}
|
||||
async login() {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!window.platform) {
|
||||
window.platform = new DebugPlatform();
|
||||
}
|
||||
|
||||
|
||||
|
||||
declare let platform: Platform;
|
||||
|
||||
declare interface Window {
|
||||
|
||||
platform: Platform
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,27 +0,0 @@
|
||||
module samples {
|
||||
import ScreenSpaceRenderer = es.ScreenSpaceRenderer;
|
||||
import RenderLayerExcludeRenderer = es.RenderLayerExcludeRenderer;
|
||||
import SpriteRenderer = es.SpriteRenderer;
|
||||
|
||||
export class SampleScene extends es.Scene {
|
||||
public static readonly screenSpaceRenderLayer = 999;
|
||||
|
||||
public static _needsFullRender: boolean;
|
||||
public _screenSpaceRenderer: ScreenSpaceRenderer;
|
||||
|
||||
constructor(addExcludeRenderer: boolean = true, needsFullRender: boolean = false){
|
||||
super();
|
||||
SampleScene._needsFullRender = needsFullRender;
|
||||
|
||||
if (needsFullRender){
|
||||
this._screenSpaceRenderer = this.addRenderer(new ScreenSpaceRenderer(100, SampleScene.screenSpaceRenderLayer));
|
||||
this._screenSpaceRenderer.shouldDebugRender = false;
|
||||
}else{
|
||||
this.addRenderer(new ScreenSpaceRenderer(100, SampleScene.screenSpaceRenderLayer));
|
||||
}
|
||||
|
||||
if (addExcludeRenderer)
|
||||
this.addRenderer(new RenderLayerExcludeRenderer(0, SampleScene.screenSpaceRenderLayer));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,21 +0,0 @@
|
||||
module samples {
|
||||
export class AnimatedTilesScene extends SampleScene {
|
||||
constructor(){
|
||||
super(true, true);
|
||||
}
|
||||
|
||||
public initialize(){
|
||||
super.initialize();
|
||||
|
||||
let tiledEntity = this.createEntity("tiled-map-entity");
|
||||
try {
|
||||
es.TiledMapLoader.loadTmxMap(new es.TmxMap(), "orthogonal-outside_json").then(map => {
|
||||
tiledEntity.addComponent(new es.TiledMapRenderer(map));
|
||||
manager.AlterManager.alter_tips("Tiled tiles场景加载成功");
|
||||
});
|
||||
} catch (err){
|
||||
console.error(err);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,27 +0,0 @@
|
||||
module samples {
|
||||
export class BasicScene extends SampleScene {
|
||||
public async onStart() {
|
||||
super.onStart();
|
||||
manager.AlterManager.alter_tips("空白场景加载成功");
|
||||
|
||||
this.content.loadRes("moon_png").then(moonTexture => {
|
||||
let moonEntity = this.createEntity("moon");
|
||||
moonEntity.position = new es.Vector2(0, 0);
|
||||
moonEntity.addComponent(new es.SpriteRenderer(moonTexture));
|
||||
|
||||
this.camera.entity.addComponent(new es.FollowCamera(moonEntity));
|
||||
|
||||
// this.entities.frameAllocate = true;
|
||||
// this.entities.maxAllocate = 10;
|
||||
// for (let i = 0; i < 10000; i ++){
|
||||
// this.createEntity("");
|
||||
// }
|
||||
});
|
||||
}
|
||||
|
||||
public update(){
|
||||
super.update();
|
||||
// console.log(this.entities.buffer.length);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,117 +0,0 @@
|
||||
module samples {
|
||||
export class MinerState {
|
||||
public readonly maxFatigue = 10;
|
||||
public readonly maxGold = 8;
|
||||
public readonly maxThirst = 5;
|
||||
|
||||
public fatigue: number = 10;
|
||||
public thirst: number = 0;
|
||||
public gold: number = 0;
|
||||
public goldInBank: number = 0;
|
||||
|
||||
public currentLocation: Location = Location.home;
|
||||
}
|
||||
|
||||
export class GoapScene extends SampleScene {
|
||||
public _destinationLocation: Location;
|
||||
public planner: es.ActionPlanner;
|
||||
public _actionPlan: es.Action[];
|
||||
|
||||
public minerState: MinerState;
|
||||
|
||||
public initialize(): void {
|
||||
super.initialize();
|
||||
|
||||
// 在我们做任何事情之前,我们需要一个行动计划
|
||||
this.planner = new es.ActionPlanner();
|
||||
this.minerState = new MinerState();
|
||||
|
||||
// 设置我们的动作并将它们添加到计划器中
|
||||
let sleep = new es.Action("sleep");
|
||||
sleep.setPrecondition("fatigued", true);
|
||||
sleep.setPostcondition("fatigued", false);
|
||||
this.planner.addAction(sleep);
|
||||
|
||||
let drink = new es.Action("drink");
|
||||
drink.setPrecondition("thirsty", true);
|
||||
drink.setPostcondition("thirsty", false);
|
||||
this.planner.addAction(drink);
|
||||
|
||||
let mine = new es.Action("mine");
|
||||
mine.setPrecondition("hasenoughgold", false);
|
||||
mine.setPostcondition("hasenoughgold", true);
|
||||
this.planner.addAction(mine);
|
||||
|
||||
let depositGold = new es.Action("depositGold");
|
||||
depositGold.setPrecondition("hasenoughgold", true);
|
||||
depositGold.setPostcondition("hasenoughgold", false);
|
||||
this.planner.addAction(depositGold);
|
||||
|
||||
// 制定一个计划,让我们从当前状态运行到目标状态
|
||||
this._actionPlan = this.planner.plan(this.getWorldState(), this.getGoalState());
|
||||
if (this._actionPlan != null && this._actionPlan.length > 0){
|
||||
this.goTo();
|
||||
console.log(`得到了一个行动计划与${this._actionPlan.length}行动`);
|
||||
} else {
|
||||
console.log(`没有满足我们目标的行动计划`);
|
||||
}
|
||||
}
|
||||
|
||||
private goTo(){
|
||||
let action = this._actionPlan[this._actionPlan.length - 1].name;
|
||||
switch (action){
|
||||
case "sleep":
|
||||
this._destinationLocation = Location.home;
|
||||
break;
|
||||
case "drink":
|
||||
this._destinationLocation = Location.saloon;
|
||||
break;
|
||||
case "mine":
|
||||
this._destinationLocation = Location.mine;
|
||||
break;
|
||||
case "depositeGold":
|
||||
this._destinationLocation = Location.bank;
|
||||
break;
|
||||
}
|
||||
|
||||
if (this.minerState.currentLocation == this._destinationLocation){
|
||||
|
||||
} else {
|
||||
this.minerState.currentLocation = Location.inTransit;
|
||||
}
|
||||
}
|
||||
|
||||
public getWorldState(): es.WorldState {
|
||||
let worldState = this.planner.createWorldState();
|
||||
worldState.set("fatigued", this.minerState.fatigue >= this.minerState.maxFatigue);
|
||||
worldState.set("thirsty", this.minerState.thirst >= this.minerState.maxThirst);
|
||||
worldState.set("hasenoughgold", this.minerState.gold >= this.minerState.maxGold);
|
||||
|
||||
return worldState;
|
||||
}
|
||||
|
||||
public getGoalState(): es.WorldState {
|
||||
let goalState = this.planner.createWorldState();
|
||||
|
||||
if (this.minerState.fatigue >= this.minerState.maxFatigue){
|
||||
goalState.set("fatigued", false);
|
||||
} else if(this.minerState.thirst >= this.minerState.maxThirst){
|
||||
goalState.set("thirsty", false);
|
||||
} else if(this.minerState.gold >= this.minerState.maxGold){
|
||||
goalState.set("hasenoughgold", false);
|
||||
} else {
|
||||
goalState.set("hasenoughgold", true);
|
||||
}
|
||||
|
||||
return goalState;
|
||||
}
|
||||
}
|
||||
|
||||
enum Location {
|
||||
inTransit,
|
||||
bank,
|
||||
mine,
|
||||
home,
|
||||
saloon,
|
||||
}
|
||||
}
|
||||