123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- import { _decorator, BoxCollider2D, CircleCollider2D, Color, Component, EventTouch, find, Input, instantiate, Node, PolygonCollider2D, Rect, RigidBody2D, Sprite, tween, UITransform, Vec2, Vec3 } from 'cc';
- import { ElementAction } from './ElementAction';
- import { LayerRootAction } from './LayerRootAction';
- import { Clips } from './Enums';
- import { AudioMgr } from './AudioMgr';
- import { LayerCatAction } from './LayerCatAction';
- import { ColorDate } from './ColorDate';
- import { Global } from './Global';
- const { ccclass, property } = _decorator;
- @ccclass('PinAction')
- export class PinAction extends Component {
- pin_color: ColorDate = null;
- start() {
- this.node.on(Input.EventType.TOUCH_START, this.touch_start, this);
- }
- update(deltaTime: number) {
- }
- /**
- *
- * @param group_id
- * @param pin_color
- */
- public init_date(group_id: number, pin_color: ColorDate) {
- this.node.getComponent(RigidBody2D).group = group_id;
- this.node.getComponents(BoxCollider2D).forEach(element => {
- element.group = group_id;
- });
- this.node.getComponents(CircleCollider2D).forEach(element => {
- element.group = group_id;
- });
- this.node.getComponents(PolygonCollider2D).forEach(element => {
- element.group = group_id;
- });
- this.pin_color = pin_color;
- //set color
- this.reset_img();
- }
- /**
- *
- * @param e
- * @returns
- */
- touch_start(e: EventTouch) {
- AudioMgr.ins.playSound(Clips.open_screw);
- // ret?boolean ,return put result,true=success,false=failure
- if (Global.layer_cat_action.put_pin(this)) {
- // 需要检查,关卡是否结束
- return;
- }
- Global.layer_empty_action.put_pin(this);
- if (Global.layer_empty_action.is_pin_full()) {
- //TODO 游戏结束,这里有个bug,用延迟处理,后面处理
- tween(this.node).delay(0.75).call(() => {
- if (Global.layer_empty_action.is_pin_full()) {
- Global.game_over_action.open();
- } else {
- //console.log("$FFFFFFFFFFFFF");
- }
- }).start();
- }
- }
- public remove_collider() {
- this.node.getComponent(RigidBody2D).enabled = false;
- this.node.getComponent(CircleCollider2D).enabled = false;
- this.node.off(Input.EventType.TOUCH_START);
- }
- /**
- *
- * @returns void
- */
- reset_img() {
- if (!this.pin_color) {
- return;
- }
- let img = this.node.getComponent(Sprite);
- img.color = new Color(this.pin_color.r, this.pin_color.g, this.pin_color.b, 255);
- let holering = this.node.getChildByName("holering")
- if (holering) {
- tween(holering)
- .to(0.35, { scale: new Vec3(1.2, 1.2, 1) }, Global.our_easing)
- .to(0.35, { scale: new Vec3(0.8, 0.8, 1) }, Global.our_easing)
- .to(0.25, { scale: new Vec3(1, 1, 1) }, Global.our_easing)
- .call(() => {
- holering.scale = new Vec3(1, 1, 1);
- })
- .start();
- }
- }
- // get_pin_color(arr:ColorDate[]){
- // if(!this.pin_color){
- // return;
- // }
- // arr.push(this.pin_color);
- // }
- }
|