| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- import Role from "./Role";
- import Bot from "./Bot";
- import Saw from "./Saw";
- import Settlement from "../Panel/Settlement";
- const {ccclass, property} = cc._decorator;
-
- @ccclass
- export default class Controller extends cc.Component {
- roles:Role[] = new Array();
- saws:cc.Node[] = new Array();
- gameOver:boolean = false;
- onLoad(){
- window.controller = this;
- cc.view.setOrientation(cc.macro.ORIENTATION_LANDSCAPE);
- cc.director.getPhysicsManager().enabled = true;
- cc.director.getCollisionManager().enabled = true;
- // cc.director.getCollisionManager().enabledDebugDraw = true;
- }
- startGame(){
- let playerIndex = Math.floor(Math.random()*4);
- let positions = [cc.v2(-450,180),cc.v2(-150,120),cc.v2(150,120),cc.v2(450,180)];
- for(let i=0;i<4;i++){
- this.createRole(positions.shift(),i,i==playerIndex?false:true);
- }
- this.showStartCountDownAnimation(this.node,()=>{
- this.createSaw(cc.v2(0,250),cc.v2(-1000,0),1000);
- this.createSaw(cc.v2(0,250),cc.v2(-700,-700),1000);
- this.createSaw(cc.v2(0,250),cc.v2(700,-700),1000);
- this.createSaw(cc.v2(0,250),cc.v2(1000,0),1000);
- });
- cc.find('Canvas/KeyBoardPanel').active = true;
- }
-
- createRole(position:cc.Vec2,index:number,isBot:boolean){
- let node = cc.instantiate(window.resource.pf_Role);
- node.setPosition(position);
- let role = node.addComponent(Role);
- role.index = index;
- window.map.node.addChild(node);
- if(!isBot){
- role.activeDeltaGreen();
- window.playerRole = role;
- }
- this.roles.push(role);
- if(isBot){
- node.addComponent(Bot);
- }
- }
- destroyRole(role:Role){
- if(this.roles.indexOf(role)>-1){
- let ary = new Array();
- this.roles.forEach((elem)=>{
- if(elem!=role){
- ary.push(elem);
- }
- });
- this.roles = ary;
- role.node.destroy();
- }
- if(this.roles.length==1){
- let index = this.roles[0].index
- setTimeout(()=>{
- this.showSettlementPanel(index);
- },360);
- }
- }
- showSettlementPanel(index:number){
- this.gameOver = true;
- let panel = cc.find('Canvas/SettlementPanel');
- panel.active = true;
- panel.getComponent(Settlement).showWinner(index);
- }
- createSaw(position:cc.Vec2, linearVelocity:cc.Vec2, angularVelocity:number){
- let node = cc.instantiate(window.resource.pf_Saw);
- node.setPosition(position);
- node.addComponent(Saw);
- node.getComponent(cc.RigidBody).linearVelocity = linearVelocity;
- node.getComponent(cc.RigidBody).angularVelocity = angularVelocity;
-
- window.map.node.addChild(node);
- this.saws.push(node);
- }
- destroySaw(saw:cc.Node){
- if(this.saws.indexOf(saw)>-1){
- let ary = new Array();
- this.saws.forEach((elem)=>{
- if(elem!=saw){
- ary.push(elem);
- }
- });
- this.saws = ary;
- saw.destroy();
- }
- }
- showStartCountDownAnimation(parent:cc.Node,callback:Function):void{
- for(let i=3;i>=0;i--){
- this.scheduleOnce(()=>{
- let node = new cc.Node();
- node.addComponent(cc.Sprite).spriteFrame = window.resource['sf_StartCountDownAnimation'][i];
- node.zIndex = 10;
- node.setScale(2.5);
- node.setPosition(0,150);
- parent.addChild(node);
- node.runAction(cc.sequence(cc.scaleBy(0.6,0.8).easing(cc.easeBackInOut()),cc.callFunc(()=>{
- node.destroy();
- if(i==0&&callback){
- callback();
- }
- },this)));
- },3-i);
- }
- }
- }
|