ManageBuildings.js 20 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593
  1. var reGameStates = require('GameStates');
  2. cc.Class({
  3. extends: cc.Component,
  4. properties: {
  5. //MyMapNode
  6. //建筑物的节点
  7. BuildingsParent: {
  8. default: null,
  9. type: cc.Node,
  10. },
  11. //农舍
  12. house_Env_1: {
  13. default: null,
  14. type: cc.Prefab,
  15. serializable: true,
  16. },
  17. //单元楼
  18. house_Env_2: {
  19. default: null,
  20. type: cc.Prefab,
  21. serializable: true,
  22. },
  23. //别墅
  24. house_Env_3: {
  25. default: null,
  26. type: cc.Prefab,
  27. serializable: true,
  28. },
  29. //农田
  30. Farmland_Labour_1: {
  31. default: null,
  32. type: cc.Prefab,
  33. serializable: true,
  34. },
  35. //伐木场
  36. TimberYard_Labour_2: {
  37. default: null,
  38. type: cc.Prefab,
  39. serializable: true,
  40. },
  41. //矿坑
  42. MiningPit_Labour_3: {
  43. default: null,
  44. type: cc.Prefab,
  45. serializable: true,
  46. },
  47. //工厂
  48. Factory_Labour_4: {
  49. default: null,
  50. type: cc.Prefab,
  51. serializable: true,
  52. },
  53. //花坛
  54. FlowerBed_Spe_401: {
  55. default: null,
  56. type: cc.Prefab,
  57. serializable: true,
  58. },
  59. //喷泉
  60. Fountain_Spe_402: {
  61. default: null,
  62. type: cc.Prefab,
  63. serializable: true,
  64. },
  65. //游乐场
  66. Playground_Spe_403: {
  67. default: null,
  68. type: cc.Prefab,
  69. serializable: true,
  70. },
  71. //医院
  72. Hospital_Spe_404: {
  73. default: null,
  74. type: cc.Prefab,
  75. serializable: true,
  76. },
  77. //警局
  78. Police_Spe_405: {
  79. default: null,
  80. type: cc.Prefab,
  81. serializable: true,
  82. },
  83. //银行
  84. Bank_Spe_406: {
  85. default: null,
  86. type: cc.Prefab,
  87. serializable: true,
  88. },
  89. //甜品店
  90. Shops_01_Cake: {
  91. default: null,
  92. type: cc.Prefab,
  93. serializable: true,
  94. },
  95. //鲜花店
  96. Shops_02_Flower: {
  97. default: null,
  98. type: cc.Prefab,
  99. serializable: true,
  100. },
  101. //汉堡店
  102. Shops_03_Hamburger: {
  103. default: null,
  104. type: cc.Prefab,
  105. serializable: true,
  106. },
  107. //便利店
  108. Shops_04_Store: {
  109. default: null,
  110. type: cc.Prefab,
  111. serializable: true,
  112. },
  113. //洋装店
  114. Shops_05_Clothes: {
  115. default: null,
  116. type: cc.Prefab,
  117. serializable: true,
  118. },
  119. //咖啡店
  120. Shops_06_Coffee: {
  121. default: null,
  122. type: cc.Prefab,
  123. serializable: true,
  124. },
  125. //酒吧
  126. Shops_07_Beer: {
  127. default: null,
  128. type: cc.Prefab,
  129. serializable: true,
  130. },
  131. BuildingArray: {
  132. default: [],
  133. type: [cc.Node],
  134. serializable: true,
  135. },
  136. },
  137. onBuildHouse(index) {
  138. // cc.log(index);
  139. let mainCamera = GlobalD.game.MainCamera;
  140. let housing = null;
  141. //content button 设置的index
  142. //农舍
  143. if ('1' == index) {
  144. housing = cc.instantiate(this.house_Env_1);
  145. }
  146. //单元楼
  147. else if ('2' == index) {
  148. housing = cc.instantiate(this.house_Env_2);
  149. }
  150. //别墅
  151. else if ('3' == index) {
  152. housing = cc.instantiate(this.house_Env_3);
  153. }
  154. //农田
  155. else if ('201' == index) {
  156. housing = cc.instantiate(this.Farmland_Labour_1);
  157. }
  158. //伐木场
  159. else if ('202' == index) {
  160. housing = cc.instantiate(this.TimberYard_Labour_2);
  161. }
  162. //矿坑
  163. else if ('203' == index) {
  164. housing = cc.instantiate(this.MiningPit_Labour_3);
  165. }
  166. //工厂
  167. else if ('204' == index) {
  168. housing = cc.instantiate(this.Factory_Labour_4);
  169. }
  170. //甜品店
  171. else if ('301' == index) {
  172. housing = cc.instantiate(this.Shops_01_Cake);
  173. }
  174. //鲜花店
  175. else if ('302' == index) {
  176. housing = cc.instantiate(this.Shops_02_Flower);
  177. }
  178. //汉堡店
  179. else if ('303' == index) {
  180. housing = cc.instantiate(this.Shops_03_Hamburger);
  181. }
  182. //便利店
  183. else if ('304' == index) {
  184. housing = cc.instantiate(this.Shops_04_Store);
  185. }
  186. //洋装店
  187. else if ('305' == index) {
  188. housing = cc.instantiate(this.Shops_05_Clothes);
  189. }
  190. //咖啡店
  191. else if ('306' == index) {
  192. housing = cc.instantiate(this.Shops_06_Coffee);
  193. }
  194. //酒吧
  195. else if ('307' == index) {
  196. housing = cc.instantiate(this.Shops_07_Beer);
  197. }
  198. //花坛
  199. else if ('401' == index) {
  200. housing = cc.instantiate(this.FlowerBed_Spe_401);
  201. }
  202. //喷泉
  203. else if ('402' == index) {
  204. housing = cc.instantiate(this.Fountain_Spe_402);
  205. }
  206. //游乐场
  207. else if ('403' == index) {
  208. housing = cc.instantiate(this.Playground_Spe_403);
  209. }
  210. //医院
  211. else if ('404' == index) {
  212. housing = cc.instantiate(this.Hospital_Spe_404);
  213. }
  214. //警察局
  215. else if ('405' == index) {
  216. housing = cc.instantiate(this.Police_Spe_405);
  217. }
  218. //银行
  219. else if ('406' == index) {
  220. housing = cc.instantiate(this.Bank_Spe_406);
  221. }
  222. housing.parent = this.BuildingsParent;
  223. let tempPos = housing.parent.convertToNodeSpace(mainCamera.node);
  224. let CanvasPos = GlobalD.game.Canvas.position;
  225. housing.setPosition(tempPos.x + CanvasPos.x, tempPos.y + CanvasPos.y);
  226. let buildingsInfo = housing.getComponent("buildingsInfo");
  227. //id用时间戳来记录
  228. buildingsInfo.buildInfo.id = new Date().getTime();//+= Math.random() * 1000000;
  229. this.SpawnBuildingDefaultValue(buildingsInfo);
  230. let buildingsTouch = housing.getComponent("buildingsTouch");
  231. // buildingsTouch.buildInfo = buildingsInfo.buildInfo;
  232. buildingsTouch.onEditorStatus(true);
  233. // housing.active = true;
  234. //收起菜单
  235. GlobalD.game._ManageUIScript.onHideMenu();
  236. //收起底部菜单栏
  237. GlobalD.game._ManageUIScript.onBottomMenuView(false);
  238. },
  239. start() {
  240. },
  241. //如果存储到有房子数据的话,把地图上的房屋都隐藏起来,或者删除
  242. //todo...
  243. onHideInitPosBuildings() {
  244. //删除对应层的子节点
  245. let tempNode = this.BuildingsParent.children;
  246. let length = tempNode.length;
  247. for (let i = length - 1; i >= 0; i--) {
  248. tempNode[i].active = false;
  249. }
  250. },
  251. //初始化建筑
  252. InitBuildings() {
  253. //先初始化网络数据
  254. this.SpawnHouse();
  255. // cc.log('初始化场景建筑');
  256. let BuildingStateArray = GlobalD.GameData.GetBuildingStateArray();
  257. for (let i = 0; i < BuildingStateArray.length; i++) {
  258. if (BuildingStateArray[i] == 0) {
  259. this.BuildingArray[i].active = false;
  260. }
  261. else {
  262. this.BuildingArray[i].active = true;
  263. }
  264. }
  265. let BuildingNumArray = GlobalD.GameData.GetBuildingNumArray();
  266. // cc.log('BuildingNumArray',BuildingNumArray)
  267. for (let i = 3; i < this.BuildingArray.length; i++) {
  268. // cc.log('this.BuildingArray[i]='+this.BuildingArray[i].getChildByName('Name').getComponent(cc.Label).string);
  269. this.BuildingArray[i].getChildByName('Name').getChildByName('Num').getComponent(cc.Label).string = BuildingNumArray[i];
  270. }
  271. //初始化两个默认的建筑
  272. //
  273. },
  274. //生成房子的默认值
  275. SpawnBuildingDefaultValue(buildingsInfo) {
  276. buildingsInfo.InitPos = false;
  277. buildingsInfo.InitWorkBuildingInfo = false;
  278. //激活状态,可运营
  279. buildingsInfo.buildInfo.isItActive = true;
  280. //设置销售状态
  281. buildingsInfo.buildInfo.isItSaleable = true;
  282. if (reGameStates.BuildType.Farmland == buildingsInfo.buildInfo.buildType) {
  283. buildingsInfo.buildInfo.isItSaleable = GlobalD.GameData.GetFoodTradeState() > 0 ? true : false;// GlobalD.GameData.GetFoodTradeState();
  284. // cc.log('初始化房子的信息:', buildingsInfo.buildInfo.buildingName, buildingsInfo.buildInfo.isItSaleable);
  285. }
  286. if (reGameStates.BuildType.MiningPit == buildingsInfo.buildInfo.buildType) {
  287. buildingsInfo.buildInfo.isItSaleable = GlobalD.GameData.GetMineralTradeState() > 0 ? true : false;// GlobalD.GameData.GetMineralTradeState();
  288. }
  289. if (reGameStates.BuildType.TimberYard == buildingsInfo.buildInfo.buildType) {
  290. buildingsInfo.buildInfo.isItSaleable = GlobalD.GameData.GetWoodTradeState() > 0 ? true : false;// GlobalD.GameData.GetWoodTradeState();
  291. }
  292. //先设置一下,可查看信息
  293. if (reGameStates.BuildType.Housing !== buildingsInfo.buildInfo.buildType
  294. && reGameStates.BuildType.Special !== buildingsInfo.buildInfo.buildType) {
  295. buildingsInfo.node.getComponent('buildingsTouch').isShowBuildingInfo = true;
  296. }
  297. //设置消耗的体力值为工人的最低值 20
  298. //过高的话,会导致工人不工作
  299. // buildingsInfo.buildInfo.totalConsumption = 20;
  300. // cc.log('初始化房子的信息:', buildingsInfo.buildInfo.buildingName, buildingsInfo.buildInfo.isItSaleable)
  301. },
  302. //初始化场景的两个建筑
  303. SpawnDefaultHouse() {
  304. cc.log('初始化默认房子');
  305. //房子
  306. let housingTemp_house = this.onGetHousingPrefabFromName('House_Env_01');
  307. housingTemp_house.parent = this.BuildingsParent;
  308. var endPos = GlobalD.TiledMap._getTheMiddleLocationFromtilePos(cc.v2(24, 24));
  309. housingTemp_house.setPosition(endPos.x, endPos.y);
  310. let buildingsInfo_house = housingTemp_house.getComponent("buildingsInfo");
  311. //id用时间戳来记录
  312. buildingsInfo_house.buildInfo.id = 101001;//对应的id
  313. //设置tile的最底下的坐标,就是起始坐标
  314. buildingsInfo_house.buildInfo.startTilePos = cc.v2(24, 24);
  315. this.SpawnBuildingDefaultValue(buildingsInfo_house);
  316. //起始坐标,占位范围,是否占位
  317. GlobalD.game.addBuildTiled(buildingsInfo_house.buildInfo.id, buildingsInfo_house.buildInfo.startTilePos, buildingsInfo_house.buildInfo.occupyArea);
  318. //添加占位信息
  319. GlobalD.game.addBuilding(buildingsInfo_house);
  320. //农田
  321. let housingTemp_farmland = this.onGetHousingPrefabFromName('Farmland_Labour_01');
  322. housingTemp_farmland.parent = this.BuildingsParent;
  323. var endPos = GlobalD.TiledMap._getTheMiddleLocationFromtilePos(cc.v2(26, 24));
  324. housingTemp_farmland.setPosition(endPos.x, endPos.y);
  325. let buildingsInfo_farmland = housingTemp_farmland.getComponent("buildingsInfo");
  326. //id用时间戳来记录
  327. buildingsInfo_farmland.buildInfo.id = 610003;//对应的id
  328. //设置tile的最底下的坐标,就是起始坐标
  329. buildingsInfo_farmland.buildInfo.startTilePos = cc.v2(26, 24);
  330. this.SpawnBuildingDefaultValue(buildingsInfo_farmland);
  331. //起始坐标,占位范围,是否占位
  332. GlobalD.game.addBuildTiled(buildingsInfo_farmland.buildInfo.id, buildingsInfo_farmland.buildInfo.startTilePos, buildingsInfo_farmland.buildInfo.occupyArea);
  333. //添加占位信息
  334. GlobalD.game.addBuilding(buildingsInfo_farmland);
  335. },
  336. //初始化场景建筑
  337. SpawnHouse: function () {
  338. let BuildingJSON = GlobalD.GameData.GameData_buildings;
  339. // cc.log('BuildingJSON', BuildingJSON);
  340. if (BuildingJSON.length == 0) {
  341. //初始化默认房子
  342. this.SpawnDefaultHouse();
  343. return
  344. };
  345. //如果有存储的数据,隐藏场景房屋节点
  346. this.onHideInitPosBuildings();
  347. for (let i = 0; i < BuildingJSON.length; i++) {
  348. // cc.log(i);
  349. // if (BuildingJSON[i].isDefault) continue;
  350. let HouseName = BuildingJSON[i].buildingNodeName;
  351. let housingTemp = this.onGetHousingPrefabFromName(HouseName);
  352. // cc.log('housingTemp', HouseName, housingTemp);
  353. //预制为空
  354. if (!housingTemp) return;
  355. housingTemp.parent = this.BuildingsParent;
  356. // var str= JSON.stringify(BuildingJSON);
  357. var endPos = GlobalD.TiledMap._getTheMiddleLocationFromtilePos(BuildingJSON[i].startTilePos);
  358. // let HousePosition = BuildingJSON[i].Position;
  359. // cc.log('x=' + HousePosition.x + 'y=' + HousePosition.y);
  360. housingTemp.setPosition(endPos.x, endPos.y);
  361. let buildingsInfo = housingTemp.getComponent("buildingsInfo");
  362. //id用时间戳来记录
  363. buildingsInfo.buildInfo.id = BuildingJSON[i].buildingId;//对应的id
  364. //设置tile的最底下的坐标,就是起始坐标
  365. buildingsInfo.buildInfo.startTilePos = BuildingJSON[i].startTilePos;
  366. //初始化位置的坐标
  367. buildingsInfo.InitStartPos = BuildingJSON[i].startTilePos;
  368. this.SpawnBuildingDefaultValue(buildingsInfo);
  369. //目前应该只有商店,后面根据RunningCost来判断 todo.....
  370. // if (reGameStates.BuildType.Shop == buildingsInfo.buildInfo.buildType)
  371. {
  372. // buildingsInfo.buildInfo.isItSaleable = Number(BuildingJSON[i].isItSaleable) > 0 ? true : false;
  373. buildingsInfo.buildInfo.isItStopOperation = Number(BuildingJSON[i].isItStopOperation) > 0 ? true : false;
  374. //如果不可以运营的,加上牌子
  375. if (buildingsInfo.buildInfo.isItStopOperation) {
  376. GlobalD.game.onAddBuildingTipView(buildingsInfo);
  377. }
  378. }
  379. //建筑物的加成值
  380. buildingsInfo.buildInfo.consumeStrengthAddValue = Number(BuildingJSON[i].consumeStrengthAddValue);
  381. buildingsInfo.buildInfo.goodsPriceAddValue = Number(BuildingJSON[i].goodsPriceAddValue);
  382. // cc.log('buildingsInfo', buildingsInfo);
  383. //起始坐标,占位范围,是否占位
  384. GlobalD.game.addBuildTiled(buildingsInfo.buildInfo.id, buildingsInfo.buildInfo.startTilePos, buildingsInfo.buildInfo.occupyArea);
  385. //添加占位信息
  386. GlobalD.game.addBuilding(buildingsInfo);
  387. }
  388. },
  389. onGetHousingPrefabFromName(HouseName) {
  390. let housing = null;
  391. //住宿地方
  392. if (HouseName == 'House_Env_01') {
  393. housing = cc.instantiate(this.house_Env_1);
  394. }
  395. else if (HouseName === 'House_Env_02') {
  396. housing = cc.instantiate(this.house_Env_2);
  397. }
  398. else if (HouseName == 'House_Env_03') {
  399. housing = cc.instantiate(this.house_Env_3);
  400. }
  401. //劳动地方
  402. else if (HouseName == 'Farmland_Labour_01') {
  403. housing = cc.instantiate(this.Farmland_Labour_1);
  404. }
  405. else if (HouseName == 'TimberYard_Labour_2') {
  406. housing = cc.instantiate(this.TimberYard_Labour_2);
  407. }
  408. else if (HouseName == 'MiningPit_Labour_3') {
  409. housing = cc.instantiate(this.MiningPit_Labour_3);
  410. }
  411. else if (HouseName == 'Factory_Labour_02') {
  412. housing = cc.instantiate(this.Factory_Labour_4);
  413. }
  414. //特殊建筑
  415. else if (HouseName == 'FlowerBed_Spe_401') {
  416. housing = cc.instantiate(this.FlowerBed_Spe_401);
  417. }
  418. else if (HouseName == 'Fountain_Spe_402') {
  419. housing = cc.instantiate(this.Fountain_Spe_402);
  420. }
  421. else if (HouseName == 'Playground_Spe_403') {
  422. housing = cc.instantiate(this.Playground_Spe_403);
  423. }
  424. else if (HouseName == 'Hospital_Spe_404') {
  425. housing = cc.instantiate(this.Hospital_Spe_404);
  426. }
  427. else if (HouseName == 'Police_Spe_405') {
  428. housing = cc.instantiate(this.Police_Spe_405);
  429. }
  430. else if (HouseName == 'Bank_Spe_406') {
  431. housing = cc.instantiate(this.Bank_Spe_406);
  432. }
  433. //商店类型
  434. else if (HouseName == 'Shops_01_Cake') {
  435. housing = cc.instantiate(this.Shops_01_Cake);
  436. }
  437. else if (HouseName == 'Shops_02_Flower') {
  438. housing = cc.instantiate(this.Shops_02_Flower);
  439. }
  440. else if (HouseName == 'Shops_03_Hamburger') {
  441. housing = cc.instantiate(this.Shops_03_Hamburger);
  442. }
  443. else if (HouseName == 'Shops_04_Store') {
  444. housing = cc.instantiate(this.Shops_04_Store);
  445. }
  446. else if (HouseName == 'Shops_05_Clothes') {
  447. housing = cc.instantiate(this.Shops_05_Clothes);
  448. }
  449. else if (HouseName == 'Shops_06_Coffee') {
  450. housing = cc.instantiate(this.Shops_06_Coffee);
  451. }
  452. else if (HouseName == 'Shops_07_Beer') {
  453. housing = cc.instantiate(this.Shops_07_Beer);
  454. }
  455. return housing;
  456. },
  457. //获取预制的名字
  458. onGetPrefabsBuildingName(index) {
  459. //content button 设置的index
  460. let buildingName = '';
  461. //农舍
  462. if ('1' == index) {
  463. buildingName = 'House_Env_01';
  464. }
  465. //单元楼
  466. else if ('2' == index) {
  467. buildingName = 'House_Env_02';
  468. }
  469. //别墅
  470. else if ('3' == index) {
  471. buildingName = 'House_Env_03';
  472. }
  473. //农田
  474. else if ('201' == index) {
  475. buildingName = 'Farmland_Labour_01';
  476. }
  477. //伐木场
  478. else if ('202' == index) {
  479. buildingName = 'TimberYard_Labour_2';
  480. }
  481. //矿坑
  482. else if ('203' == index) {
  483. buildingName = 'MiningPit_Labour_3';
  484. }
  485. //工厂
  486. else if ('204' == index) {
  487. buildingName = 'Factory_Labour_02';
  488. }
  489. //甜品店
  490. else if ('301' == index) {
  491. buildingName = 'Shops_01_Cake';
  492. }
  493. //鲜花店
  494. else if ('302' == index) {
  495. buildingName = 'Shops_02_Flower';
  496. }
  497. //汉堡店
  498. else if ('303' == index) {
  499. buildingName = 'Shops_03_Hamburger';
  500. }
  501. //便利店
  502. else if ('304' == index) {
  503. buildingName = 'Shops_04_Store';
  504. }
  505. //洋装店
  506. else if ('305' == index) {
  507. buildingName = 'Shops_05_Clothes';
  508. }
  509. //咖啡店
  510. else if ('306' == index) {
  511. buildingName = 'Shops_06_Coffee';
  512. }
  513. //酒吧
  514. else if ('307' == index) {
  515. buildingName = 'Shops_07_Beer';
  516. }
  517. //花坛
  518. else if ('401' == index) {
  519. buildingName = 'FlowerBed_Spe_401';
  520. }
  521. //喷泉
  522. else if ('402' == index) {
  523. buildingName = 'Fountain_Spe_402';
  524. }
  525. //游乐场
  526. else if ('403' == index) {
  527. buildingName = 'Playground_Spe_403';
  528. }
  529. //医院
  530. else if ('404' == index) {
  531. buildingName = 'Hospital_Spe_404';
  532. }
  533. //警察局
  534. else if ('405' == index) {
  535. buildingName = 'Police_Spe_405';
  536. }
  537. //银行
  538. else if ('406' == index) {
  539. buildingName = 'Bank_Spe_406';
  540. }
  541. return buildingName;
  542. },
  543. });