Commit 328daa85 authored by Vũ Gia Vương's avatar Vũ Gia Vương

fix BreakingBottleController, add reset bottle

parent 5fabb20b
This diff is collapsed.
......@@ -23,4 +23,5 @@ export const STOP_GUILD_TAP = 'STOP_GUILD_TAP';
export const CHECK_TOUCH = 'CHECK_TOUCH';
export const CHECK_FRAGMENT = 'CHECK_FRAGMENT';
export const HAMMER = 'HAMMER';
\ No newline at end of file
export const HAMMER = 'HAMMER';
export const RESET_BOTTLE = 'RESET_BOTTLE';
\ No newline at end of file
import { CHECK_FRAGMENT, CHECK_TOUCH, eventTarget, HAMMER } from "../Events";
import { CHECK_FRAGMENT, CHECK_TOUCH, eventTarget, HAMMER, RESET_BOTTLE, SHOW_CARD_POPUP } from "../Events";
import { Global } from "../Global";
import FragmentController from "./FragmentController";
import TheController from "./TheController";
......@@ -13,26 +13,44 @@ export default class BreakingBottleController extends cc.Component {
private _spine: sp.Skeleton = null;
private _skins = ["Ga", "Gai_lung", "Gay", "Bua",];
private _cardNode: cc.Node = null;
private _countFragment = 0;
private _fragmentsPosition: cc.Vec3[] = [];
private _fragmentsNode: cc.Node[] = [];
onLoad() {
cc.director.getPhysicsManager().enabled = true;
this._spine = this.hammerNode.getComponentInChildren(sp.Skeleton);
this._cardNode = this.node.getComponentInChildren(TheController).node;
this._cardNode.active = false;
this.node.on(cc.Node.EventType.TOUCH_START, this.onTouchStart, this);
this.node.on(cc.Node.EventType.TOUCH_END, this.onTouchEnd, this);
eventTarget.on(CHECK_FRAGMENT, this.checkFragment, this);
eventTarget.on(HAMMER, this.onHammer, this);
eventTarget.on(RESET_BOTTLE, this.resetBottle, this);
this._fragmentsNode = this.getComponentsInChildren(FragmentController).map(item => item.node);
console.log('this._fragmentsAll', this._fragmentsNode)
this._fragmentsPosition = this._fragmentsNode.map(item => item.position.clone());
}
protected start(): void {
this.hideHammer();
}
private resetBottle() {
this._countFragment = 0;
this._spine.setSkin(this._skins[Global.tool % this._skins.length]);
this._spine.setAnimation(0, "Dap4", false);
this._fragmentsNode.forEach((item, index) => {
item.position = this._fragmentsPosition[index];
item.getComponent(FragmentController).reset();
})
}
private onHammer(newPos: cc.Vec2) {
cc.tween(this.hammerNode)
.to(0.1, { opacity: 255, position: cc.v3(newPos.x, newPos.y) })
......@@ -44,14 +62,13 @@ export default class BreakingBottleController extends cc.Component {
private checkFragment(name: string) {
this._countFragment++;
if (this._countFragment == 8) {
this._cardNode.active = true;
eventTarget.emit(SHOW_CARD_POPUP);
}
}
private onTouchStart(event: cc.Event.EventTouch) {
const pos = event.getLocation();
const nodePos = this.node.convertToNodeSpaceAR(pos);
const newPos = cc.v3(nodePos.x, nodePos.y);
eventTarget.emit(CHECK_TOUCH, nodePos);
......
......@@ -9,18 +9,26 @@ export default class FragmentController extends cc.Component {
private _collider: cc.PolygonCollider = null;
private _physicsCollider: cc.PhysicsPolygonCollider = null;
private _rg: cc.RigidBody = null;
private _siblingIndex: number = 0;
onLoad() {
this._collider = this.node.getComponent(cc.PolygonCollider);
this._physicsCollider = this.node.getComponent(cc.PhysicsPolygonCollider);
this._physicsCollider.points = this._collider.points;
this._physicsCollider.enabled = false;
this._rg = this.node.getComponent(cc.RigidBody);
this._rg.type = cc.RigidBodyType.Static;
this._siblingIndex = this.node.getSiblingIndex();
this.reset();
eventTarget.on(CHECK_TOUCH, this.checkTouch, this);
}
public reset() {
this._physicsCollider.enabled = false;
this._rg.type = cc.RigidBodyType.Static;
this.node.angle = 0;
this.node.setSiblingIndex(this._siblingIndex);
}
private checkTouch(point: cc.Vec2) {
const pos = point.clone().subtract(cc.v2(this.node.position.x, this.node.position.y));
......
import { eventTarget, SHOW_ACTION_SCREEN, SHOW_START_SCREEN } from "../Events";
import { eventTarget, RESET_BOTTLE, SHOW_ACTION_SCREEN, SHOW_START_SCREEN } from "../Events";
const { ccclass, property } = cc._decorator;
......@@ -8,28 +8,18 @@ export default class BreakingBottleScreen extends cc.Component {
onLoad() {
eventTarget.on(SHOW_ACTION_SCREEN, this.showScreen, this);
eventTarget.on(SHOW_START_SCREEN, this.hideScreen, this);
// this.node.position = cc.v3(400, 600, 0);
}
private hideBottle() {
// this.bottleAction.active = true;
// this.bottleIdle.active = false;
this.node.position = cc.v3(0, 0, 0);
this.node.opacity = 0;
}
private showScreen() {
console.log('showScreen', this.node)
// this.bottleAction.active = false;
// this.bottleIdle.active = true;
// this._spine.setAnimation(0, 'Idle', true);
// this._buaController.onSetTool();
this.node.active = true;
this.node.opacity = 255;
this.node.position = cc.v3();
eventTarget.emit(RESET_BOTTLE);
}
private hideScreen() {
this.node.active = false;
this.node.opacity = 0;
}
}
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