You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
189 lines
6.5 KiB
189 lines
6.5 KiB
1 week ago
|
import GameMgr from "../../FrameWork/Mgr/GameMgr";
|
||
|
import User from "../../FrameWork/User/User";
|
||
|
import Common5 from "../../Platform/th/Common5";
|
||
|
import PrefabManage from "../PrefabManager/PrefabManage";
|
||
|
import { GameStoryConfigData } from "./GameStoryConfig";
|
||
|
import SingleItem from "./SingleItem";
|
||
|
|
||
|
|
||
|
const { ccclass, property } = cc._decorator;
|
||
|
|
||
|
@ccclass
|
||
|
export default class LevelView extends cc.Component {
|
||
|
|
||
|
@property(cc.Node)
|
||
|
contentNode: cc.Node = null;
|
||
|
|
||
|
@property(cc.Prefab)
|
||
|
singleItemPrefab: cc.Prefab = null;
|
||
|
|
||
|
|
||
|
@property(cc.Node)
|
||
|
endLevelIcon: cc.Node = null;
|
||
|
@property(cc.Node)
|
||
|
endLevelTitle: cc.Node = null;
|
||
|
@property(cc.Node)
|
||
|
endLevelPoint: cc.Node = null;
|
||
|
@property(sp.Skeleton)
|
||
|
tittleSpine: sp.Skeleton = null;
|
||
|
|
||
|
SinglePageMaxNum: number = 30;
|
||
|
curPageIndex: number = 0;
|
||
|
|
||
|
endLevelConfig = null
|
||
|
endLevelState = 0; //0 未开发 1 未解锁 2 已通关 3 已解锁
|
||
|
// onLoad () {}
|
||
|
|
||
|
start() {
|
||
|
if (!Common5.gameConfig) {
|
||
|
Common5.gameConfig = GameStoryConfigData;
|
||
|
}
|
||
|
this.initView();
|
||
|
}
|
||
|
|
||
|
// 初始化实例
|
||
|
initView() {
|
||
|
let curGameLevelIndex = User.getCurGameLevelIndex();
|
||
|
|
||
|
let endIndex = (this.curPageIndex + 1) * this.SinglePageMaxNum - 1;
|
||
|
let levelList: number[] = [];
|
||
|
let startIndex = this.curPageIndex * this.SinglePageMaxNum;
|
||
|
for (let i = 0; i < this.SinglePageMaxNum - 1; i++) {
|
||
|
levelList.push(startIndex + i);
|
||
|
}
|
||
|
|
||
|
if (User.getFirstStepIndex() == 0) {
|
||
|
this.loadLevelItem(endIndex - 1, levelList);
|
||
|
} else if (curGameLevelIndex < endIndex) {
|
||
|
this.loadLevelItem(curGameLevelIndex, levelList);
|
||
|
} else {
|
||
|
this.loadLevelItem(endIndex - 1, levelList);
|
||
|
}
|
||
|
|
||
|
this.initEndLevel(curGameLevelIndex, endIndex);
|
||
|
this.locateNewLevel(curGameLevelIndex);
|
||
|
}
|
||
|
|
||
|
// 加载关卡图标
|
||
|
loadLevelItem(curLevelIndex: number, levelList: number[], addIndex: number = 0) {
|
||
|
let index = levelList.indexOf(curLevelIndex);
|
||
|
let curConfig = Common5.gameConfig[curLevelIndex];
|
||
|
let parentNode = this.contentNode.getChildByName('node_' + (index + 1));
|
||
|
console.log("node_"+(index + 1))
|
||
|
if (parentNode) {
|
||
|
parentNode.removeAllChildren();
|
||
|
let item = cc.instantiate(this.singleItemPrefab);
|
||
|
item.active = true
|
||
|
item.parent = parentNode
|
||
|
item.getComponent(SingleItem).initView(curConfig);
|
||
|
}
|
||
|
|
||
|
do {
|
||
|
addIndex *= -1;
|
||
|
if (addIndex > 60) {
|
||
|
addIndex = 999;
|
||
|
break;
|
||
|
} else if (addIndex < 0) {
|
||
|
addIndex--;
|
||
|
} else {
|
||
|
addIndex++;
|
||
|
}
|
||
|
curLevelIndex += addIndex;
|
||
|
} while (levelList.indexOf(curLevelIndex) == -1);
|
||
|
|
||
|
if (addIndex != 999) {
|
||
|
this.scheduleOnce(() => {
|
||
|
this.loadLevelItem(curLevelIndex, levelList, addIndex);
|
||
|
}, 0);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
//初始化结束关卡
|
||
|
initEndLevel(curGameLevelIndex: number, endIndex: number) {
|
||
|
this.endLevelConfig = Common5.gameConfig[endIndex];
|
||
|
|
||
|
//Common5.getSpriteFrameFromBundle("FirstSelectScene", "picture/zoomLevel/" + this.endLevelConfig.titleIconUrl, this.endLevelTitle.getComponent(cc.Sprite));
|
||
|
|
||
|
for (const mask of this.endLevelPoint.children) {
|
||
|
mask.active = false;
|
||
|
}
|
||
|
|
||
|
if (!this.endLevelConfig.isCanPlay) {
|
||
|
this.endLevelPoint.children[2].active = true;
|
||
|
this.endLevelState = 0;
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (endIndex > curGameLevelIndex) {
|
||
|
this.endLevelPoint.children[2].active = true;
|
||
|
this.endLevelState = 1;
|
||
|
} else if (endIndex < curGameLevelIndex) {
|
||
|
this.endLevelPoint.children[0].active = true;
|
||
|
this.endLevelState = 2;
|
||
|
} else {
|
||
|
this.endLevelPoint.children[1].active = true;
|
||
|
this.endLevelState = 3;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// 定位最新关卡
|
||
|
locateNewLevel(curLevelIndex: number) {
|
||
|
let view = this.contentNode.parent;
|
||
|
if (User.getFirstStepIndex() == 0) {
|
||
|
let sy = view.height / 2;
|
||
|
let dy = this.contentNode.y - this.contentNode.getChildByName('node_1').y - view.height + 50;
|
||
|
this.node.getChildByName("横断虚线").active = false;
|
||
|
cc.tween(this.contentNode)
|
||
|
.set({ y: sy })
|
||
|
.delay(1.7)
|
||
|
.call(() => {
|
||
|
this.node.getChildByName("横断虚线").active = true;
|
||
|
this.node.getChildByName('ScrollView').getComponent(cc.ScrollView).enabled = true;
|
||
|
this.tittleSpine.node.active = true;
|
||
|
//this.endLevelTitle.active = false;
|
||
|
this.tittleSpine.setAnimation(0, "文字", false);
|
||
|
})
|
||
|
.to(1.5, { y: dy })
|
||
|
.call(() => {
|
||
|
this.node.getChildByName('ScrollView').getComponent(cc.ScrollView).enabled = true;
|
||
|
this.tittleSpine.node.active = false;
|
||
|
//this.endLevelTitle.active = true;
|
||
|
})
|
||
|
.start();
|
||
|
} else {
|
||
|
let lastIndex = curLevelIndex % this.SinglePageMaxNum + 1;
|
||
|
lastIndex = lastIndex > this.SinglePageMaxNum - 2 ? this.SinglePageMaxNum - 2 : lastIndex;
|
||
|
let parentNode = this.contentNode.getChildByName('node_' + lastIndex);
|
||
|
let dy = this.contentNode.y - parentNode.y - view.height + 200;
|
||
|
dy = dy < view.height / 2 ? view.height / 2 : dy;
|
||
|
this.contentNode.y = dy;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
scrollViewEvent(event: cc.ScrollView) {
|
||
|
let view = event.content.parent;
|
||
|
if (event.content.y <= view.height / 2 + 5) {
|
||
|
this.node.getChildByName("横断虚线").active = false;
|
||
|
} else {
|
||
|
this.node.getChildByName("横断虚线").active = true;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
onEndLevelClick() {
|
||
|
// Common5.playEffect("sound/按键点击");
|
||
|
if (this.endLevelState == 0) {
|
||
|
PrefabManage.showTextTips('正在努力开发中!');
|
||
|
return;
|
||
|
} else if (this.endLevelState == 1) {
|
||
|
PrefabManage.showTextTips('未来还没来,一切皆可能');
|
||
|
return;
|
||
|
} else if (this.endLevelState == 2) {
|
||
|
PrefabManage.showTextTips('过去已过去,计较也无用');
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
Common5.selectGameInfo = this.endLevelConfig;
|
||
|
GameMgr.getInstance_custom().onLoadToGameScene_custom();
|
||
|
}
|
||
|
}
|