Commit 0f026042 authored by wildfirecode's avatar wildfirecode

1

parent 45a3dfaa
......@@ -14,5 +14,8 @@ if (cmd === 'build' && process.argv[3] === 'prod') {
if (process.argv[4] === 'exml')
cmd = 'buildProdEXML';
}
if (cmd === 'build' && process.argv[3] === 'notinypng') {
cmd = 'notinypng';
}
build[cmd]('egret');
console.log();
\ No newline at end of file
......@@ -7,7 +7,7 @@
"globalBackgroundWidth": -1,
"globalBackgroundHeight": -1,
"globalBackgroundColor": "#ffffff",
"globalBackgroundImage": ""
"globalBackgroundImage": "/Users/wanghongyuan/db-game-template/egret/resource/assets/startScene/startscenebg.jpg"
},
"1667fb18fa6": {
"bindingDataTestObj": [
......@@ -46,7 +46,7 @@
"backgroundY": 0,
"backgroundWidth": -1,
"backgroundHeight": -1,
"useBgImage": false,
"useBgImage": true,
"useBgColor": true
}
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"alert","version":5,"files":["../assets/alert/alertbg.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"options","version":5,"files":["../assets/option/line2.png","../assets/option/prizeBg.png","../assets/option/X-1.png","../assets/option/line.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"play","version":5,"files":["../assets/playscene/testbtn.png","../assets/playscene/音乐开启.png","../assets/playscene/音乐关闭.png","../assets/playscene/轮子1.png","../assets/playscene/火箭.png","../assets/playscene/火.png","../assets/playscene/发弹雾气.png","../assets/playscene/大炮的头.png","../assets/playscene/大炮板子.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"preload","version":5,"files":["../assets/startScene/e4.png","../assets/startScene/e3.png","../assets/startScene/e2.png","../assets/startScene/e1.png","../assets/startScene/文案.png","../assets/文案.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"prize","version":5,"files":["../assets/prize/prizePanelbg.png","../assets/prize/PrizePanelX.png","../assets/prize/prizePanelUseBtn.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"rank","version":5,"files":["../assets/rank/userItemBg.png","../assets/rank/rankTitle.png","../assets/rank/num3.png","../assets/rank/num2.png","../assets/rank/num1.png","../assets/rank/dog.png","../assets/rank/commonPanelBg.png","../assets/rank/closeBtn.png","../assets/rank/bottomLine.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"rule","version":5,"files":["../assets/rule/X.png","../assets/rule/ruleBg.png"]}
\ No newline at end of file
{"options":{"layoutMath":"2","sizeMode":"2n","useExtension":1,"layoutGap":1,"extend":0},"projectName":"start","version":5,"files":["../assets/startScene/optionBtn.png","../assets/startScene/rankBtn.png","../assets/startScene/recordbtn.png","../assets/startScene/ruleBtn.png","../assets/startScene/start_btn_gray.png","../assets/startScene/start_btn.png","../assets/startScene/文案.png","../assets/startScene/e1.png","../assets/startScene/e2.png","../assets/startScene/e3.png","../assets/startScene/e4.png"]}
\ No newline at end of file
{
"groups": [
{
"keys": "optionBtn_png,rankBtn_png,recordbtn_png,ruleBtn_png,start_btn_gray_png,start_btn_png,firePot_png,ballParticle_png,ballParticle_json,bubble_png",
"name": "start"
},
{
"keys": "line2_png,prizeBg_png,X-1_png,line_png",
"name": "options"
},
{
"keys": "alertbg_png",
"name": "alert"
},
{
"keys": "prizePanelbg_png,PrizePanelX_png,prizePanelUseBtn_png",
"name": "prize"
},
{
"keys": "testbtn_png,音乐开启_png,音乐关闭_png,轮子1_png,火箭_png,火_png,发弹雾气_png,大炮的头_png,大炮板子_png",
"name": "play"
},
{
"keys": "userItemBg_png,rankTitle_png,num3_png,num2_png,num1_png,dog_png,commonPanelBg_png,closeBtn_png,bottomLine_png",
"name": "rank"
},
{
"keys": "X_png,ruleBg_png",
"name": "rule"
},
{
"keys": "newParticle_json,newParticle_png,startscenebg_jpg,boom_json,glass_png,candy_json,coin_json,gift_json,bubble_png",
"name": "preload"
"keys": "basket_top_png,boom_json,bubble_png,candy_json,coin_json,gift_json,glass_png,optionBtn_png,rankBtn_png,recordbtn_png,ruleBtn_png,start_btn_gray_png,start_btn_png,startscenebg_jpg",
"name": "start"
},
{
"name": "preload",
"keys": "basket_bottom_png"
}
],
"resources": [
......@@ -272,6 +252,16 @@
"url": "assets/startScene/bubble.png",
"type": "image",
"name": "bubble_png"
},
{
"url": "assets/startScene/basket_top.png",
"type": "image",
"name": "basket_top_png"
},
{
"name": "basket_bottom_png",
"type": "image",
"url": "assets/startScene/basket_bottom.png"
}
]
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<e:Skin class="StartSkin" width="750" height="1624" xmlns:e="http://ns.egret.com/eui" xmlns:w="http://ns.egret.com/wing">
<w:Config id="16705cb4eec"/>
<e:Image source="startscenebg_jpg" x="0" y="0"/>
<e:Group horizontalCenter="0.5" verticalCenter="547">
<e:Group horizontalCenter="0.5" verticalCenter="547" visible="false">
<e:Button id="startBtn" label="" scaleX="1" scaleY="1" anchorOffsetX="152.5" anchorOffsetY="49.5" y="108.21" horizontalCenter="0">
<e:skinName>
<e:Skin states="up,down,disabled">
......@@ -15,7 +14,7 @@
</e:Group>
<e:Label id="exemptionTxt" text="*兑换项与活动均与设备制造商Apple Inc.公司无关*" width="100%" horizontalCenter="0" bottom="5"
verticalAlign="middle" textAlign="center" size="18" textColor="0xffffff"/>
<e:Button id="recordBtn" label="奖品记录" y="16" scaleX="1" scaleY="1" right="23">
<e:Button id="recordBtn" label="奖品记录" y="16" scaleX="1" scaleY="1" right="23" visible="false">
<e:skinName>
<e:Skin states="up,down,disabled">
<e:Image width="100%" height="100%" source="recordbtn_png" source.down="recordbtn_png"
......@@ -24,7 +23,7 @@
</e:Skin>
</e:skinName>
</e:Button>
<e:Button id="optionBtn" label="奖品预览" y="16" scaleX="1" scaleY="1" horizontalCenter="0">
<e:Button id="optionBtn" label="奖品预览" y="16" scaleX="1" scaleY="1" horizontalCenter="0" visible="false">
<e:skinName>
<e:Skin states="up,down,disabled">
<e:Image width="100%" height="100%" source="optionBtn_png" source.down="optionBtn_png"
......@@ -41,7 +40,7 @@
</e:Skin>
</e:skinName>
</e:Button>
<e:Button id="rankBtn" label="排行榜" y="86.61" scaleX="1" scaleY="1" left="26">
<e:Button id="rankBtn" label="排行榜" y="86.61" scaleX="1" scaleY="1" left="26" visible="false">
<e:skinName>
<e:Skin states="up,down,disabled">
<e:Image width="100%" height="100%" source="rankBtn_png" source.down="rankBtn_png" source.disabled="rankBtn_png" />
......@@ -50,5 +49,7 @@
</e:skinName>
</e:Button>
<e:Image id="glass" source="glass_png" x="78.5" y="186"/>
<e:Image id="basket_bottom" source="basket_bottom_png" x="291.5" y="163.88"/>
<e:Image id="basket_top" source="basket_top_png" x="290.6" y="427.08"/>
<e:Image source="bubble_png" x="268" y="1082" visible="false"/>
</e:Skin>
\ No newline at end of file
......@@ -8,18 +8,10 @@ import { ExmlPlugin2 } from "./ExmlPlugin2";
export class MyExmlPlugin extends ExmlPlugin2 implements plugins.Command {
async onFile(file: plugins.File) {
const excludes = [
'openstate.png',
'coin.png',
'gift.png',
'gift2.png',
'goldenbox.png',
'silverbox.png',
'woodbox.png',
'monkey.png',
'net.png',
'option.png',
'river.png',
'kids.png',
'boom.png',
'candy.png',
];
if (excludes.indexOf(file.basename) != -1) {
return file;
......
import MovieClip from "./movieclip/MovieClip";
export default class BaseItem extends egret.Sprite {
size: number;
_mc: MovieClip;
type:string
constructor(size: number, mc: MovieClip,type:string) {
// type: string
constructor(mc: MovieClip, type?: string) {
super();
this.type = type;
this.size = size;
// this.type = type;
this._mc = mc;
this.addChild(this._mc);
const bubble: egret.Texture = RES.getRes('bubble_png');
const bubblePic = new egret.Bitmap(bubble);
bubblePic.anchorOffsetX = 76;
bubblePic.anchorOffsetY = 78;
bubblePic.scaleX = bubblePic.scaleY = size / 100;//默认球的尺寸100
this.addChild(bubblePic);
this.addChild(this._mc);
}
get mc() { return this._mc; }
......
......@@ -9,7 +9,7 @@ export default class DebugRender extends egret.Shape {
run() {
const bodies = Matter.Composite.allBodies(this._engine.world);
this.graphics.clear();
this.graphics.lineStyle(2, 0xff0000);
this.graphics.lineStyle(1, 0xff0000);
for (let i = 0; i < bodies.length; i++) {
const body = bodies[i];
const vertices = body.vertices;
......
import getRotation from "./utils/getRotation";
import MovieClip from "./movieclip/MovieClip";
import BaseItem from "./BaseItem";
import getRotation from "./utils/getRotation";
export default class EgretRender {
private _root: egret.DisplayObjectContainer;
_root: egret.Sprite;
private _engine: Matter.Engine;
constructor(root: egret.DisplayObjectContainer, engine: Matter.Engine) {
constructor(root: egret.Sprite, engine: Matter.Engine) {
this._root = root;
this._engine = engine;
}
......@@ -13,11 +12,26 @@ export default class EgretRender {
addBody(body: Matter.Body, display: egret.DisplayObject) {
if (display) {
body['display'] = display;
this._root.addChild(display);
this._root.addChildAt(display, 0);
}
return body;
}
remove(body: Matter.Body): any {
this.removeBody(body);
this.removeDisplay(body);
}
removeBody(body: Matter.Body): any {
Matter.World.remove(this._engine.world, body);
}
removeDisplay(body: Matter.Body): any {
const display: egret.DisplayObject = body['display'];
if (display && display.parent)
display.parent.removeChild(display);
}
run() {
const bodies = Matter.Composite.allBodies(this._engine.world);
// tslint:disable-next-line:prefer-for-of
......
......@@ -11,7 +11,7 @@ export default class MovieClip extends egret.Bitmap {
counter: number;
scale: number;
constructor({ spritesheet, frames, size, picSize, position, keys = null, autoplay = true, loop = true, anchor, frameInterval = 1 }) {
constructor({ spritesheet, frames, scale, position, keys = null, autoplay = true, loop = true, anchor, frameInterval = 1 }) {
super();
this.frames = frames;
this.frameInterval = frameInterval;
......@@ -30,8 +30,6 @@ export default class MovieClip extends egret.Bitmap {
if (this.autoplay) {
this.play();
}
const scale = size / picSize;
this.scaleX = this.scaleY = scale;
}
......
......@@ -2,7 +2,7 @@
* 获取一个锚点居中的位图
*/
export const getBitmap = (texture: egret.Texture, width: number, height: number) => {
var display = new egret.Bitmap(texture);
const display = new egret.Bitmap(texture);
display.anchorOffsetX = display.width / 2;
display.anchorOffsetY = display.height / 2;
display.scaleX = width / display.width;
......
This diff is collapsed.
export const wall = 1;
export const basket = 2;
export const award = 4;
export const bubble = 8;
export const bubbleStandby = 16;
export const bubbleGroup = -1;
export const bubbleStandbyGroup = -2;
export const wallMask = award + bubble + bubbleStandby;
export const basketMask = award + bubble + bubbleStandby;
export const awardMask = wall + basket + bubble;
export const bubbleMask = wall + basket + award;
export const bubbleStandbyMask = wall + basket;
import { wall, wallMask, basket, basketMask } from "./collisionConfig";
import StartScene from "./StartScene";
const createBox = (_this: StartScene) => {
const path1 = Matter.Vertices.fromPath('385 168 640 201 695 528 644 866 392 907 109 868 57 546 118 206 0 206 0 1624 750 1624 750 0', null);
const body = Matter.Bodies.fromVertices(430, 717, [path1], { isStatic: true, collisionFilter: { group: wall, category: wall, mask: wallMask } }, true);
Matter.World.add(_this._engine.world, body);
const path2 = Matter.Vertices.fromPath('118 206 385 168 385 100', null);
const body2 = Matter.Bodies.fromVertices(425 - 10 - 100 - 10 - 10 + 1, 30 + 100 + 10 + 10 + 6, [path2], { isStatic: true, collisionFilter: { group: wall, category: wall, mask: wallMask } }, true);
Matter.World.add(_this._engine.world, body2);
const basketpath = Matter.Vertices.fromPath('290 434 385 502 468 434 466 434 384 488 292 434', null);
const basketbody = Matter.Bodies.fromVertices(375 + 8 - 2, 400 + 58 + 5 + 4, [basketpath], { isStatic: true, collisionFilter: { group: basket, category: basket, mask: basketMask } }, true);
Matter.World.add(_this._engine.world, basketbody);
}
export default createBox
\ No newline at end of file
const createBubblePic = (r: number) => {
const bubbleTexture: egret.Texture = RES.getRes('bubble_png');
const bubblePic = new egret.Bitmap(bubbleTexture);
bubblePic.anchorOffsetX = 76;
bubblePic.anchorOffsetY = 78;
bubblePic.scaleX = bubblePic.scaleY = r * 2 / 100; //默认球的尺寸100
return bubblePic;
}
export default createBubblePic
\ No newline at end of file
import StartScene from "./StartScene";
import createItem from "./items/createItem";
import { award, awardMask } from "./collisionConfig";
export default (_this: StartScene) => {
let count = 0;
const coinsFall = setInterval(() => {
if (count < 20) {
let scale;
scale = 0.7 + Math.random() * 0.3;
const baseItem = createItem(scale);
let angle;
angle = 0;
//气泡纹理种气泡的尺寸默认100(总体还包含气泡周围的阴影效果)
//刚体和贴图尺寸比为1:1.12
_this._egretRender.circle(375 + Math.random() * 200 - 100, 400 + 200 + 100, 100 * scale / 2 / 1.12, baseItem,
{
collisionFilter: { group: award, category: award, mask: awardMask },
angle: angle,
// label
});
count++;
} else {
//结束
}
}, 100);
}
\ No newline at end of file
import BaseItem from "../../physics/BaseItem";
import MovieClip from "../../physics/movieclip/MovieClip";
const createBoom = (scale) => {
//气泡纹理种气泡的尺寸默认100(总体还包含气泡周围的阴影效果)
const boomTexture = RES.getRes('boom_json');
//炸弹纹理种炸弹的尺寸默认58,不进行缩放
//气泡和炸弹的比例为100/58
const animation = createBoomMovieClip(boomTexture);
const baseItem = new BaseItem(animation, 'boom');
baseItem.scaleX = baseItem.scaleY = scale;
return baseItem
}
const createBoomMovieClip = (spritesheet, scale = 1) => {
const list = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'];
const movieclip = new MovieClip({
spritesheet: spritesheet,
frameInterval: 5,
frames: list,
position: [0, 0],
scale: scale,
anchor: [.5, .5]
});
return movieclip
}
export default createBoom
\ No newline at end of file
import BaseItem from "../../physics/BaseItem";
import MovieClip from "../../physics/movieclip/MovieClip";
const createCandy = (scale) => {
//气泡纹理种气泡的尺寸默认100(总体还包含气泡周围的阴影效果)
const texture = RES.getRes('candy_json') as egret.SpriteSheet;
const animation = createMovieClip(texture, 0.6);
const baseItem = new BaseItem(animation);
baseItem.scaleX = baseItem.scaleY = scale;
return baseItem
}
const createMovieClip = (spritesheet: egret.SpriteSheet, scale = 1) => {
const list = ['1', '2', '3', '4', '5', '6', '7', '8'];
const movieclip = new MovieClip({
spritesheet: spritesheet,
frameInterval: 6,
frames: list,
position: [0, 0],
scale: scale,
anchor: [.5, .5]
});
return movieclip
}
export default createCandy
\ No newline at end of file
import BaseItem from "../../physics/BaseItem";
import MovieClip from "../../physics/movieclip/MovieClip";
const createCoin = (scale) => {
//气泡纹理种气泡的尺寸默认100(总体还包含气泡周围的阴影效果)
const texture = RES.getRes('coin_json') as egret.SpriteSheet;
const animation = createMovieClip(texture, 0.6);
const baseItem = new BaseItem(animation);
baseItem.scaleX = baseItem.scaleY = scale;
return baseItem
}
const createMovieClip = (spritesheet: egret.SpriteSheet, scale = 1) => {
const list = ['1', '2', '3', '4', '5', '6', '7', '8'];
const movieclip = new MovieClip({
spritesheet: spritesheet,
frameInterval: 6,
frames: list,
position: [0, 0],
scale: scale,
anchor: [.5, .5]
});
return movieclip
}
export default createCoin
\ No newline at end of file
import BaseItem from "../../physics/BaseItem";
import MovieClip from "../../physics/movieclip/MovieClip";
const createGift = (scale) =>{
//气泡纹理种气泡的尺寸默认100(总体还包含气泡周围的阴影效果)
const texture = RES.getRes('gift_json');
const animation = createGiftMovieClip(texture, 0.5);//礼物纹理大概130
const baseItem = new BaseItem(animation, 'gift');
baseItem.scaleX = baseItem.scaleY = scale;
return baseItem
}
const createGiftMovieClip = (spritesheet, scale)=> {
const list = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'];
const movieclip = new MovieClip({
spritesheet: spritesheet,
frameInterval: 5,
frames: list,
position: [0, 0],
scale: scale,
anchor: [.5, .5]
});
return movieclip
}
export default createGift
\ No newline at end of file
import createBoom from "./createBoom";
import createGift from "./createGift";
import createCandy from "./createCandy";
import createCoin from "./createCoin";
const createItem = (scale) => {
const funcs = [createBoom, createGift,createCandy,createCoin];
const i = Math.floor(Math.random() * funcs.length);
const func = funcs[i];
return func(scale);
}
export default createItem
\ No newline at end of file
import { bubbleStandbyGroup, bubbleStandby, bubbleStandbyMask } from "./collisionConfig";
import createBubblePic from "./createBubblePic";
import EgretRender from "../physics/EgretRender";
let timer;
export const startStandbyBubbles = (egretRender:EgretRender) => {
timer = setInterval(() => {
const scale = .3;
const scaleX = .1;
const p = Math.random() > .5 ? { x: 206, y: 832 } : { x: 551, y: 832 };
for (let i = 0; i < 10; i++) {
setTimeout(() => {
const r = Math.random() * 3 + 6;
const bubblePic = createBubblePic(r);
const body = egretRender.circle(p.x, p.y, r, bubblePic, {
restitution: 0,
force: { x: (Math.random() * .02 - .01) * scaleX, y: -0.02 * scale },
collisionFilter: { group: bubbleStandbyGroup, category: bubbleStandby, mask: bubbleStandbyMask }
});
setTimeout(() => {
egretRender.remove(body)
}, 800);
}, i * 50);
}
console.log('自动吹');
}, 2000);
}
export const stopStandbyBubbles = () => {
clearInterval(timer)
}
\ No newline at end of file
......@@ -4,6 +4,7 @@
"description": "兑吧游戏自动化工程",
"main": "index.js",
"scripts": {
"notinypng": "node build.js build notinypng",
"dev": "node build.js dev",
"build": "node build.js build prod",
"buildTS": "node build.js build prod ts",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment