| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250 |
- import { _decorator, Component, Mask, Node, RichText, Size, Tween, tween, UIOpacity, UITransform, v3, Vec3 } from 'cc';
- import LocalizedLabel from '../i18n/LocalizedLabel';
- import { BlockController } from './Block/BlockController';
- import { BlocksAll, GridBoardData } from './Block/BlockData';
- import GlobalData from './GlobalData';
- import { GridBlockMgr } from './GridBlockMgr';
- import { LocalStorageMgr } from './LocalStorageMgr';
- import { TouchMgr } from './TouchMgr';
- const { ccclass, property } = _decorator;
- @ccclass('Guide')
- export class Guide extends Component {
- /** 单例模式 */
- private static _ins: Guide;
- constructor() {
- super();
- Guide._ins = this;
- }
- public static get ins(): Guide {
- if (!Guide._ins) {
- Guide._ins = new Guide();
- }
- return Guide._ins;
- }
- newComerReward: any = null;
- @property(Mask)
- private mask: Mask = null;
- @property(Node)
- shade: Node = null;
- @property(UITransform)
- toucher: UITransform;
- @property(UITransform)
- private pointer: UITransform = null;
- @property(Node)
- block: Node = null;
- @property(Node)
- diolog: Node = null;
- @property(RichText)
- diologLabel: RichText = null
- guideindex1: number[] = [3, 3];
- guideindex2: number[] = [3, 3];
- guideindex3: number[] = [4, 3];
- @property(Node)
- guidenode: Node = null;
- guideTarPos: Vec3 = null;
- @property(Node)
- selecnode: Node = null;
- selecOriPos: Vec3 = null;
- // @property(Node)
- // uiGuideNode1: Node = null;
- // uiGuideNodePos1: Vec3 = null;
- // @property(Node)
- // uiGuideNode2: Node = null;
- // uiGuideNodePos2: Vec3 = null;
- // @property(Node)
- // uiGuideNode3: Node = null;
- // uiGuideNodePos3: Vec3 = null;
- @property(Node)
- PopPage: Node = null;
- boardeffectTimes: number = 1;
- protected start(): void {
- // log(GlobalData.isCommer)
- if (GlobalData.isCommer) {
- this.runGuide();
- }
- }
- runGuide() {
- if (!GlobalData.isCommer) {
- this.node.active = false;
- return;
- }
- TouchMgr.ins.resumePromptBlock();
- // Tween.stopAll();
- Tween.stopAllByTarget(this.toucher.node);
- Tween.stopAllByTarget(this.block);
- // tween(this.toucher.node).stop()
- // tween(this.block).stop()
- this.guideTarPos = TouchMgr.ins.getNodeAToNodeBPoint(this.guidenode, this.node);
- this.selecOriPos = TouchMgr.ins.getNodeAToNodeBPoint(this.selecnode, this.node);
- // this.uiGuideNodePos1 = TouchMgr.ins.getNodeAToNodeBPoint(this.uiGuideNode1, this.node);
- // console.log(LocalStorageMgr.getItem(LocalStorageMgr.isCommer_key, true));
- // console.log(LocalStorageMgr.getItem(LocalStorageMgr.guideRecord_key, 1));
- if (GlobalData.guideRecord == 1) {
- GridBlockMgr.ins.generateBoard(GridBoardData.customizeBoardData1);
- GridBlockMgr.ins.generareGuideSelectionBlock([BlocksAll[45], BlocksAll[45], BlocksAll[45]]);
- this.guide1();
- } else if (GlobalData.guideRecord == 2) {
- GridBlockMgr.ins.generateBoard(GridBoardData.customizeBoardData2);
- GridBlockMgr.ins.generareGuideSelectionBlock([BlocksAll[10], BlocksAll[10], BlocksAll[10]]);
- this.guide2();
- } else if (GlobalData.guideRecord == 3) {
- GridBlockMgr.ins.generateBoard(GridBoardData.customizeBoardData3);
- GridBlockMgr.ins.generareGuideSelectionBlock([BlocksAll[11], BlocksAll[11], BlocksAll[11]]);
- this.guide3();
- } else if (GlobalData.guideRecord == 4) {
- this.guide4();
- }
- }
- //第一步引导
- guide1() {
- this.toucher.node.active = true
- this.diolog.active = true;
- this.diolog.setPosition(v3(0, 500, 0));
- this.diologLabel.string = '<color=#855933>拖动方块,填满整行可进行消除</color>';
- // let localizedLabel = this.diologLabel.node.getComponent(LocalizedLabel);
- // localizedLabel.setTextKeyAndOption("guide_Rtext_1");
- this.block.active = true;
- this.block.setPosition(this.selecOriPos);
- this.toucher.node.setPosition(this.selecOriPos.add(v3(100, -60, 0)));
- this.block.getComponent(BlockController).updateBlockSet(false, BlocksAll[45], 150);
- this.block.getComponent(BlockController).addBlockOffset(2);
- this.pointer.node.setPosition(v3(0, 0, 0))
- tween(this.toucher.node)
- .delay(0.2)
- .by(1, { position: v3(0, this.guideTarPos.y - this.selecOriPos.y, 0) })
- .delay(0.2)
- .by(0.01, { position: v3(0, -(this.guideTarPos.y - this.selecOriPos.y), 0) })
- .union()
- .repeatForever()
- .start()
- tween(this.block)
- .delay(0.2)
- .by(1, { position: v3(0, this.guideTarPos.y - this.selecOriPos.y, 0) })
- .delay(0.2)
- .by(0.01, { position: v3(0, -(this.guideTarPos.y - this.selecOriPos.y), 0) })
- .union()
- .repeatForever()
- .start()
- }
- guide2() {
- //这只是展示手指移动
- this.toucher.node.active = true
- this.diolog.active = true;
- this.diolog.setPosition(v3(0, 500, 0));
- this.diologLabel.string = '<color=#855933>点击方块可旋转90°,不限次数哦</color>';
- this.block.active = true;
- this.block.setPosition(this.selecOriPos);
- this.toucher.node.setPosition(this.selecOriPos.add(v3(100, -60, 0)));
- this.block.getComponent(BlockController).updateBlockSet(false, BlocksAll[7], 150);
- this.block.getComponent(BlockController).addBlockOffset(2);
- this.pointer.node.setPosition(v3(0, 0, 0))
- // this.guideTarPos.add3f(0, -55, 0);
- tween(this.toucher.node)
- .delay(0.2)
- .by(1, { position: v3(0, this.guideTarPos.y - this.selecOriPos.y - 55, 0) })
- .delay(0.2)
- .by(0.01, { position: v3(0, -(this.guideTarPos.y - this.selecOriPos.y) + 55, 0) })
- .union()
- .repeatForever()
- .start()
- tween(this.block)
- .delay(0.2)
- .by(1, { position: v3(0, this.guideTarPos.y - this.selecOriPos.y - 55, 0) })
- .delay(0.2)
- .by(0.01, { position: v3(0, -(this.guideTarPos.y - this.selecOriPos.y) + 55, 0) })
- .union()
- .repeatForever()
- .start()
- }
- guide3() {
- this.toucher.node.active = true
- this.diolog.active = true;
- this.diolog.setPosition(v3(0, 500, 0));
- this.diologLabel.string = '<color=#855933>当行与列同时被砖块填满,会一起消除</color>';
- this.block.active = true;
- this.block.setPosition(this.selecOriPos);
- this.toucher.node.setPosition(this.selecOriPos.add(v3(100, -60, 0)));
- this.block.getComponent(BlockController).updateBlockSet(false, BlocksAll[11], 150);
- this.block.getComponent(BlockController).addBlockOffset(2);
- this.pointer.node.setPosition(v3(0, 0, 0))
- tween(this.toucher.node)
- .delay(0.2)
- .by(1, { position: v3(0, this.guideTarPos.y - this.selecOriPos.y - 55, 0) })
- .delay(0.2)
- .by(0.01, { position: v3(0, -(this.guideTarPos.y - this.selecOriPos.y) + 55, 0) })
- .union()
- .repeatForever()
- .start()
- tween(this.block)
- .delay(0.2)
- .by(1, { position: v3(0, this.guideTarPos.y - this.selecOriPos.y - 55, 0) })
- .delay(0.2)
- .by(0.01, { position: v3(0, -(this.guideTarPos.y - this.selecOriPos.y) + 55, 0) })
- .union()
- .repeatForever()
- .start()
- }
- async guide4() {
- GridBlockMgr.ins.generateBoard_effect(GridBoardData.customizeBoardData4);
- this.scheduleOnce(() => {
- GridBlockMgr.ins.generateSelectionBlock(false, [BlocksAll[15], BlocksAll[2], BlocksAll[15]])
- }, 1);
- this.node.active = true;
- this.block.active = false;
- this.toucher.node.active = false
- this.diolog.active = true;
- this.diolog.setPosition(v3(0, 0, 0));
- this.diolog.getComponent(UIOpacity).opacity = 0;
- tween(this.diolog.getComponent(UIOpacity))
- .to(0.5, { opacity: 255 })
- .delay(2)
- .to(0.5, { opacity: 0 })
- .call(() => {
- this.node.active = false;
- })
- .start()
- }
- completeCurGuide(record) {
- GlobalData.guideRecord = record;
- LocalStorageMgr.setItem(LocalStorageMgr.guideRecord_key, GlobalData.guideRecord);
- this.runGuide();
- if (GlobalData.guideRecord >= 5) {
- GlobalData.isCommer = false;
- LocalStorageMgr.setItem(LocalStorageMgr.isCommer_key, GlobalData.isCommer);
- }
- }
- }
|