You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
288 lines
9.3 KiB
288 lines
9.3 KiB
import User from "../../FrameWork/User/User";
|
|
import AppPlatform from "../../FrameWork/Util/AppPlatform";
|
|
import Common5 from "../../Platform/th/Common5";
|
|
import LevelUpManager from "../Manager/LevelUpManager";
|
|
import UserManager from "../Manager/UserManager";
|
|
import PrefabManage, { GameType } from "../PrefabManager/PrefabManage";
|
|
|
|
|
|
const { ccclass, property } = cc._decorator;
|
|
|
|
@ccclass
|
|
export default class WcPage extends cc.Component {
|
|
|
|
|
|
prefabs: cc.Node = null;
|
|
content: cc.Node = null;
|
|
time: cc.Node = null;
|
|
count: cc.Node = null;
|
|
btnNv: cc.Node = null;
|
|
btnNan: cc.Node = null;
|
|
money: cc.Node = null;
|
|
moneyContent: cc.Node = null;
|
|
text1: cc.Node = null;
|
|
text2: cc.Node = null;
|
|
roles: cc.Node = null;
|
|
end: cc.Node = null;
|
|
center: cc.Node = null;
|
|
allMoney: cc.Node = null;
|
|
allCount: cc.Node = null;
|
|
maxCount: cc.Node = null;
|
|
btnGet: cc.Node = null;
|
|
btnVideo: cc.Node = null;
|
|
btnBack: cc.Node = null;
|
|
isfail: boolean = false;
|
|
|
|
protected onLoad(): void {
|
|
this.prefabs = this.node.getChildByName("prefabs");
|
|
this.content = this.node.getChildByName("content");
|
|
this.time = this.node.getChildByName("time");
|
|
this.count = this.node.getChildByName("count");
|
|
this.btnNv = this.node.getChildByName("btnNv");
|
|
this.btnNan = this.node.getChildByName("btnNan");
|
|
this.money = this.node.getChildByName("money");
|
|
this.moneyContent = this.node.getChildByName("moneyContent");
|
|
this.text1 = this.node.getChildByName("text1");
|
|
this.text2 = this.node.getChildByName("text2");
|
|
this.roles = this.content.getChildByName("roles");
|
|
this.end = this.node.getChildByName("end");
|
|
this.center = this.end.getChildByName("center");
|
|
this.allMoney = this.center.getChildByName("allMoney");
|
|
this.allCount = this.center.getChildByName("allCount");
|
|
this.maxCount = this.center.getChildByName("maxCount");
|
|
this.btnGet = this.center.getChildByName("btnGet");
|
|
this.btnVideo = this.center.getChildByName("btnVideo");
|
|
this.btnBack = this.node.getChildByName("btnBack");
|
|
|
|
this.btnNv.on(cc.Node.EventType.TOUCH_END, this.onClickNv, this);
|
|
this.btnNan.on(cc.Node.EventType.TOUCH_END, this.onClickNan, this);
|
|
this.btnGet.on(cc.Node.EventType.TOUCH_END, this.onClickbtnGet, this);
|
|
this.btnVideo.on(cc.Node.EventType.TOUCH_END, this.onClickbtnVideo, this);
|
|
this.btnBack.on(cc.Node.EventType.TOUCH_END, this.onClickbtnBack, this);
|
|
|
|
this.initRole();
|
|
}
|
|
|
|
private _time = 0;
|
|
private _timer = null;
|
|
private _count = 0;
|
|
private _errCount = 0;
|
|
private MAX_ERR_COUNT = 5;
|
|
private _curentRole: cc.Node = null;
|
|
private _curentType = 0;
|
|
private _maxCount = 0;
|
|
|
|
initRole() {
|
|
for (let i = 0; i < 7; i++) {
|
|
this.scheduleOnce(this.createRole.bind(this), i * 0.1);
|
|
}
|
|
this.startGame();
|
|
}
|
|
|
|
startGame() {
|
|
this._time = 60;
|
|
this._errCount = 3;
|
|
this._maxCount = User.getStatistics("wcc");
|
|
this._timer = setInterval(() => {
|
|
if (this._time == 0)
|
|
this.endGame();
|
|
this.updateUI();
|
|
this._time--;
|
|
if (this._time < 0)
|
|
this._time = 0;
|
|
}, 1000);
|
|
}
|
|
|
|
endGame(isfail?) {
|
|
Common5.showInterstitialAd()
|
|
this.isfail = true
|
|
clearInterval(this._timer);
|
|
this.node.getChildByName("firstNode").active = true
|
|
let levelUpSpned = LevelUpManager.levelUpSpned()
|
|
let yibei = levelUpSpned
|
|
let wubei = levelUpSpned * 5
|
|
if (isfail) {
|
|
yibei /= 10
|
|
}
|
|
if (isfail) {
|
|
wubei /= 10
|
|
}
|
|
this.node.getChildByName("firstNode").getChildByName("lab1").getComponent(cc.Label).string = '' + Common5.getNumberChangeHanzi(yibei, '1', 1)
|
|
this.node.getChildByName("firstNode").getChildByName("lab2").getComponent(cc.Label).string = '' + Common5.getNumberChangeHanzi(wubei, '1', 1)
|
|
// this.end.active = true;
|
|
// this.center.scale = 0;
|
|
// cc.tween(this.center).to(0.1, { scale: 1.2 }).to(0.15, { scale: 1 }).start();
|
|
// User.setStatistics("wcd", 300);
|
|
}
|
|
|
|
onClickNv() {
|
|
Common5.playEffect("点击");
|
|
this.select(2);
|
|
}
|
|
|
|
onClickNan() {
|
|
Common5.playEffect("点击");
|
|
this.select(1);
|
|
}
|
|
|
|
onClickbtnGet() {
|
|
Common5.playEffect("点击");
|
|
Common5.ReportDY("inLevel", '普通领取');
|
|
this.getReward();
|
|
}
|
|
|
|
onClickbtnVideo() {
|
|
Common5.playEffect("点击");
|
|
let tab = {
|
|
onClose: (finish) => {
|
|
if (finish) {
|
|
Common5.ReportDY("inLevel", '找厕所-AD-双倍领取');
|
|
this.getReward(5);
|
|
}
|
|
else {
|
|
Common5.showTips_custom("广告未观看完");
|
|
}
|
|
},
|
|
onFailed: () => { }
|
|
}
|
|
AppPlatform.playVideo_custom(tab);
|
|
}
|
|
|
|
onClickbtnBack() {
|
|
Common5.playEffect("点击");
|
|
clearInterval(this._timer);
|
|
this.node.destroy();
|
|
}
|
|
|
|
updateUI() {
|
|
this.count.getComponent(cc.Label).string = this._errCount + "";
|
|
this.time.getComponent(cc.Label).string = this._time + "";
|
|
this.maxCount.getComponent(cc.Label).string = this._maxCount + "";
|
|
this.allCount.getComponent(cc.Label).string = this._count + "";
|
|
this.money.getComponent(cc.Label).string = this.reward() + "";
|
|
this.allMoney.getComponentInChildren(cc.Label).string = " x " + this.reward();
|
|
}
|
|
|
|
select(type: number) {
|
|
this._curentType = type;
|
|
if (this._curentType == this.checkType(this._curentRole.name))
|
|
this.selectRight();
|
|
else
|
|
this.selectErr();
|
|
|
|
let tx = this._curentType == 1 ? -300 : 300;
|
|
|
|
if (this._curentRole != null) {
|
|
let r = this._curentRole;
|
|
cc.tween(r).to(0.2, { opacity: 0 }).start();
|
|
cc.tween(r).by(0.2, { position: cc.v3(tx, 50) }).call(() => {
|
|
r.destroy();
|
|
}).start();
|
|
}
|
|
this.removeCurent();
|
|
|
|
}
|
|
|
|
selectErr() {
|
|
this._errCount--;
|
|
let target = this._curentType == 1 ? this.text1 : this.text2;
|
|
this.updateUI();
|
|
if (this._errCount <= 0)
|
|
this.endGame(true);
|
|
cc.tween(target)
|
|
.to(0.1, { scale: 1.1 })
|
|
.to(0.1, { scale: 1 })
|
|
.to(0.1, { scale: 1.1 })
|
|
.to(0.1, { scale: 1 })
|
|
.to(0.1, { scale: 1.1 })
|
|
.to(0.1, { scale: 1 })
|
|
.call(() => {
|
|
target.scale = 0;
|
|
}).start();
|
|
}
|
|
|
|
selectRight() {
|
|
this._count++;
|
|
this.updateUI();
|
|
let m = cc.instantiate(this.prefabs.getChildByName("钱"));
|
|
m.parent = this.moneyContent;
|
|
m.active = true;
|
|
m.position = cc.v3(0, -200);
|
|
let tx = Math.random() * 120 - 70;
|
|
let ty = Math.random() * 60 - 400;
|
|
cc.tween(m).to(0.2, { position: cc.v3(tx, ty) }).start();
|
|
}
|
|
|
|
checkType(tname) {
|
|
switch (tname) {
|
|
case "主妇":
|
|
case "女人":
|
|
case "皇后": return 2;
|
|
case "妃子":
|
|
case "小孩":
|
|
case "大金链":
|
|
case "男人": return 1;
|
|
}
|
|
}
|
|
|
|
createRole() {
|
|
let skarr = this.prefabs.getComponentsInChildren(sp.Skeleton);
|
|
if (this.roles.children.length != 0)
|
|
skarr = skarr.filter(x => { return x.node.name != this.roles.children[0].name });
|
|
let index = Math.floor(Math.random() * skarr.length);
|
|
let n = cc.instantiate(skarr[index].node);
|
|
n.setParent(this.roles);
|
|
n.setSiblingIndex(0);
|
|
this._curentRole = this.roles.children[this.roles.children.length - 1];
|
|
this.updatePos();
|
|
}
|
|
|
|
removeCurent() {
|
|
if (this._curentRole != null) {
|
|
this._curentRole.parent = this.content;
|
|
}
|
|
this.createRole();
|
|
}
|
|
|
|
updatePos() {
|
|
let x = 0;
|
|
let y = -246.604;
|
|
let scale = 1;
|
|
|
|
let count = this.roles.children.length;
|
|
for (let i = 0; i < count; i++) {
|
|
let index = count - i - 1;
|
|
let r = this.roles.children[index];
|
|
let tx = x + i * (20 - i * 2);
|
|
if (i % 2 == 0) tx = tx - 70
|
|
else tx = tx + 70;
|
|
if (i == 0) tx = 0;
|
|
let ty = y + i * 60;
|
|
let tscale = scale - 0.1 * i;
|
|
cc.tween(r).to(0.2, { x: tx }).start();
|
|
cc.tween(r).to(0.2, { y: ty }).start();
|
|
cc.tween(r).to(0.2, { scale: tscale }).start();
|
|
}
|
|
|
|
}
|
|
|
|
private getReward(beiShu = 1) {
|
|
let levelUpSpned = LevelUpManager.levelUpSpned()
|
|
|
|
// if (this._maxCount < this._count)
|
|
// User.setStatistics("wcc", this._count);
|
|
let bei = levelUpSpned * beiShu
|
|
if (this.isfail) {
|
|
bei /= 10
|
|
}
|
|
UserManager.addMoney(bei, this.node);
|
|
this.node.destroy();
|
|
}
|
|
|
|
private reward() {
|
|
// let levelData = GameDataManager.getLevelData(User.getCurentStall());
|
|
// return this._count * levelData.wcMoney;
|
|
let levelUpSpned = LevelUpManager.levelUpSpned()
|
|
return '' + Common5.getNumberChangeHanzi(levelUpSpned, '1', 1)
|
|
}
|
|
}
|
|
|