123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171 |
- const HomeApi = require("../net/HomeApi");
- const GameModule = require("../utils/GameModule");
- const { GameNotificationKey } = require("../utils/GameEnum")
- cc.Class({
- extends: cc.Component,
- properties: {
- scrollView: cc.ScrollView,
- levelHomeItem: cc.Prefab,
- levelHomeTop: cc.Prefab,
- levelHomeBottom: cc.Prefab,
- minContentPosition: -150,
- },
- /**
- * home 初始化方法, 所有的初始化操作在这里操作, 必须在加入父节点之前调用
- * */
- init(uid, cityId) {
- this.uid = uid;
- this.cityId = cityId;
- this.buildingInfos = [];
- this.node.parent = cc.find("Canvas/game");
- this.refreshTheme();
- this.getNetworkData();
- },
- refreshTheme() {
-
- if (this.buildings) {
- for (let i = 0; i < this.buildings.length; i++) {
- let itemScript = this.buildings[i];
- itemScript.init(this.cityId, i + 1);
- }
- }
- if (this.bottomScript) {
- this.bottomScript.init(this.cityId);
- }
- },
- // LIFE-CYCLE CALLBACKS:
- onLoad() {
- this.buildings = [];
- this.matchScreenSize();
- let topNode = cc.instantiate(this.levelHomeTop);
- this.scrollView.content.addChild(topNode);
- for (let i = 0; i < 5; i++) {
- let item = cc.instantiate(this.levelHomeItem);
- let itemScript = item.getComponent('LevelHomeItem');
- itemScript.init(this.cityId, i + 1);
- this.scrollView.content.addChild(item);
- this.buildings.push(itemScript);
- }
- let bottomNode = cc.instantiate(this.levelHomeBottom);
- this.bottomScript = bottomNode.getComponent('LevelHomeBottom'); this.bottomScript.init(this.cityId);
- this.scrollView.content.addChild(bottomNode);
- this.scrollView.node.on("scrolling", (event) => {
- if (this.scrollView._isOutOfBoundary()) {
- if (this.scrollView._outOfBoundaryAmount.y > 0) { // 超出上面的界限
- this.scrollView._outOfBoundaryAmount.y = 0;
- this.scrollView._adjustContentOutOfBoundary();
- } else { // 超出下面的界限
- if (this.scrollView._outOfBoundaryAmount.y < this.minContentPosition) {
- if (this.recordScrollViewPosition) {
- this.scrollView.content.setPosition(this.recordScrollViewPosition);
- return;
- } else {
- this.recordScrollViewPosition = this.scrollView.getContentPosition();
- }
- } else {
- this.recordScrollViewPosition = null;
- }
- }
- }
- }, this);
- },
- /**
- * 适配不同高度的屏幕尺寸
- */
- matchScreenSize() {
- let initHeight = 1624;
- let vsize = cc.view.getVisibleSize()
- let paddingY = (initHeight - vsize.height) / 2;
- if (paddingY < 0) {
- paddingY = 0;
- }
- this.scrollView.content.getComponent(cc.Layout).paddingTop = paddingY;
- // 底部加多一块100px的内边距, 让底楼不要完全显示出来
- this.scrollView.content.getComponent(cc.Layout).paddingBottom = paddingY - 100;
- },
- // 用来访问自己家园时, 重置scrollView位置
- start() {
- this.scrollView.scrollToBottom(0.0);
- },
- // 用来访问好友家园时, 重置scrollView位置
- onEnable() {
- },
- getNetworkData(callback) {
- // 获取目标用户的建筑
- HomeApi.getUserBuildings(this.uid, this.cityId, (responseData) => {
-
- let reverseArray = responseData.buildings.reverse();
-
- reverseArray.map((value, index, array) => {
- let model = Global.BuildingManager.getBuildingInfo(this.cityId, value.buildingId, value.level)
- if (model.isFull() && this.cityId === Global.cityId) {
- try {
- GameEvent.fire(GameNotificationKey.LevelHomeItemBuildingFull);
- } catch (error) {
- console.log(error);
- }
- }
- model.coinCount = value.coinCount;
- model.artists = value.artists || [];
-
- this.buildingInfos.push(model);
- });
- GameModule.userInfo.setUserInfo(responseData.user);
- GameModule.userInfo.setGrossIncomeAndStars(responseData.grossIncome, responseData.stars);
- callback && callback();
- // 开始设置建筑
- this.configBuildings();
- }, (error) => {
- console.log("error: " + error);
- });
- },
- configBuildings() {
-
- for (let i = 0; i < this.buildings.length; i++) {
- let itemScript = this.buildings[i];
- itemScript.config(this.buildingInfos[i], this.uid);
- }
- },
- });
|