Commit d4537668 authored by 邱旭's avatar 邱旭

m

parent 74bcd904
......@@ -3,21 +3,10 @@
<component name="ChangeListManager">
<list default="true" id="0d3cb18d-e144-41a0-bc8b-4877c2e1fef1" name="默认的" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/index.html" beforeDir="false" afterPath="$PROJECT_DIR$/index.html" afterDir="false" />
<change beforePath="$PROJECT_DIR$/output.js" beforeDir="false" afterPath="$PROJECT_DIR$/output.js" afterDir="false" />
<change beforePath="$PROJECT_DIR$/output.js.map" beforeDir="false" afterPath="$PROJECT_DIR$/output.js.map" afterDir="false" />
<change beforePath="$PROJECT_DIR$/resource/res.json" beforeDir="false" afterPath="$PROJECT_DIR$/resource/res.json" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/ResJson.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/ResJson.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TaoBaoNet.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/TaoBaoNet.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Tools.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/Tools.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/panels/LotteryPanel.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/panels/LotteryPanel.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/panels/StartPanel.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/panels/StartPanel.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/panels/SuccessNoPrizePanel.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/panels/SuccessNoPrizePanel.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/panels/SuccessPrizePanel.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/panels/SuccessPrizePanel.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/scene/LoadingScene.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/scene/LoadingScene.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/scene/LotteryScene.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/scene/LotteryScene.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/scene/map/CheckBtn.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/scene/map/CheckBtn.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/scene/map/MapScene.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/scene/map/MapScene.ts" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/scene/LotteryScene.ts" beforeDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
......@@ -148,7 +137,7 @@
<workItem from="1612576979459" duration="13000" />
<workItem from="1612577003915" duration="21094000" />
<workItem from="1612662929222" duration="40609000" />
<workItem from="1613698993022" duration="3958000" />
<workItem from="1613698993022" duration="4067000" />
</task>
<task id="LOCAL-00001" summary="斐乐消消乐">
<created>1612581213298</created>
......@@ -255,7 +244,14 @@
<option name="project" value="LOCAL" />
<updated>1612775497616</updated>
</task>
<option name="localTasksCounter" value="16" />
<task id="LOCAL-00016" summary="m">
<created>1613703361421</created>
<option name="number" value="00016" />
<option name="presentableId" value="LOCAL-00016" />
<option name="project" value="LOCAL" />
<updated>1613703361421</updated>
</task>
<option name="localTasksCounter" value="17" />
<servers />
</component>
<component name="TypeScriptGeneratedFilesManager">
......
......@@ -9,7 +9,7 @@ import Tween = FYGE.Tween;
import Ease = FYGE.Ease;
import MouseEvent = FYGE.MouseEvent;
import Button = FYGE.Button;
import { LotteryScene } from "../scene/LotteryScene";
import { LotteryPanel } from "./LotteryPanel";
export class SuccessNoPrizePanel extends Panel {
get groupNames() {
......@@ -83,8 +83,7 @@ export class SuccessNoPrizePanel extends Panel {
public goPrize() {
// 去抽奖
showPanel(LotteryScene, {level: this.data.level})
// changeScene(LotteryScene, { level: this.data.level });
showPanel(LotteryPanel);
super.hidePanel();
}
......
......@@ -3,7 +3,6 @@ import { SuccessStarGroup } from "./SuccessNoPrizePanel";
import { RES } from "../../module/RES";
import { changeScene } from "../../module/ctrls";
import { MapScene } from "../scene/map/MapScene";
import { LotteryScene } from "../scene/LotteryScene";
import { Tools } from "../Tools";
import { PropType } from "../something/enum/PropType";
import Tween = FYGE.Tween;
......
......@@ -5,8 +5,8 @@ import { RES } from "../../module/RES";
import { sendTbNet, TbNetName } from "../TaoBaoNet";
import { layers } from "../../module/views/layers";
import { changeScene, showPanel, showToast } from "../../module/ctrls";
import { LotteryScene } from "./LotteryScene";
import { LotteryPanel } from "../panels/LotteryPanel";
import { MapScene } from "./map/MapScene";
export class LoadingScene extends Scene {
get groupNames() {
......@@ -69,8 +69,8 @@ export class LoadingScene extends Scene {
.call(() => {
if (pro >= 1) {
this.removeEventListener(FYGE.Event.PROGRESS, this.progressEvent, this);
// changeScene(MapScene, {from: "loading"})
showPanel(LotteryPanel);
changeScene(MapScene, {from: "loading"})
// showPanel(LotteryPanel);
// changeScene(PlayScene, { chapter: 1 });
// changeScene(LotteryScene,{level:1});
}
......
import { Scene } from "../../module/views/Scene";
import { RES } from "../../module/RES";
import { layers } from "../../module/views/layers";
import { Tools } from "../Tools";
import { showWaiting, wait, changeScene, hideWaiting, showPanel } from "../../module/ctrls";
import { sendTbNet, TbNetName } from "../TaoBaoNet";
import { GTool } from "../../module/tools/GTool";
import { MapScene } from "./map/MapScene";
import { PrizePanel } from "../panels/PrizePanel";
import { NoPrizePanel } from "../panels/NoPrizePanel";
import { Panel } from "../../module/views/Panel";
/**
* 摇奖机弹框
*/
export class LotteryScene extends Panel {
get groupNames() { return ["lotteryScene"] }
lotScroll: LotteryScroll;
data: {
level: number,
}
initUi() {
//适配
this.y = -layers.stageOffsetY;
//背景
this.addChild(new FYGE.Sprite(RES.getRes("lotteryMachineBg.png")))
Tools.gameData.prizeLevels.sort((a, b) => {
return a - b
})
//抽奖按钮
this.addChild(new FYGE.Button(RES.getRes("lotteryBtn.png")))
.addEventListener(FYGE.MouseEvent.CLICK, this.lottery, this)
.position.set(192, 1232);
//返回按钮,回到地图页
this.addChild(new FYGE.Button(RES.getRes("lotteryReturnBtn.png")))
.addEventListener(FYGE.MouseEvent.CLICK, () => { changeScene(MapScene) }, this)
.position.set(0, 300)
//刷新奖品列表和摇奖列表
this.updatePrizes();
}
async updatePrizes() {
showWaiting();
const { data: prizeList } = await sendTbNet(TbNetName.getPrizesByLevel);
//去掉type为5的谢谢参与
var list = prizeList.slice().filter((e) => { return e.type != 5 });
//摇奖部分
var p = [80, 645]
this.lotScroll = this.addChild(new LotteryScroll(list))
this.lotScroll.position.set(p[0], p[1]);
}
lottery() {
showWaiting()
sendTbNet(TbNetName.luckyDraw)
.then((res) => {
hideWaiting();
//如果是失败
if (!res.success) return;
let id;//待考虑,谢谢参与要进哪?是否进列表,下面id不存在时当作无奖励,(如果谢谢参与不进列表)
if (res.data && res.data.prizeId) id = res.data.prizeId;
this.enableMouseEvt(false);
console.log(id)
this.lotScroll.lot(id, () => {
this.enableMouseEvt(true)
//无奖
if (!id || res.data.type == 5) {
showPanel(NoPrizePanel);
} else {
showPanel(PrizePanel, res.data)
}
// showPanel(id ? PrizePanel : NoPrizePanel, id ? res.data : null)
})
})
}
}
interface PrizeInt {
image: string,
name: string,
_id: string
}
class LotteryItem extends FYGE.Container {
private showImage: FYGE.Sprite;
id: string
constructor(data: PrizeInt) {
super();
this.id = data._id;
// this.addChild(new FYGE.Sprite(RES.getRes("lotteryItemBg.png")));
this.showImage = this.addChild(new FYGE.Sprite(FYGE.Texture.from(data.image)));
this.showImage.width = this.showImage.height = 160;
this.showImage.position.set(15, 6);
const mask = this.addChild(new FYGE.Shape());
mask.beginFill(0);
mask.drawRoundedRect(15, 6, 160, 160, 10);
mask.endFill();
this.showImage.mask = mask
}
reset(data: PrizeInt) {
this.showImage.texture = FYGE.Texture.from(data.image);
this.id = data._id;
}
}
const HEIGHT = 180;
/**
* 滚动条
* 功能可以滚动到指定的图
*/
class LotteryScrollItem extends FYGE.Container {
/**
* 当前childre的中位索引
*/
get currentIndex(): number {
var a = 1 - this.cusP;
var l = this.children.length
return a < 0 ? a % l + l : a % l
};
private cusP: number
constructor(datas: PrizeInt[]) {
super();
datas.forEach((d) => {
this.addChild(new LotteryItem(d))
})
this.cusP = 0;
this.updatePosition();
//修改位置
this.addEventListener(FYGE.Event.ENTER_FRAME, this.updatePosition, this)
}
scrollTo(id: string, callback: () => void) {
//找出目标图
let child, curIndex;
for (var i = 0; i < this.children.length; i++) {
// @ts-ignore
if (this.children[i].id == id) {
child = this.children[i];
curIndex = i;
break
}
}
var delta = this.currentIndex - curIndex;
if (delta < 0) delta += this.children.length;
//目标图的位置必须是,多加几圈
var cusP = this.cusP + delta + 10 * this.children.length;
FYGE.Tween.get(this)
.to({ cusP }, 5000, FYGE.Ease.quadInOut)
.call(() => {
callback && callback();
})
}
reset() {
}
updatePosition() {
this.children.forEach((c: LotteryItem, j) => {
c.y = ((this.cusP + j) % this.children.length) * HEIGHT - HEIGHT;
//超过一定距离,移到上面
if (c.y > HEIGHT * 1.5) {
c.y = c.y - this.children.length * HEIGHT
}
});
}
// 0 0- 10 21 1
// 1 00 11 2- 0
// 2 01 1- 20 2
// 3 0- 10 21 1
destroy() {
FYGE.Tween.removeTweens(this);
super.destroy()
}
}
/**
* 暂时固定3列,宽高
*/
class LotteryScroll extends FYGE.Container {
ids: string[]
scrollItems: LotteryScrollItem[];
constructor(datas: PrizeInt[]) {
super();
this.scrollItems = []
for (let i = 0; i < 3; i++) {
const s = this.addChild(new LotteryScrollItem(GTool.disturbArr(datas.slice())));
s.position.set(205 * i, 80);
this.scrollItems.push(s)
}
this.ids = [];
datas.forEach((d) => { this.ids.push(d._id) });
const h = -45;
//遮罩
const mask = this.addChild(new FYGE.Shape());
mask.beginFill(0)
mask.drawRect(0, h, 592, 424)
mask.endFill();
this.mask = mask;
// 蒙层
this.addChild(new FYGE.Sprite(RES.getRes("shadowMask.png")))
.position.set(0, h)
}
lot(id?: string, callback?: () => void) {
//有id且在中奖列表里
if (id && this.ids.indexOf(id) != -1) {
//确保得是ids里的id。否则无效
// if (this.ids.indexOf(id) == -1) {
// console.error("中奖id不存在")
// return;
// }
let count = 0;
let countAll = this.scrollItems.length;
this.scrollItems.forEach((c: LotteryScrollItem, i) => {
wait(() => {
c.scrollTo(id, () => {
if (++count == countAll && callback) callback();
})
}, 400 * i)
})
} else {
//保证几个id不能一致
var ids = [
GTool.randomT(this.ids),
GTool.randomT(this.ids),
];
//如果都相同
// if(!ids.some(function (value, index) { return value !== ids[0];})){
// ids.push()
// }
//才两个,直接判断
ids[0] === ids[1] ? ids.push(
GTool.randomT((() => {
var arr = this.ids.slice();
arr.splice(this.ids.indexOf(ids[0]), 1)
return arr
})())
) : ids.push(GTool.randomT(this.ids));
// console.log(ids)
let count = 0;
let countAll = this.scrollItems.length;
this.scrollItems.forEach((c: LotteryScrollItem, i) => {
wait(() => {
c.scrollTo(ids[i], () => {
if (++count == countAll && callback) callback();
})
}, 400 * i)
})
}
}
}
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