var reGameStates = require('GameStates'); cc.Class({ extends: cc.Component, properties: { //MyMapNode //建筑物的节点 BuildingsParent: { default: null, type: cc.Node, }, //农舍 house_Env_1: { default: null, type: cc.Prefab, serializable: true, }, //单元楼 house_Env_2: { default: null, type: cc.Prefab, serializable: true, }, //别墅 house_Env_3: { default: null, type: cc.Prefab, serializable: true, }, //农田 Farmland_Labour_1: { default: null, type: cc.Prefab, serializable: true, }, //伐木场 TimberYard_Labour_2: { default: null, type: cc.Prefab, serializable: true, }, //矿坑 MiningPit_Labour_3: { default: null, type: cc.Prefab, serializable: true, }, //工厂 Factory_Labour_4: { default: null, type: cc.Prefab, serializable: true, }, //花坛 FlowerBed_Spe_401: { default: null, type: cc.Prefab, serializable: true, }, //喷泉 Fountain_Spe_402: { default: null, type: cc.Prefab, serializable: true, }, //游乐场 Playground_Spe_403: { default: null, type: cc.Prefab, serializable: true, }, //医院 Hospital_Spe_404: { default: null, type: cc.Prefab, serializable: true, }, //警局 Police_Spe_405: { default: null, type: cc.Prefab, serializable: true, }, //银行 Bank_Spe_406: { default: null, type: cc.Prefab, serializable: true, }, //甜品店 Shops_01_Cake: { default: null, type: cc.Prefab, serializable: true, }, //鲜花店 Shops_02_Flower: { default: null, type: cc.Prefab, serializable: true, }, //汉堡店 Shops_03_Hamburger: { default: null, type: cc.Prefab, serializable: true, }, //便利店 Shops_04_Store: { default: null, type: cc.Prefab, serializable: true, }, //洋装店 Shops_05_Clothes: { default: null, type: cc.Prefab, serializable: true, }, //咖啡店 Shops_06_Coffee: { default: null, type: cc.Prefab, serializable: true, }, //酒吧 Shops_07_Beer: { default: null, type: cc.Prefab, serializable: true, }, BuildingArray: { default: [], type: [cc.Node], serializable: true, }, }, onBuildHouse(index) { // cc.log(index); let mainCamera = GlobalD.game.MainCamera; let housing = null; //content button 设置的index //农舍 if ('1' == index) { housing = cc.instantiate(this.house_Env_1); } //单元楼 else if ('2' == index) { housing = cc.instantiate(this.house_Env_2); } //别墅 else if ('3' == index) { housing = cc.instantiate(this.house_Env_3); } //农田 else if ('201' == index) { housing = cc.instantiate(this.Farmland_Labour_1); } //伐木场 else if ('202' == index) { housing = cc.instantiate(this.TimberYard_Labour_2); } //矿坑 else if ('203' == index) { housing = cc.instantiate(this.MiningPit_Labour_3); } //工厂 else if ('204' == index) { housing = cc.instantiate(this.Factory_Labour_4); } //甜品店 else if ('301' == index) { housing = cc.instantiate(this.Shops_01_Cake); } //鲜花店 else if ('302' == index) { housing = cc.instantiate(this.Shops_02_Flower); } //汉堡店 else if ('303' == index) { housing = cc.instantiate(this.Shops_03_Hamburger); } //便利店 else if ('304' == index) { housing = cc.instantiate(this.Shops_04_Store); } //洋装店 else if ('305' == index) { housing = cc.instantiate(this.Shops_05_Clothes); } //咖啡店 else if ('306' == index) { housing = cc.instantiate(this.Shops_06_Coffee); } //酒吧 else if ('307' == index) { housing = cc.instantiate(this.Shops_07_Beer); } //花坛 else if ('401' == index) { housing = cc.instantiate(this.FlowerBed_Spe_401); } //喷泉 else if ('402' == index) { housing = cc.instantiate(this.Fountain_Spe_402); } //游乐场 else if ('403' == index) { housing = cc.instantiate(this.Playground_Spe_403); } //医院 else if ('404' == index) { housing = cc.instantiate(this.Hospital_Spe_404); } //警察局 else if ('405' == index) { housing = cc.instantiate(this.Police_Spe_405); } //银行 else if ('406' == index) { housing = cc.instantiate(this.Bank_Spe_406); } housing.parent = this.BuildingsParent; let tempPos = housing.parent.convertToNodeSpace(mainCamera.node); let CanvasPos = GlobalD.game.Canvas.position; housing.setPosition(tempPos.x + CanvasPos.x, tempPos.y + CanvasPos.y); let buildingsInfo = housing.getComponent("buildingsInfo"); //id用时间戳来记录 buildingsInfo.buildInfo.id = new Date().getTime();//+= Math.random() * 1000000; this.SpawnBuildingDefaultValue(buildingsInfo); let buildingsTouch = housing.getComponent("buildingsTouch"); // buildingsTouch.buildInfo = buildingsInfo.buildInfo; buildingsTouch.onEditorStatus(true); // housing.active = true; //收起菜单 GlobalD.game._ManageUIScript.onHideMenu(); //收起底部菜单栏 GlobalD.game._ManageUIScript.onBottomMenuView(false); }, start() { }, //如果存储到有房子数据的话,把地图上的房屋都隐藏起来,或者删除 //todo... onHideInitPosBuildings() { //删除对应层的子节点 let tempNode = this.BuildingsParent.children; let length = tempNode.length; for (let i = length - 1; i >= 0; i--) { tempNode[i].active = false; } }, //初始化建筑 InitBuildings() { //先初始化网络数据 this.SpawnHouse(); // cc.log('初始化场景建筑'); let BuildingStateArray = GlobalD.GameData.GetBuildingStateArray(); for (let i = 0; i < BuildingStateArray.length; i++) { if (BuildingStateArray[i] == 0) { this.BuildingArray[i].active = false; } else { this.BuildingArray[i].active = true; } } let BuildingNumArray = GlobalD.GameData.GetBuildingNumArray(); // cc.log('BuildingNumArray',BuildingNumArray) for (let i = 3; i < this.BuildingArray.length; i++) { // cc.log('this.BuildingArray[i]='+this.BuildingArray[i].getChildByName('Name').getComponent(cc.Label).string); this.BuildingArray[i].getChildByName('Name').getChildByName('Num').getComponent(cc.Label).string = BuildingNumArray[i]; } //初始化两个默认的建筑 // }, //生成房子的默认值 SpawnBuildingDefaultValue(buildingsInfo) { buildingsInfo.InitPos = false; buildingsInfo.InitWorkBuildingInfo = false; //激活状态,可运营 buildingsInfo.buildInfo.isItActive = true; //设置销售状态 buildingsInfo.buildInfo.isItSaleable = true; if (reGameStates.BuildType.Farmland == buildingsInfo.buildInfo.buildType) { buildingsInfo.buildInfo.isItSaleable = GlobalD.GameData.GetFoodTradeState() > 0 ? true : false;// GlobalD.GameData.GetFoodTradeState(); // cc.log('初始化房子的信息:', buildingsInfo.buildInfo.buildingName, buildingsInfo.buildInfo.isItSaleable); } if (reGameStates.BuildType.MiningPit == buildingsInfo.buildInfo.buildType) { buildingsInfo.buildInfo.isItSaleable = GlobalD.GameData.GetMineralTradeState() > 0 ? true : false;// GlobalD.GameData.GetMineralTradeState(); } if (reGameStates.BuildType.TimberYard == buildingsInfo.buildInfo.buildType) { buildingsInfo.buildInfo.isItSaleable = GlobalD.GameData.GetWoodTradeState() > 0 ? true : false;// GlobalD.GameData.GetWoodTradeState(); } //先设置一下,可查看信息 if (reGameStates.BuildType.Housing !== buildingsInfo.buildInfo.buildType && reGameStates.BuildType.Special !== buildingsInfo.buildInfo.buildType) { buildingsInfo.node.getComponent('buildingsTouch').isShowBuildingInfo = true; } //设置消耗的体力值为工人的最低值 20 //过高的话,会导致工人不工作 // buildingsInfo.buildInfo.totalConsumption = 20; // cc.log('初始化房子的信息:', buildingsInfo.buildInfo.buildingName, buildingsInfo.buildInfo.isItSaleable) }, //初始化场景的两个建筑 SpawnDefaultHouse() { cc.log('初始化默认房子'); //房子 let housingTemp_house = this.onGetHousingPrefabFromName('House_Env_01'); housingTemp_house.parent = this.BuildingsParent; var endPos = GlobalD.TiledMap._getTheMiddleLocationFromtilePos(cc.v2(24, 24)); housingTemp_house.setPosition(endPos.x, endPos.y); let buildingsInfo_house = housingTemp_house.getComponent("buildingsInfo"); //id用时间戳来记录 buildingsInfo_house.buildInfo.id = 101001;//对应的id //设置tile的最底下的坐标,就是起始坐标 buildingsInfo_house.buildInfo.startTilePos = cc.v2(24, 24); this.SpawnBuildingDefaultValue(buildingsInfo_house); //起始坐标,占位范围,是否占位 GlobalD.game.addBuildTiled(buildingsInfo_house.buildInfo.id, buildingsInfo_house.buildInfo.startTilePos, buildingsInfo_house.buildInfo.occupyArea); //添加占位信息 GlobalD.game.addBuilding(buildingsInfo_house); //农田 let housingTemp_farmland = this.onGetHousingPrefabFromName('Farmland_Labour_01'); housingTemp_farmland.parent = this.BuildingsParent; var endPos = GlobalD.TiledMap._getTheMiddleLocationFromtilePos(cc.v2(26, 24)); housingTemp_farmland.setPosition(endPos.x, endPos.y); let buildingsInfo_farmland = housingTemp_farmland.getComponent("buildingsInfo"); //id用时间戳来记录 buildingsInfo_farmland.buildInfo.id = 610003;//对应的id //设置tile的最底下的坐标,就是起始坐标 buildingsInfo_farmland.buildInfo.startTilePos = cc.v2(26, 24); this.SpawnBuildingDefaultValue(buildingsInfo_farmland); //起始坐标,占位范围,是否占位 GlobalD.game.addBuildTiled(buildingsInfo_farmland.buildInfo.id, buildingsInfo_farmland.buildInfo.startTilePos, buildingsInfo_farmland.buildInfo.occupyArea); //添加占位信息 GlobalD.game.addBuilding(buildingsInfo_farmland); }, //初始化场景建筑 SpawnHouse: function () { let BuildingJSON = GlobalD.GameData.GameData_buildings; // cc.log('BuildingJSON', BuildingJSON); if (BuildingJSON.length == 0) { //初始化默认房子 this.SpawnDefaultHouse(); return }; //如果有存储的数据,隐藏场景房屋节点 this.onHideInitPosBuildings(); for (let i = 0; i < BuildingJSON.length; i++) { // cc.log(i); // if (BuildingJSON[i].isDefault) continue; let HouseName = BuildingJSON[i].buildingNodeName; let housingTemp = this.onGetHousingPrefabFromName(HouseName); // cc.log('housingTemp', HouseName, housingTemp); //预制为空 if (!housingTemp) return; housingTemp.parent = this.BuildingsParent; // var str= JSON.stringify(BuildingJSON); var endPos = GlobalD.TiledMap._getTheMiddleLocationFromtilePos(BuildingJSON[i].startTilePos); // let HousePosition = BuildingJSON[i].Position; // cc.log('x=' + HousePosition.x + 'y=' + HousePosition.y); housingTemp.setPosition(endPos.x, endPos.y); let buildingsInfo = housingTemp.getComponent("buildingsInfo"); //id用时间戳来记录 buildingsInfo.buildInfo.id = BuildingJSON[i].buildingId;//对应的id //设置tile的最底下的坐标,就是起始坐标 buildingsInfo.buildInfo.startTilePos = BuildingJSON[i].startTilePos; //初始化位置的坐标 buildingsInfo.InitStartPos = BuildingJSON[i].startTilePos; this.SpawnBuildingDefaultValue(buildingsInfo); //目前应该只有商店,后面根据RunningCost来判断 todo..... // if (reGameStates.BuildType.Shop == buildingsInfo.buildInfo.buildType) { // buildingsInfo.buildInfo.isItSaleable = Number(BuildingJSON[i].isItSaleable) > 0 ? true : false; buildingsInfo.buildInfo.isItStopOperation = Number(BuildingJSON[i].isItStopOperation) > 0 ? true : false; //如果不可以运营的,加上牌子 if (buildingsInfo.buildInfo.isItStopOperation) { GlobalD.game.onAddBuildingTipView(buildingsInfo); } } //建筑物的加成值 buildingsInfo.buildInfo.consumeStrengthAddValue = Number(BuildingJSON[i].consumeStrengthAddValue); buildingsInfo.buildInfo.goodsPriceAddValue = Number(BuildingJSON[i].goodsPriceAddValue); // cc.log('buildingsInfo', buildingsInfo); //起始坐标,占位范围,是否占位 GlobalD.game.addBuildTiled(buildingsInfo.buildInfo.id, buildingsInfo.buildInfo.startTilePos, buildingsInfo.buildInfo.occupyArea); //添加占位信息 GlobalD.game.addBuilding(buildingsInfo); } }, onGetHousingPrefabFromName(HouseName) { let housing = null; //住宿地方 if (HouseName == 'House_Env_01') { housing = cc.instantiate(this.house_Env_1); } else if (HouseName === 'House_Env_02') { housing = cc.instantiate(this.house_Env_2); } else if (HouseName == 'House_Env_03') { housing = cc.instantiate(this.house_Env_3); } //劳动地方 else if (HouseName == 'Farmland_Labour_01') { housing = cc.instantiate(this.Farmland_Labour_1); } else if (HouseName == 'TimberYard_Labour_2') { housing = cc.instantiate(this.TimberYard_Labour_2); } else if (HouseName == 'MiningPit_Labour_3') { housing = cc.instantiate(this.MiningPit_Labour_3); } else if (HouseName == 'Factory_Labour_02') { housing = cc.instantiate(this.Factory_Labour_4); } //特殊建筑 else if (HouseName == 'FlowerBed_Spe_401') { housing = cc.instantiate(this.FlowerBed_Spe_401); } else if (HouseName == 'Fountain_Spe_402') { housing = cc.instantiate(this.Fountain_Spe_402); } else if (HouseName == 'Playground_Spe_403') { housing = cc.instantiate(this.Playground_Spe_403); } else if (HouseName == 'Hospital_Spe_404') { housing = cc.instantiate(this.Hospital_Spe_404); } else if (HouseName == 'Police_Spe_405') { housing = cc.instantiate(this.Police_Spe_405); } else if (HouseName == 'Bank_Spe_406') { housing = cc.instantiate(this.Bank_Spe_406); } //商店类型 else if (HouseName == 'Shops_01_Cake') { housing = cc.instantiate(this.Shops_01_Cake); } else if (HouseName == 'Shops_02_Flower') { housing = cc.instantiate(this.Shops_02_Flower); } else if (HouseName == 'Shops_03_Hamburger') { housing = cc.instantiate(this.Shops_03_Hamburger); } else if (HouseName == 'Shops_04_Store') { housing = cc.instantiate(this.Shops_04_Store); } else if (HouseName == 'Shops_05_Clothes') { housing = cc.instantiate(this.Shops_05_Clothes); } else if (HouseName == 'Shops_06_Coffee') { housing = cc.instantiate(this.Shops_06_Coffee); } else if (HouseName == 'Shops_07_Beer') { housing = cc.instantiate(this.Shops_07_Beer); } return housing; }, //获取预制的名字 onGetPrefabsBuildingName(index) { //content button 设置的index let buildingName = ''; //农舍 if ('1' == index) { buildingName = 'House_Env_01'; } //单元楼 else if ('2' == index) { buildingName = 'House_Env_02'; } //别墅 else if ('3' == index) { buildingName = 'House_Env_03'; } //农田 else if ('201' == index) { buildingName = 'Farmland_Labour_01'; } //伐木场 else if ('202' == index) { buildingName = 'TimberYard_Labour_2'; } //矿坑 else if ('203' == index) { buildingName = 'MiningPit_Labour_3'; } //工厂 else if ('204' == index) { buildingName = 'Factory_Labour_02'; } //甜品店 else if ('301' == index) { buildingName = 'Shops_01_Cake'; } //鲜花店 else if ('302' == index) { buildingName = 'Shops_02_Flower'; } //汉堡店 else if ('303' == index) { buildingName = 'Shops_03_Hamburger'; } //便利店 else if ('304' == index) { buildingName = 'Shops_04_Store'; } //洋装店 else if ('305' == index) { buildingName = 'Shops_05_Clothes'; } //咖啡店 else if ('306' == index) { buildingName = 'Shops_06_Coffee'; } //酒吧 else if ('307' == index) { buildingName = 'Shops_07_Beer'; } //花坛 else if ('401' == index) { buildingName = 'FlowerBed_Spe_401'; } //喷泉 else if ('402' == index) { buildingName = 'Fountain_Spe_402'; } //游乐场 else if ('403' == index) { buildingName = 'Playground_Spe_403'; } //医院 else if ('404' == index) { buildingName = 'Hospital_Spe_404'; } //警察局 else if ('405' == index) { buildingName = 'Police_Spe_405'; } //银行 else if ('406' == index) { buildingName = 'Bank_Spe_406'; } return buildingName; }, });