// Learn TypeScript: // - https://docs.cocos.com/creator/2.4/manual/en/scripting/typescript.html // Learn Attribute: // - https://docs.cocos.com/creator/2.4/manual/en/scripting/reference/attributes.html // Learn life-cycle callbacks: // - https://docs.cocos.com/creator/2.4/manual/en/scripting/life-cycle-callbacks.html import EventName, { ItemName, PopName, SofaColor } from "../EventName/EventName"; import { BusNodeData, BusType, ChangeCountDown, ChangeGraySitDownColor, ChangeMapInitOver, ChangeRoloInitOver, ChangeRoloQueues, ChangetableData, ChangetableDataBusType, ChangetableDataMen, MapData, MapDataBusTypes, MapDataBusTypes_ByYinDao, MapDataCountDown, MapDataCountDown_ByYinDao, MapDataGraySitDownColor, MapDataGraySitDownColor_ByYinDao, MapDataRoloQueues, MapDataRoloQueues_ByYinDao, MapData_ByYinDao, MapInitOver, MenPos, RoloInitOver, tableData } from "../GameLogic/DataConfig"; import HTTPS, { NetPost } from "../Template/HTTPS"; import LocalData, { WorkState } from "../Template/LocalData"; import MyComponent from "../Template/MyComponent"; import PopManger, { GameOver } from "./PopManger"; const { ccclass, property } = cc._decorator; @ccclass export default class GameLevel extends MyComponent { //当前游戏关卡 static gameLevel: number = 1 @property(cc.SpriteFrame) sp_on: cc.SpriteFrame = null @property(cc.SpriteFrame) sp_off: cc.SpriteFrame = null protected onEnable(): void { GameLevel.gameLevel = 1 cc.systemEvent.emit(EventName.driveBus, 0) } onLoad(): void { super.onLoad(); this.regEvent(EventName.NextCoustomGame, this.NextCoustomGame, this) this.regEvent(EventName.driveBusOver, this.driveBusOver, this) this.regEvent(EventName.driveBusMind, this.driveBusMind, this) this.setGameSlider() } //开车结束了 driveBusOver() { //生成车门 cc.systemEvent.emit(EventName.BronDoor) } //开车到一半了 driveBusMind() { PopManger.getInstance().Pop(PopName.CurrentLevel) ChangeRoloInitOver(false) ChangeMapInitOver(false) //现在的关卡状态 let _WorkState = LocalData.getInstance().getWorkState() switch (_WorkState) { case WorkState.引导: console.log('当前是引导关卡'); //改变地图数据 this.changeMap_ByYinDao() break; case WorkState.上班: console.log('当前是上班关卡'); //改变地图数据 this.changeMap() break; case WorkState.加班: console.log('当前是加班关卡'); GameLevel.gameLevel = 6 //改变地图数据 this.changeMap() break; default: cc.error('未知状态'); break; } //加载人物 this.loadRole() //加载车子皮肤 设置位置 this.loadMapBg() //加载车子皮肤 设置位置 this.loadBus() //加载地图 this.loadMap() } //下一关 NextCoustomGame() { //现在的关卡状态 let _WorkState = LocalData.getInstance().getWorkState() switch (_WorkState) { case WorkState.引导: cc.systemEvent.emit(EventName.driveBus, 1.5, false) PopManger.getInstance().Pop(PopName.Successfully) LocalData.getInstance().setWorkState(WorkState.上班) break; case WorkState.上班: //关卡++ GameLevel.gameLevel++ if (GameLevel.gameLevel == 6) { this.GameSecceed() } else { //恢复时间 cc.systemEvent.emit(EventName.RestoreCountDown) //开始发车 cc.systemEvent.emit(EventName.driveBus) } break; case WorkState.加班: cc.systemEvent.emit(EventName.driveBus, 1.5, false) PopManger.getInstance().Pop(PopName.Successfully) //发送服务器游戏成功or 失败 PopManger.getInstance().GameOver(GameOver.succeed) break; default: cc.error('未知状态'); break; } } GameSecceed() { PopManger.getInstance().Pop(PopName.Successfully) LocalData.getInstance().setWorkState(WorkState.加班) //发送服务器游戏成功or 失败 PopManger.getInstance().GameOver(GameOver.succeed) //加班 console.error('游戏通关了'); console.error('执行加班处理'); } protected update(dt: number): void { if (RoloInitOver && MapInitOver) { ChangeRoloInitOver(false) ChangeMapInitOver(false) cc.systemEvent.emit(EventName.InitCountDown) cc.systemEvent.emit(EventName.RoleStartBus) } } setGameSlider() { let Level_Array = this.node.getComponentsInChildren(cc.Sprite); // 进度 for (let i = 0; i < Level_Array.length; i++) { if (i < GameLevel.gameLevel) { Level_Array[i].spriteFrame = this.sp_on; // 根据游戏级别设置为开启状态 } else { Level_Array[i].spriteFrame = this.sp_off; // 其余的设置为关闭状态 } } } //#region 引导关卡初始化 changeMap_ByYinDao() { //加载地图数据 在加载车子 ChangetableData(MapData_ByYinDao[0]) //加载车子类型 ChangetableDataBusType(MapDataBusTypes_ByYinDao[0]) //修改车门位置 ChangetableDataMen(MenPos[BusType]) //加载灰色座位数据 ChangeGraySitDownColor(MapDataGraySitDownColor_ByYinDao[0]) //加载乘客数据 ChangeRoloQueues(MapDataRoloQueues_ByYinDao[0]) //加载倒计时时间 ChangeCountDown(MapDataCountDown_ByYinDao[0]) } //#endregion //#region 上班关卡初始化 changeMap() { //加载地图数据 在加载车子 ChangetableData(MapData[GameLevel.gameLevel - 1]) //加载车子类型 ChangetableDataBusType(MapDataBusTypes[GameLevel.gameLevel - 1]) //修改车门位置 ChangetableDataMen(MenPos[BusType]) //加载灰色座位数据 ChangeGraySitDownColor(MapDataGraySitDownColor[GameLevel.gameLevel - 1]) //加载乘客数据 ChangeRoloQueues(MapDataRoloQueues[GameLevel.gameLevel - 1]) //加载倒计时时间 ChangeCountDown(MapDataCountDown[GameLevel.gameLevel - 1]) } //#endregion loadRole() { //初始化排队人群位置 cc.systemEvent.emit(EventName.initRoleQueuePos) //生成人物 cc.systemEvent.emit(EventName.BronRole) } //加载车子皮肤 loadBus() { //生成车子皮肤 cc.systemEvent.emit(EventName.BronBus) } //加载地图 loadMap() { this.setGameSlider() } loadMapBg() { let bgNode = this.node.parent.getChildByName('background') let path = BusNodeData[BusType][LocalData.getInstance().getBusSkin() - 1].BgImage PopManger.getInstance().LoadAssets(path).then((sp) => { if (sp) { bgNode.getComponent(cc.Sprite).spriteFrame = new cc.SpriteFrame(sp) } }).catch((error) => { // 加载失败的处理 }); let Rail = BusNodeData[BusType][LocalData.getInstance().getBusSkin() - 1].Rail if (Rail) { for (let index = 0; index < bgNode.children.length; index++) { const sub_bgNode = bgNode.children[index]; const element = Rail[index]; if (element) { sub_bgNode.setPosition(element[0], element[1]) sub_bgNode.setScale(element[2], element[3]) sub_bgNode.active = true } else { sub_bgNode.active = false } } } else { bgNode.children.forEach(e => { e.active = false }) } } }