796 lines
31 KiB
TypeScript
796 lines
31 KiB
TypeScript
// Learn TypeScript:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
|
||
// Learn Attribute:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
|
||
// Learn life-cycle callbacks:
|
||
// - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html
|
||
|
||
const {ccclass, property} = cc._decorator;
|
||
|
||
export enum BlockType{
|
||
/*普通地块 */
|
||
Nomal = 0,
|
||
/*起点地块 */
|
||
Start = 1,
|
||
/*湿地 */
|
||
Nunja = 2,
|
||
/*山峰 */
|
||
Peak = 3,
|
||
/*终点地块 */
|
||
End = 4,
|
||
|
||
/*息壤 */
|
||
Xi_Soil = 5,
|
||
/*加固 */
|
||
Reinforce = 6
|
||
}
|
||
|
||
export enum PathType{
|
||
err = "err",
|
||
up = "up",
|
||
down = "down",
|
||
left = "left",
|
||
right = "right",
|
||
up_left = "up_left",
|
||
up_right = "up_right",
|
||
down_left = "down_left",
|
||
down_right = "down_right",
|
||
left_up = "left_up",
|
||
left_down = "left_down",
|
||
right_up = "right_up",
|
||
right_down = "right_down",
|
||
}
|
||
|
||
@ccclass
|
||
export default class NewClass extends cc.Component {
|
||
// LIFE-CYCLE CALLBACKS:
|
||
@property(cc.SpriteAtlas)
|
||
UI: cc.SpriteAtlas = null;
|
||
|
||
pos_Shifting:number;
|
||
block_Type:number;
|
||
path_Type:string;
|
||
finishi:boolean;
|
||
pos: any;
|
||
onLoad () {
|
||
this.finishi = false;
|
||
this.pos_Shifting = 0;
|
||
this.pos = cc.v2(0,0);
|
||
}
|
||
|
||
start () {
|
||
|
||
}
|
||
/**
|
||
* 息壤过后改变修筑路径
|
||
* @param order 建筑地图数组里的执行的序列号
|
||
* @param number 息壤执行长度,改变息壤用后其他路径的X或Y值
|
||
* @param direction 只为两个方向,横向false,纵向true
|
||
* @param road 建筑地图数组或者洪峰路径数组,可理解为路径数组,path_Array water_Array
|
||
*/
|
||
//初始化地图块数据
|
||
initData(type,pos,max){
|
||
this.block_Type = type;
|
||
this.pos = cc.v2(pos.x,pos.y);
|
||
// if(this.pos.y%2 == 0) this.node.getChildByName("tip").active = true;
|
||
if(type == cc.Enum(BlockType).Start){
|
||
var bg = this.node.getChildByName("sp");
|
||
// this.node.getComponent(cc.Sprite).spriteFrame = null;
|
||
// bg.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["start"];
|
||
if(cc.fx.GameConfig.GM_INFO.level > 3){
|
||
// bg.getChildByName("start").y = 20;
|
||
bg.getChildByName("end").y = 20;
|
||
}
|
||
this.rotateTarget(bg,"start",pos,max);
|
||
}
|
||
else if(type == cc.Enum(BlockType).End){
|
||
var bg = this.node.getChildByName("sp");
|
||
// this.node.getComponent(cc.Sprite).spriteFrame = null;
|
||
bg.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["end"];
|
||
if(cc.fx.GameConfig.GM_INFO.level > 3){
|
||
// bg.getChildByName("start").y = 20;
|
||
bg.getChildByName("end").y = 20;
|
||
}
|
||
this.rotateTarget(bg,"end",pos,max);
|
||
}
|
||
else if(type == cc.Enum(BlockType).Nunja){
|
||
let random = Math.floor(Math.random()*4);
|
||
let rotationArr = [0,90,180,270];
|
||
let rotation = rotationArr[random];
|
||
this.node.getChildByName("bg").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e5"];
|
||
this.node.getChildByName("bg").angle = -rotation;
|
||
this.node.getComponent(cc.Sprite).spriteFrame = null;
|
||
}
|
||
else if(type == cc.Enum(BlockType).Peak){
|
||
let random = Math.floor(Math.random()*4+1);
|
||
let name = "shan" + random;
|
||
this.node.getChildByName("bg").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
|
||
this.node.getComponent(cc.Sprite).spriteFrame = null;
|
||
}
|
||
if(cc.fx.GameConfig.GM_INFO.level == 1){
|
||
this.node.getChildByName("tipWin").opacity = 220;
|
||
this.node.getChildByName("tipLose").opacity = 220;
|
||
}
|
||
else if(cc.fx.GameConfig.GM_INFO.level == 2){
|
||
this.node.getChildByName("tipWin").opacity = 100;
|
||
this.node.getChildByName("tipLose").opacity = 100;
|
||
}
|
||
else if(cc.fx.GameConfig.GM_INFO.level == 3){
|
||
this.node.getChildByName("tipWin").opacity = 50;
|
||
this.node.getChildByName("tipLose").opacity = 50;
|
||
}
|
||
else if(cc.fx.GameConfig.GM_INFO.level > 3){
|
||
this.node.getChildByName("tipWin").opacity = 0;
|
||
this.node.getChildByName("tipLose").opacity = 0;
|
||
}
|
||
|
||
}
|
||
//旋转入海口和出海口的 图片以及文字角度
|
||
rotateTarget(bg,name,pos,max){
|
||
let target = bg.getChildByName(name);
|
||
if(pos.y == max.y-1){
|
||
bg.angle = 0;
|
||
if(name == "end") target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["end_x"];
|
||
target.active = true;
|
||
target.angle = 0;
|
||
return;
|
||
}
|
||
else if(pos.y == 0){
|
||
bg.angle = -180;
|
||
if(name == "end")target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["end_x"];
|
||
target.active = true;
|
||
target.angle = -180;
|
||
return;
|
||
}
|
||
else if(pos.x == max.x-1){
|
||
bg.angle = 90;
|
||
if(name == "start")target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["start_y"];
|
||
else target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["end_y"];
|
||
target.active = true;
|
||
target.angle = -90;
|
||
}
|
||
else if(pos.x == 0){
|
||
bg.angle = -90;
|
||
if(name == "start")target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["start_y"];
|
||
else target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["end_y"];
|
||
target.active = true;
|
||
target.angle = 90;
|
||
}
|
||
}
|
||
|
||
setPath(type){
|
||
this.path_Type = type;
|
||
}
|
||
//设置息壤在起点
|
||
set_Xi_Soil(direction,type){
|
||
let sp = this.node.getChildByName("sp");
|
||
let turn = this.node.getChildByName("turnStart");
|
||
let water = this.node.getChildByName("waterStart");
|
||
|
||
if(direction == "left" || direction == "right"){
|
||
if(sp.angle == 0){
|
||
turn.active =true;
|
||
water.active = true;
|
||
water.opacity = 0;
|
||
if(type){
|
||
turn.angle = direction=="left"?90:0;
|
||
water.angle = direction=="left"?90:0;
|
||
|
||
}
|
||
else{
|
||
turn.angle = direction=="left"?0:90;
|
||
water.angle = direction=="left"?0:90;
|
||
}
|
||
|
||
}
|
||
else if(sp.angle == -180){
|
||
turn.active =true;
|
||
water.active = true;
|
||
water.opacity = 0;
|
||
if(type){
|
||
turn.angle = direction=="left"?-180:-90;
|
||
water.angle = direction=="left"?-180:-90;
|
||
}
|
||
else{
|
||
turn.angle = direction=="left"?270:-180;
|
||
water.angle = direction=="left"?270:-180;
|
||
}
|
||
|
||
}
|
||
else if(sp.angle == -90){
|
||
turn.active =true;
|
||
turn.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["a1"];
|
||
turn.angle = 90;
|
||
if(type){
|
||
water.active = true;
|
||
water.angle = 90;
|
||
water.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block1"];
|
||
water.opacity = 0;
|
||
}
|
||
|
||
}
|
||
else if(sp.angle == 90){
|
||
turn.active =true;
|
||
turn.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["a1"];
|
||
turn.angle = 90;
|
||
if(type){
|
||
water.active = true;
|
||
water.angle = 90;
|
||
water.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block1"];
|
||
water.opacity = 0;
|
||
}
|
||
}
|
||
|
||
}
|
||
else if(direction == "up" || direction == "down"){
|
||
let sp = this.node.getChildByName("sp");
|
||
if(sp.angle == -90){
|
||
turn.active =true;
|
||
water.active = true;
|
||
water.opacity = 0;
|
||
if(type){
|
||
turn.angle = direction=="up"?0:-90;
|
||
water.angle = direction=="up"?0:-90;
|
||
}
|
||
else{
|
||
turn.angle = direction=="up"?-90:0;
|
||
water.angle = direction=="up"?-90:0;
|
||
}
|
||
}
|
||
else if(sp.angle == 90){
|
||
turn.active = true;
|
||
water.active = true;
|
||
water.opacity = 0;
|
||
if(type){
|
||
turn.angle = direction=="up"?90:180;
|
||
water.angle = direction=="up"?90:180;
|
||
}
|
||
else{
|
||
turn.angle = direction=="up"?180:90;
|
||
water.angle = direction=="up"?180:90;
|
||
}
|
||
|
||
}
|
||
else if(sp.angle == 0){
|
||
turn.active =true;
|
||
turn.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["a1"];
|
||
turn.angle = 0;
|
||
if(type){
|
||
water.active = true;
|
||
water.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block1"];
|
||
water.opacity = 0;
|
||
}
|
||
}
|
||
else if(sp.angle == -180){
|
||
turn.active =true;
|
||
turn.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["a1"];
|
||
turn.angle = 0;
|
||
if(type){
|
||
water.active = true;
|
||
water.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block1"];
|
||
water.opacity = 0;
|
||
}
|
||
}
|
||
}
|
||
}
|
||
//息壤具体执行方法 外部可调用
|
||
set_Xi_SoilType(direction,end,name){
|
||
// console.log("息壤",direction,name,end);
|
||
var jg = this.repeatRoad(true,direction);
|
||
console.log("息壤重复判断结果",jg);
|
||
if(jg == true){
|
||
cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose");
|
||
return;
|
||
}
|
||
|
||
if(this.block_Type == cc.Enum(BlockType).Start){
|
||
this.set_Xi_Soil(direction,false);
|
||
return;
|
||
}
|
||
|
||
if(this.block_Type == cc.Enum(BlockType).Nunja){
|
||
this.block_Type = cc.Enum(BlockType).Nomal;
|
||
this.node.getChildByName("bg").getComponent(cc.Sprite).spriteFrame = null;
|
||
this.node.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["block_Bg"];
|
||
}
|
||
if(end != null){
|
||
if(this.block_Type == cc.Enum(BlockType).End){
|
||
this.finishi = true;
|
||
setTimeout(() => {
|
||
this.set_Xi_Soil(direction,true);
|
||
}, 500);
|
||
|
||
}
|
||
setTimeout(() => {
|
||
if(name == "water") cc.fx.Notifications.emit(cc.fx.Message.nextWater,(end+1));
|
||
else cc.fx.Notifications.emit(cc.fx.Message.next,(end+1));
|
||
}, 400);
|
||
}
|
||
|
||
if(this.block_Type != cc.Enum(BlockType).End && this.block_Type != cc.Enum(BlockType).Start){
|
||
this.block_Type = cc.Enum(BlockType).Xi_Soil;
|
||
}
|
||
else{
|
||
}
|
||
|
||
let target = this.node.getChildByName("Xi_Soil");
|
||
this.path_Type = direction;
|
||
target.active = true;
|
||
target.opacity = 0;
|
||
cc.tween(target)
|
||
.to(0.1,{opacity:255})
|
||
.to(0.1,{opacity:0})
|
||
.call(() =>{
|
||
if(direction != null && end == null){
|
||
let data = {
|
||
order:0,
|
||
time:cc.fx.GameConfig.TIME_INFO.waterSpeed[0],
|
||
type:0,
|
||
circulate:false
|
||
};
|
||
if(name == "water"){
|
||
this.runWater(data);
|
||
}
|
||
else this.runRoad(data);
|
||
}
|
||
})
|
||
.start();
|
||
}
|
||
//判断重复路径
|
||
repeatRoad(type,direction){
|
||
//如果双向都占用了还进来就算死了-
|
||
var jg = false;
|
||
|
||
if(this.node.getChildByName("vertical2").active == true && this.node.getChildByName("horizontal2").active == true){
|
||
// alert("治水失败");
|
||
jg = true;
|
||
if(type){
|
||
cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose");
|
||
}
|
||
}
|
||
|
||
else if(this.node.getChildByName("turn2").active == true && this.block_Type != cc.Enum(BlockType).Xi_Soil){
|
||
// alert("治水失败");
|
||
jg = true;
|
||
if(type){
|
||
cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose");
|
||
}
|
||
}
|
||
|
||
if(direction){
|
||
if(this.node.getChildByName("vertical2").active == true && this.block_Type == cc.Enum(BlockType).Xi_Soil && (direction == "up"|| direction =="down")){
|
||
// alert("治水失败");
|
||
if(this.node.getChildByName("vertical2").angle == 0 || this.node.getChildByName("vertical2").angle == 180 ){
|
||
jg = true;
|
||
if(type){
|
||
cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose");
|
||
}
|
||
}
|
||
|
||
|
||
}
|
||
else if(this.node.getChildByName("vertical2").active == true && this.block_Type == cc.Enum(BlockType).Xi_Soil && (direction == "right"|| direction =="left")){
|
||
// alert("治水失败");
|
||
if(this.node.getChildByName("vertical2").angle == 90 || this.node.getChildByName("vertical2").angle == 270 ){
|
||
jg = true;
|
||
if(type){
|
||
cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose");
|
||
}
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
return jg;
|
||
}
|
||
|
||
//修筑路线执行
|
||
runRoad(data){
|
||
if(this.path_Type == "err"){
|
||
setTimeout(() => {
|
||
if(data.circulate)
|
||
cc.fx.Notifications.emit(cc.fx.Message.next,order);
|
||
}, data.time);
|
||
return;
|
||
}
|
||
var jg = this.repeatRoad(true,null);
|
||
if(jg == true) return;
|
||
var target = null;
|
||
var progress = 1;
|
||
var time = data.time;
|
||
var order = data.order + 1;
|
||
var random = Math.floor(Math.random()*4 + 1);
|
||
target = this.node.getChildByName("vertical2");
|
||
if(target.name == "vertical"){
|
||
let water1 = target.getChildByName("wave").getChildByName("water1");
|
||
let water2 = target.getChildByName("wave").getChildByName("water2");
|
||
let water3 = target.getChildByName("wave").getChildByName("water3");
|
||
let timeDelay = 0.15;
|
||
water1.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water1.x,120)),cc.delayTime(timeDelay),
|
||
cc.callFunc(()=>{
|
||
water1.y = -120
|
||
})).repeatForever());
|
||
water2.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water2.x,120)),cc.delayTime(timeDelay),
|
||
cc.callFunc(()=>{
|
||
water2.y = -120
|
||
})).repeatForever());
|
||
water3.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water3.x,120)),cc.delayTime(timeDelay),
|
||
cc.callFunc(()=>{
|
||
water3.y = -120
|
||
})).repeatForever());
|
||
}
|
||
|
||
var name = "a" + random;
|
||
if(this.block_Type != cc.Enum(BlockType).Reinforce)target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
|
||
|
||
if(target.active == true){
|
||
target = this.node.getChildByName("horizontal2");
|
||
name = "b" + random;
|
||
if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
|
||
}
|
||
// console.log(this.path_Type,data.order);
|
||
if(this.path_Type == cc.Enum(PathType).up){
|
||
}
|
||
else if(this.path_Type == cc.Enum(PathType).down){
|
||
target.angle = 180;
|
||
}
|
||
else if(this.path_Type == cc.Enum(PathType).left){
|
||
target.angle = 90;
|
||
name = "b" + random;
|
||
if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
|
||
}
|
||
else if(this.path_Type == cc.Enum(PathType).right){
|
||
target.angle = 270;
|
||
name = "b" + random;
|
||
if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
|
||
}
|
||
else{
|
||
target = this.node.getChildByName("turn2");
|
||
if(target.name == "turn"){
|
||
let water = target.getChildByName("wave").getChildByName("water");
|
||
water.opacity = 0
|
||
water.runAction(cc.sequence(cc.rotateTo(7.2,-1080),cc.delayTime(0)).repeatForever());
|
||
setTimeout(() => {
|
||
water.opacity = 255;
|
||
}, 200);
|
||
}
|
||
name = "c" + random;
|
||
if(this.block_Type != cc.Enum(BlockType).Reinforce)target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
|
||
progress = 0.25;
|
||
if(this.path_Type == cc.Enum(PathType).up_left){
|
||
target.setPosition(-this.pos_Shifting,-this.pos_Shifting);
|
||
}
|
||
else if(this.path_Type == cc.Enum(PathType).up_right){
|
||
target.scaleX = -1;
|
||
target.setPosition(this.pos_Shifting,-this.pos_Shifting);
|
||
}
|
||
else if(this.path_Type == cc.Enum(PathType).down_left){
|
||
target.angle = 180;
|
||
target.scaleX = -1;
|
||
target.setPosition(-this.pos_Shifting,this.pos_Shifting);
|
||
}
|
||
else if(this.path_Type == cc.Enum(PathType).down_right){
|
||
target.angle = 180;
|
||
target.setPosition(this.pos_Shifting,this.pos_Shifting);
|
||
}
|
||
else if(this.path_Type == cc.Enum(PathType).left_up){
|
||
target.angle = -90;
|
||
target.scaleY = -1;
|
||
target.setPosition(this.pos_Shifting,this.pos_Shifting);
|
||
}
|
||
else if(this.path_Type == cc.Enum(PathType).left_down){
|
||
target.angle = 90;
|
||
target.setPosition(-this.pos_Shifting,-this.pos_Shifting);
|
||
}
|
||
else if(this.path_Type == cc.Enum(PathType).right_up){
|
||
target.angle = -90;
|
||
target.setPosition(-this.pos_Shifting,this.pos_Shifting);
|
||
|
||
}
|
||
else if(this.path_Type == cc.Enum(PathType).right_down){
|
||
target.angle = -90;
|
||
target.scaleX = -1;
|
||
target.setPosition(-this.pos_Shifting,-this.pos_Shifting);
|
||
}
|
||
}
|
||
if(this.path_Type == "Reinforce"){
|
||
target = this.node.getChildByName("Reinforce");
|
||
if(this.block_Type == cc.Enum(BlockType).Peak){
|
||
cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose");
|
||
return;
|
||
}
|
||
if(this.block_Type != cc.Enum(BlockType).End)this.block_Type = cc.Enum(BlockType).Reinforce;
|
||
this.node.getChildByName("vertical2").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e1"];
|
||
this.node.getChildByName("turn2").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e3"];
|
||
this.node.getChildByName("horizontal2").getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"]["e2"];
|
||
target.active = true;
|
||
target.opacity = 0;
|
||
progress = 1;
|
||
cc.tween(target)
|
||
.to(cc.fx.GameConfig.TIME_INFO.ReinforceSpeed,{opacity:255})
|
||
.call(() =>{
|
||
if(data.circulate)
|
||
cc.fx.Notifications.emit(cc.fx.Message.changeMap,order);
|
||
cc.fx.Notifications.emit(cc.fx.Message.next,order);
|
||
})
|
||
.start();
|
||
}
|
||
else if(this.path_Type == "Xi_Soil"){
|
||
target.active = false;
|
||
if(this.block_Type != cc.Enum(BlockType).End && this.block_Type != cc.Enum(BlockType).Start)
|
||
this.block_Type = cc.Enum(BlockType).Xi_Soil;
|
||
target = this.node.getChildByName("Xi_Soil");
|
||
target.active = true;
|
||
target.opacity = 0;
|
||
cc.tween(target)
|
||
.to(0.01,{opacity:1})
|
||
.to(0.01,{opacity:0})
|
||
.call(() =>{
|
||
if(data.circulate){
|
||
cc.fx.Notifications.emit(cc.fx.Message.next,order);
|
||
}
|
||
|
||
})
|
||
.start();
|
||
}
|
||
else if(this.path_Type == "End"){
|
||
target.active = false;
|
||
if(this.block_Type != cc.Enum(BlockType).End && this.block_Type != cc.Enum(BlockType).Start)
|
||
this.block_Type = cc.Enum(BlockType).Xi_Soil;
|
||
let posTemp = data.last;
|
||
var direction = "up";
|
||
if(this.pos.x - posTemp.x >= 1){
|
||
direction = "right";
|
||
}
|
||
else if(this.pos.x - posTemp.x <= -1){
|
||
direction = "left";
|
||
}
|
||
else if(this.pos.y - posTemp.y >= 1){
|
||
direction = "down";
|
||
}
|
||
|
||
// console.log("结束方向:",direction);
|
||
if(!this.finishi){
|
||
this.finishi = true;
|
||
this.set_Xi_Soil(direction,true);
|
||
}
|
||
}
|
||
else{
|
||
target.active = true;
|
||
if(this.block_Type != cc.Enum(BlockType).Xi_Soil){
|
||
target.getComponent(cc.Sprite).fillRange = 0;
|
||
cc.tween(target.getComponent(cc.Sprite))
|
||
.to(time,{fillRange:progress})
|
||
.call(() =>{
|
||
if(data.circulate)
|
||
cc.fx.Notifications.emit(cc.fx.Message.next,order);
|
||
})
|
||
.start();
|
||
}
|
||
else{
|
||
target.opacity = 0;
|
||
target.getComponent(cc.Sprite).fillRange = 1;
|
||
cc.tween(target)
|
||
.to(time,{opacity:255})
|
||
.call(() =>{
|
||
if(data.circulate)
|
||
cc.fx.Notifications.emit(cc.fx.Message.next,order);
|
||
})
|
||
.start();
|
||
}
|
||
}
|
||
|
||
}
|
||
//洪峰执行
|
||
runWater(data){
|
||
if(this.node.getChildByName("waterStart").active == true && this.block_Type == cc.Enum(BlockType).Start){
|
||
// sp.getChildByName("waterStart").opacity = 255;
|
||
cc.tween(this.node.getChildByName("waterStart"))
|
||
.to(0.2,{opacity:255})
|
||
.start();
|
||
}
|
||
|
||
|
||
if(this.path_Type == "err"){
|
||
setTimeout(() => {
|
||
if(data.circulate)
|
||
cc.fx.Notifications.emit(cc.fx.Message.nextWater,order);
|
||
}, data.time);
|
||
return;
|
||
}
|
||
//如果双向都占用了还进来就算死了-
|
||
if(this.node.getChildByName("vertical").active == true && this.node.getChildByName("horizontal").active == true){
|
||
// alert("治水失败");
|
||
cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose");
|
||
// cc.director.loadScene("GameScene");
|
||
return;
|
||
}
|
||
|
||
else if(this.node.getChildByName("turn").active == true && this.block_Type != cc.Enum(BlockType).Xi_Soil){
|
||
// alert("治水失败");
|
||
cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose");
|
||
// cc.director.loadScene("GameScene");
|
||
return;
|
||
}
|
||
var target = null;
|
||
var progress = 1;
|
||
var time = data.time;
|
||
var order = data.order + 1;
|
||
var random = Math.floor(Math.random()*4 + 1);
|
||
target = this.node.getChildByName("vertical");
|
||
if(target.name == "vertical"){
|
||
let water1 = target.getChildByName("wave").getChildByName("water1");
|
||
let water2 = target.getChildByName("wave").getChildByName("water2");
|
||
let water3 = target.getChildByName("wave").getChildByName("water3");
|
||
let timeDelay = 0.15;
|
||
water1.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water1.x,120)),cc.delayTime(timeDelay),
|
||
cc.callFunc(()=>{
|
||
water1.y = -120
|
||
})).repeatForever());
|
||
water2.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water2.x,120)),cc.delayTime(timeDelay),
|
||
cc.callFunc(()=>{
|
||
water2.y = -120
|
||
})).repeatForever());
|
||
water3.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water3.x,120)),cc.delayTime(timeDelay),
|
||
cc.callFunc(()=>{
|
||
water3.y = -120
|
||
})).repeatForever());
|
||
}
|
||
|
||
var name = "a" + random;
|
||
// if(this.block_Type != cc.Enum(BlockType).Reinforce)target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
|
||
|
||
if(target.active == true){
|
||
target = this.node.getChildByName("horizontal");
|
||
let water1 = target.getChildByName("wave").getChildByName("water1");
|
||
let water2 = target.getChildByName("wave").getChildByName("water2");
|
||
let water3 = target.getChildByName("wave").getChildByName("water3");
|
||
let timeDelay = 0.15;
|
||
water1.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water1.x,120)),cc.delayTime(timeDelay),
|
||
cc.callFunc(()=>{
|
||
water1.y = -120
|
||
})).repeatForever());
|
||
water2.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water2.x,120)),cc.delayTime(timeDelay),
|
||
cc.callFunc(()=>{
|
||
water2.y = -120
|
||
})).repeatForever());
|
||
water3.runAction(cc.sequence(cc.moveTo(0.6,cc.v2(water3.x,120)),cc.delayTime(timeDelay),
|
||
cc.callFunc(()=>{
|
||
water3.y = -120
|
||
})).repeatForever());
|
||
name = "b" + random;
|
||
//if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
|
||
}
|
||
// console.log(this.path_Type,data.order);
|
||
if(this.path_Type == cc.Enum(PathType).up){
|
||
}
|
||
else if(this.path_Type == cc.Enum(PathType).down){
|
||
target.angle = 180;
|
||
}
|
||
else if(this.path_Type == cc.Enum(PathType).left){
|
||
target.angle = 90;
|
||
name = "b" + random;
|
||
//if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
|
||
}
|
||
else if(this.path_Type == cc.Enum(PathType).right){
|
||
target.angle = 270;
|
||
name = "b" + random;
|
||
//if(this.block_Type != cc.Enum(BlockType).Reinforce) target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
|
||
}
|
||
else{
|
||
target = this.node.getChildByName("turn");
|
||
if(target.name == "turn"){
|
||
let water = target.getChildByName("wave").getChildByName("water");
|
||
water.opacity = 0
|
||
water.runAction(cc.sequence(cc.rotateTo(7.2,-1080),cc.delayTime(0)).repeatForever());
|
||
setTimeout(() => {
|
||
water.opacity = 255;
|
||
}, 200);
|
||
}
|
||
name = "c" + random;
|
||
//if(this.block_Type != cc.Enum(BlockType).Reinforce)target.getComponent(cc.Sprite).spriteFrame = this.UI["_spriteFrames"][name];
|
||
progress = 0.25;
|
||
if(this.path_Type == cc.Enum(PathType).up_left){
|
||
target.setPosition(-this.pos_Shifting,-this.pos_Shifting);
|
||
}
|
||
else if(this.path_Type == cc.Enum(PathType).up_right){
|
||
target.scaleX = -1;
|
||
target.setPosition(this.pos_Shifting,-this.pos_Shifting);
|
||
}
|
||
else if(this.path_Type == cc.Enum(PathType).down_left){
|
||
target.angle = 180;
|
||
target.scaleX = -1;
|
||
target.setPosition(-this.pos_Shifting,this.pos_Shifting);
|
||
}
|
||
else if(this.path_Type == cc.Enum(PathType).down_right){
|
||
target.angle = 180;
|
||
target.setPosition(this.pos_Shifting,this.pos_Shifting);
|
||
}
|
||
else if(this.path_Type == cc.Enum(PathType).left_up){
|
||
target.angle = -90;
|
||
target.scaleY = -1;
|
||
target.setPosition(this.pos_Shifting,this.pos_Shifting);
|
||
}
|
||
else if(this.path_Type == cc.Enum(PathType).left_down){
|
||
target.angle = 90;
|
||
target.setPosition(-this.pos_Shifting,-this.pos_Shifting);
|
||
}
|
||
else if(this.path_Type == cc.Enum(PathType).right_up){
|
||
target.angle = -90;
|
||
target.setPosition(-this.pos_Shifting,this.pos_Shifting);
|
||
|
||
}
|
||
else if(this.path_Type == cc.Enum(PathType).right_down){
|
||
target.angle = -90;
|
||
target.scaleX = -1;
|
||
target.setPosition(-this.pos_Shifting,-this.pos_Shifting);
|
||
}
|
||
}
|
||
|
||
if(this.path_Type == "End"){
|
||
target.active = false;
|
||
if(this.block_Type == cc.Enum(BlockType).End){
|
||
if(this.node.getChildByName("waterStart").active == true && this.block_Type == cc.Enum(BlockType).End){
|
||
cc.tween(this.node.getChildByName("waterStart"))
|
||
.to(0.2,{opacity:255})
|
||
.call(()=>{
|
||
// alert("治水成功");
|
||
cc.fx.Notifications.emit(cc.fx.Message.showResult,"win");
|
||
|
||
if(cc.fx.GameConfig.GM_INFO.level < 7){
|
||
cc.fx.GameConfig.GM_INFO.level += 1;
|
||
}
|
||
setTimeout(() => {
|
||
// cc.director.loadScene("GameScene");
|
||
}, 500);
|
||
|
||
})
|
||
.start();
|
||
}
|
||
}
|
||
else{
|
||
target = this.node.getChildByName("End");
|
||
target.active = true;
|
||
target.opacity = 0;
|
||
|
||
let posTemp = data.last;
|
||
if(this.pos.x - posTemp.x >= 1){
|
||
target.angle = -90;
|
||
|
||
}
|
||
else if(this.pos.x - posTemp.x <= -1){
|
||
target.angle = 90;
|
||
}
|
||
else if(this.pos.y - posTemp.y >= 1){
|
||
target.angle = 180;
|
||
}
|
||
|
||
cc.tween(target)
|
||
.to(0.5,{opacity:255})
|
||
.call(() =>{
|
||
// alert("治水失败")
|
||
cc.fx.Notifications.emit(cc.fx.Message.showResult,"lose");
|
||
// cc.director.loadScene("GameScene");
|
||
|
||
})
|
||
.start();
|
||
}
|
||
|
||
}
|
||
else{
|
||
target.active = true;
|
||
target.getComponent(cc.Sprite).fillRange = 0;
|
||
cc.tween(target.getComponent(cc.Sprite))
|
||
.to(time,{fillRange:progress})
|
||
.call(() =>{
|
||
if(data.circulate)
|
||
cc.fx.Notifications.emit(cc.fx.Message.nextWater,order);
|
||
})
|
||
.start();
|
||
}
|
||
|
||
}
|
||
|
||
// update (dt) {}
|
||
}
|