浏览代码

Merge branch 'TheHolyFarmer' of http://81.70.224.233:10080/yichael/FragrantTown into TheHolyFarmer

# Conflicts:
#	assets/Scene/MyCityScene - 004.fire
#	assets/Script/public/GameData.js
Sunny 3 年之前
父节点
当前提交
204e7ade9b

文件差异内容过多而无法显示
+ 84 - 1708
assets/Scene/MyCityScene - 004.fire


+ 6 - 6
assets/Script/Lease/LeaseInfo.js

@@ -121,16 +121,16 @@ cc.Class({
         //this.inputInviteValue 默认是1倍
         // console.log( this.inputInviteValue);
         switch (this.toggleInputValue) {
-            case "1":
-                this.totalPriceValue = 700 * this.inputInviteValue;
+            case "1": //700
+                this.totalPriceValue = GlobalD.ConfigLand.rental1 * this.inputInviteValue;
                 this.totalPriceLabel.string = this.totalPriceValue + "CNT";
                 break;
-            case "2":
-                this.totalPriceValue = 2500 * this.inputInviteValue;
+            case "2": //2500
+                this.totalPriceValue = GlobalD.ConfigLand.rental2 * this.inputInviteValue;
                 this.totalPriceLabel.string = this.totalPriceValue + "CNT";
                 break;
-            case "3":
-                this.totalPriceValue = 5000 * this.inputInviteValue;
+            case "3": //5000
+                this.totalPriceValue = GlobalD.ConfigLand.rental3 * this.inputInviteValue;
                 this.totalPriceLabel.string = this.totalPriceValue + "CNT";
                 break;
             default:

+ 1 - 2
assets/Script/Network/dapp.js

@@ -75,8 +75,7 @@ cc.Class({
                     // };
 
                     utils.post(utils.api.loginTokenAndVerification, dappLoginData, (res, value) => {
-                        // console.log("loginTokenAndVerification========>", _temp);
-                        // console.log(value);
+                        // console.log("loginTokenAndVerification========>", value);
                         if (value.code == 0) {
                             /** 登录成功获取token */
                             utils.setToken(value.data.token);

+ 10 - 1
assets/Script/Network/netUtils.ts

@@ -30,7 +30,10 @@ var utils = {
         playerInfo: 'comPlayers/getPlayerAndBattleAttribute',
         playerPushInfo: 'comPlayers/playerPushInfo',
         playerPullInfo: 'comPlayers/playerPullInfo',
-
+        /**
+         * 获取是否租赁过的状态
+         */
+        playerExchangeState: 'comPlayers/getPlayerExchangeState',
         //获取游戏config土地列表
         landConfig: 'configLand/getList',
         //获取用户已经租赁的土地
@@ -41,6 +44,12 @@ var utils = {
         plant: 'comPlayerLand/plant',
         //种子
         mallSeed: 'comMallSeed/getMallSeed',
+        /**
+       * 用钻石兑换一包种子
+       */
+        exchangeSeeds: 'comMallSeed/exchangeSeeds',
+
+
         //仓库种子和果实
         getSeedAndFruit: 'comPlayerGoods/getSeedAndFruit',
         //背包的种子数量

+ 1314 - 1340
assets/Script/public/GameData.js

@@ -1,1394 +1,1368 @@
-var reGameStates = require('GameStates')
-var AConfig = require('../Config')
+var reGameStates = require('GameStates');
+var AConfig = require('../Config');
 
-import utils from '../Network/netUtils'
-import GameNet from '../Network/GameNet'
-import gameToast from '../Network/gameToast'
+import utils from "../Network/netUtils";
+import GameNet from "../Network/GameNet"
+import gameToast from "../Network/gameToast"
 
 //全局数据类
 cc.Class({
-  extends: cc.Component,
-  properties: {
-    //记录全部道路的index
-    GameData_highwayIndex: {
-      default: [],
-      type: [cc.Integer],
-      visible: false,
-      serializable: false,
+    extends: cc.Component,
+    properties: {
+        //记录全部道路的index
+        GameData_highwayIndex: {
+            default: [],
+            type: [cc.Integer],
+            visible: false,
+            serializable: false,
+        },
+
+        //记录建筑物存储的信息
+        GameData_buildings: {
+            default: [],
+            visible: false,
+            serializable: false,
+        },
+        HighWayPrefabs: cc.Prefab,
+        //MyMapNode
+        //建筑物的节点
+        BuildingsParent: {
+            default: null,
+            type: cc.Node,
+        },
+        ManageUI: {
+            default: null,
+            type: cc.Node,
+        },
+
+        GameVersion: {
+            default: -1,
+            type: cc.Integer,
+        },
+
+        //读取数据
+        readData: {
+            default: null,
+            visible: false,
+        },
+
+        /**
+         * 接口
+         * todo cnt和snb 由钱包读取
+         */
+        CNT: {
+            default: 0,
+            visible: false,
+        },
+        SNB: {
+            default: 0,
+            visible: false,
+        },
+        //站内收益
+        CNTDrawBalance: {
+            default: 0,
+            visible: false,
+        },
+
+        //读取的土地文件
+        ConfigLand: {
+            default: null,
+            visible: false
+        },
+
+
+
+        toast: null,
+        scheduleObj: null,
+        toastCallback: null,
+        isStart: true,
+        isInit: false,
+
+        /**
+         * 限制重复触发支付, 正在支付中转态,
+         */
+        isPlayingCnt: false,
+        isPlayingSnb: false,
+
+
+        /**
+         * 处理请求
+         */
+        //现在多次触发
+        isOnAddFruit: false,
+        isOnSaleFruit: false,
+        isOnGrantFruit: false,
+
+        //自动存储数据
+        AutoSaveData: null
+
     },
+    onLoad() {
+        //初始化GameData全局变量
+        GlobalD.GameData = this;
+        this.GameConfig();
+    },
+    GameConfig() {
+        this.AddBuildingCost = 5;
+        this.RemoveBuildingCost = 5;
 
-    //记录建筑物存储的信息
-    GameData_buildings: {
-      default: [],
-      visible: false,
-      serializable: false,
+        //
+        this.Dapp = {
+            UserInfo: null
+        }
     },
-    HighWayPrefabs: cc.Prefab,
-    //MyMapNode
-    //建筑物的节点
-    BuildingsParent: {
-      default: null,
-      type: cc.Node,
+    start() {
+        cc.loader.loadRes("prefab/gameToast", function (err, texture) {
+            this.toast = cc.instantiate(texture);
+            this.toast.parent = cc.find("Canvas/UICamera");
+            this.toast.zIndex = 999;
+            this.toast.active = false;
+            this.scheduleObj = this.schedule(() => {
+                this.updateToast();
+            }, 1);
+        }.bind(this));
+
+        this._tiledMap = GlobalD.TiledMap._tiledMap;
+        //调用初始化dapp
+        this.isDebugMode(GlobalD.dapp);
     },
-    ManageUI: {
-      default: null,
-      type: cc.Node,
+    /**
+     * 根据 不存在dapp 的话,使用本地测试
+     * @param {*} bInit 
+     */
+    isDebugMode: function (bInit) {
+        if (bInit) {
+            //读取网络数据
+            try {
+                GlobalD.dapp.cntBalance().then((cntBalance) => {
+                    //会延迟返回
+                    // console.log("获取cnt:" + cntBalance) // string, 精度18,需要自行处理省略几位小数
+                    GlobalD.GameData.SetCNT(cntBalance);
+                });
+            } catch (err) {
+                console.error(err) // 初始化失败,运行环境不是钱包环境
+            }
+            //登录时候已经初始化好snb了
+            this.SNB = GlobalD.UserInfo.snb;
+
+            this.readData = userData.readData;
+            // cc.log('playerPullInfo 读取到数据?:', this.readData)
+            this.InitNextworkData();
+            this.InitSceneInfo();
+
+            // 自动存储数据
+            /**
+             * todo 如果退出游戏,触发一次存储。
+             */
+            this.AutoSaveData = function () {
+                this.pushData(true);
+            };
+            this.schedule(this.AutoSaveData, 15);
+        } else {
+            // 清除
+            cc.log("本地数据重新开始,并且不初始化");
+            // this.onClearAllData();
+            this.Init();
+            this.InitSceneInfo();
+            this.AutoSaveData = function () {
+                this.pushData(false);
+            };
+            this.schedule(this.AutoSaveData, 10);
+        }
     },
 
-    GameVersion: {
-      default: -1,
-      type: cc.Integer,
+    getData: function () {
+        //如果开局没有读取到网络数据,就这里初始化
+        if (userData.readData == null) {
+            cc.log("本地数据:", cc.sys.localStorage.getItem('userdata'));
+            let userdata = cc.sys.localStorage.getItem('userdata');
+            if (userdata) {
+                this.readData = JSON.parse(userdata);
+            }
+            this.Init();
+            this.InitSceneInfo();
+        } else {
+            this.readData = userData.readData;
+            cc.log('读取到数据?:', this.readData)
+            this.Init();
+            this.InitSceneInfo();
+        }
+
     },
 
-    //读取数据
-    readData: {
-      default: null,
-      visible: false,
+    InitSceneInfo() {
+        //根据顺序生成
+        //初始化时间ui
+        cc.find("GameNode/ManageTimer").getComponent('ManageTimer').Init();
+        //初始化金钱ui,gold,diamond, cnt,snb,
+        cc.find("GameNode/ManageGolden").getComponent('ManageGolden').InitManageGlodenUI();
+        // //初始化地图物件
+        // cc.find("GameNode/ManageMap").getComponent('ManageMap').InitManageMap();
+        GlobalD.TiledMap.onInitSolid();
+
+        //初始化生成房屋 
+        /**
+         * dapp设定: 如果固定土地冲突,删除冲突的建筑和回收仓库
+         */
+        this.ManageUI.getComponent('ManageBuildings').InitBuildings();
+
+        //初始化道路
+        /**
+         * 原本游戏设定是先生产道路,现在为了方便处理等房屋生产后,再处理公路
+         * dapp设定: 如果固定土地冲突,删除对应的公路
+         */
+        this.onSpawnHighway();
+
+        //初始化生成人物
+        /**
+        * dapp设定: 如果固定土地位置冲突,把人物生成位置放置到主路
+        * onSpawnWorkerAIFromStoredData 此函数处理
+        */
+        cc.find('GameNode/ManageWorker').getComponent('ManageWorker').InitWorkerAI();
+
+        let _BFirstLoadGame = this.readData ? this.readData.BFirstLoadGame : 0;
+        //初始化新手教学
+        GlobalD.ManageTask.InitTask(_BFirstLoadGame);
+
+        this.ManageUI.getComponent('ManageUI').Init();
+
+    },
+    InitNextworkData() {
+        // console.log("this.readData", this.readData);
+        this.Golden = this.readData.Golden;
+        this.Diamond = this.readData.Diamond;
+        this.shareGive = this.readData.shareGive;
+        //签到分享给钻石金币
+        this.signInGive = this.readData.signInGive;
+        //每个月 给的 低保
+        this.EveryGive = this.readData.EveryGive;
+        //公共分享
+        this.publicGive = this.readData.publicGive;
+
+        // cc.log('初始化网络数据');
+        //读取日期数据
+        this.GameYear = this.readData.GameYear;
+        this.GameMonth = this.readData.GameMonth;
+        this.GameDay = this.readData.GameDay;
+
+        //读取金币
+        this.Golden = this.readData.Golden;
+        //读取钻石
+        this.Diamond = this.readData.Diamond;
+        // cc.log('this.readData.Diamond', this.readData.Diamond);
+        //读取工人等级
+        this.WorkerLV = this.readData.WorkerLV;
+        //工人数量
+        this.WorkerNum = this.readData.WorkerNum;
+        //工人容量
+        this.WorkerCapacity = this.readData.WorkerCapacity;
+        this.GameDate = this.readData.GameDate;
+        this.LastTimeEveryDayRewardsDate = this.readData.LastTimeEveryDayRewardsDate;
+        this.LastTimeLuckDate = this.readData.LastTimeLuckDate;
+        this.EveryDayRewardsArray = this.readData.EveryDayRewardsArray;//.split('_');
+        this.TerritoryStateArray = this.readData.TerritoryStateArray;//.split('_');
+        //面板状态
+        this.BuildingStateArray = this.readData.BuildingStateArray;//.split('_');
+
+        //解锁设置为 不用解锁
+        // this.BuildingLockStateArray.forEach((value, index, array) => {
+        //     array[index] = 1;
+        // })
+        this.BuildingLockStateArray = this.readData.BuildingLockStateArray;//.split('_');
+        this.BuildingNumArray = this.readData.BuildingNumArray;//.split('_');
+        this.DiamondNumArray = this.readData.DiamondNumArray;//.split('_');
+        this.FoodTradeState = this.readData.FoodTradeState;
+        this.WoodTradeState = this.readData.WoodTradeState;
+        this.MineralTradeState = this.readData.MineralTradeState;
+        //工人工作信息
+        if (this.readData.characterInfoArray) {
+            this.CharacterInfoArray = this.readData.characterInfoArray;
+        } else {
+            this.CharacterInfoArray = [];
+        }
+        //道路数据
+        if (this.readData.highwayIndex)
+            this.GameData_highwayIndex = this.readData.highwayIndex;
+
+        //建筑物数据
+        if (this.readData.buildingsInfo)
+            this.GameData_buildings = this.readData.buildingsInfo;
+
+        this.LotteryTimes = this.readData.LotteryTimes;
+        //任务
+        if (this.readData.TaskIconCountClick)
+            task.TaskIconCountClick = this.readData.TaskIconCountClick;
+    },
+    /**
+     * 初始化
+     */
+    Init: function () {
+        let _BFirstLoadGame = false;//  this.readData ? this.readData.BFirstLoadGame : 0;
+        //date
+        this.GameYear = 0;
+        this.GameMonth = 0;
+        this.GameDay = 0;
+        this.GameDate = '0000/00/01';
+        /**
+         * 新增 CNT 和 SNB
+         */
+        this.CNT = 0;
+        this.SNB = 0;
+        this.Golden = 2000;
+        this.Diamond = 100;
+        this.WorkerLV = 0;
+        this.WorkerNum = 0;
+        this.CharacterInfoArray = [];
+        this.WorkerCapacity = 5;
+        this.TerritoryStateArray = [1, 1, 1, 1, 1, 1, 1, 1];//测试,全开地图
+        /**
+         * 添加建筑往后添加,到时候ManageBuildings 脚本 会初始化根据顺序
+         * BuildingStateArray---相关 GetBuildingStateArray 获取建筑状态
+         * BuildingNumArray  ---相关 GetBuildingNumArray 获取建筑数量
+         * BuildingFrameArray ---相关 ManageUI  添加面板是否解锁之类的相关预制  
+         */
+        this.BuildingStateArray = [
+            1, //公路
+            1,  //路铲
+            1,  //拆迁
+            1,  //农舍
+            1,  //单元楼
+            1,  //别墅
+            1, //农田
+            1,//伐木场
+            1, //矿坑
+            1, //加工厂
+            1,//冷饮摊
+            1,//贩卖机
+            1,//面包房
+            1,//早餐车
+            1, //饮茶店
+            1,//点心店
+            1, //美食店
+            1,//西餐厅
+            1, //花店
+            1, //美发店
+            1,//洋装店
+            1, //珠宝店
+            1, //电影院
+            1,//路灯
+            1, //绿化带
+            1, //花坛
+            1,//喷泉
+            1, //警察局
+            1,//游乐场
+            1,  //蓝色城堡
+            1, //粉色城堡
+            1, //Holy Farmland
+            1 //Holy Farmland seed
+        ];
+        this.BuildingLockStateArray = [
+            1, //公路
+            1,  //路铲
+            1,  //拆迁
+            1,  //农舍
+            0,  //单元楼
+            0,  //别墅
+            1, //农田
+            0,//伐木场
+            0, //矿坑
+            1, //加工厂
+            0,//冷饮摊
+            0,//贩卖机
+            0,//面包房
+            0,//早餐车
+            0, //饮茶店
+            0,//点心店
+            0, //美食店
+            0,//西餐厅
+            0, //花店
+            0, //美发店
+            0,//洋装店
+            0, //珠宝店
+            0, //电影院
+            1,//路灯
+            1, //绿化带
+            1, //花坛
+            0,//喷泉
+            0, //警察局
+            0,//游乐场
+            0,  //蓝色城堡
+            0, //粉色城堡
+            1, //Holy Farmland
+            1, //Holy Farmland seed
+        ];
+        //建筑物数量
+        this.BuildingNumArray = [
+            0, //公路
+            0,  //路铲
+            0,  //拆迁
+            4,  //农舍
+            1,  //单元楼
+            1,  //别墅
+            4, //农田
+            1,//伐木场
+            1, //矿坑
+            2, //加工厂
+            2,//冷饮摊
+            1,//贩卖机
+            1,//面包房
+            1,//早餐车
+            1, //饮茶店
+            1,//点心店
+            1, //美食店
+            1,//西餐厅
+            1, //花店
+            1, //美发店
+            1,//洋装店
+            1, //珠宝店
+            1, //电影院
+            1,//路灯
+            1, //绿化带
+            1, //花坛
+            1,//喷泉
+            1, //警察局
+            1,//游乐场
+            1,  //蓝色城堡
+            1,  //粉色城堡
+            1, //Holy Farmland
+            1, //Holy Farmland seed
+        ];
+
+        this.DiamondNumArray = AConfig.DiamondArray;
+        //todo 钻石消耗默认值
+        this.DiamondNumArray.forEach((value, index, array) => {
+            array[index] = 0;
+        })
+        cc.log('钻石消耗默认值', this.DiamondNumArray);
+        this.EveryDayRewardsArray = [0, 0, 0, 0, 0, 0, 0];
+
+        this.LastTimeEveryDayRewardsDate = '0000/00/00';
+        this.LastTimeLuckDate = '0000/00/00';
+
+        this.FoodTradeState = 1;
+        this.WoodTradeState = 1;
+        this.MineralTradeState = 1;
+        //转盘分享给钻石金币
+        this.shareGive = [200, 5];
+        //签到分享给钻石金币
+        this.signInGive = [200, 5];
+        //每个月 给的 低保
+        this.EveryGive = [500, 10];
+        //公共分享
+        this.publicGive = [200, 50];
+        //每天抽奖次数
+        this.LotteryTimes = 10;
+
+        // 1 === _BFirstLoadGame
+        if (_BFirstLoadGame) {
+            console.log("this.readData", this.readData);
+            // cc.log('初始化网络数据');
+            //读取日期数据
+            this.GameYear = this.readData.GameYear;
+            this.GameMonth = this.readData.GameMonth;
+            this.GameDay = this.readData.GameDay;
+
+            /**
+             * 接口
+             * todo cnt和snb 由钱包读取
+             */
+            this.CNT = 0;
+            this.SNB = 0;
+
+            //读取金币
+            this.Golden = this.readData.Golden;
+            //读取钻石
+            this.Diamond = this.readData.Diamond;
+            // cc.log('this.readData.Diamond', this.readData.Diamond);
+            //读取工人等级
+            this.WorkerLV = this.readData.WorkerLV;
+            //工人数量
+            this.WorkerNum = this.readData.WorkerNum;
+            //工人容量
+            this.WorkerCapacity = this.readData.WorkerCapacity;
+            this.GameDate = this.readData.GameDate;
+            this.LastTimeEveryDayRewardsDate = this.readData.LastTimeEveryDayRewardsDate;
+            this.LastTimeLuckDate = this.readData.LastTimeLuckDate;
+            this.EveryDayRewardsArray = this.readData.EveryDayRewardsArray;//.split('_');
+            this.TerritoryStateArray = this.readData.TerritoryStateArray;//.split('_');
+            //面板状态
+            this.BuildingStateArray = this.readData.BuildingStateArray;//.split('_');
+
+            //解锁设置为 不用解锁
+            this.BuildingLockStateArray.forEach((value, index, array) => {
+                array[index] = 1;
+            })
+            // this.BuildingLockStateArray = this.readData.BuildingLockStateArray.split('_');
+            this.BuildingNumArray = this.readData.BuildingNumArray;//.split('_');
+            this.DiamondNumArray = this.readData.DiamondNumArray;//.split('_');
+            this.FoodTradeState = this.readData.FoodTradeState;
+            this.WoodTradeState = this.readData.WoodTradeState;
+            this.MineralTradeState = this.readData.MineralTradeState;
+
+            //工人工作信息
+            if (this.readData.characterInfoArray)
+                this.CharacterInfoArray = this.readData.characterInfoArray;
+            //道路数据
+            if (this.readData.highwayIndex)
+                this.GameData_highwayIndex = this.readData.highwayIndex;
+
+            //建筑物数据
+            if (this.readData.buildingsInfo)
+                this.GameData_buildings = this.readData.buildingsInfo;
+
+            this.LotteryTimes = this.readData.LotteryTimes;
+            //任务
+            if (this.readData.TaskIconCountClick)
+                task.TaskIconCountClick = this.readData.TaskIconCountClick;
+            //测试5W
+            // this.PlusDiamond(50000);
+        }
+    },
+
+    //GET / SET /Plus
+    GetGameDate: function () {
+        return this.GameDate;
+    },
+    SetGameDate: function (num) {
+        this.GameDate = num;
+    },
+    PlusGameDate: function (num) {
+        this.GameDate += num;
+    },
+    GetGolden: function () {
+        return parseInt(this.Golden);
+    },
+    GetGoldenCallBack(_CallBack) {
+        if (_CallBack)
+            _CallBack({ resGolden: parseInt(this.Golden) });
+    },
+    SetGolden: function (Num) {
+        let LastMoney = this.Golden;
+        this.Golden = Num;
+        let CurrentMoney = Num;
+        this.ManageUI.getComponent('ManageUI').GoldenChangeCallBack(this.GetGolden(), LastMoney, CurrentMoney);
+    },
+    PlusGolden: function (Num) {
+        if (this.Golden + Num < 0) {
+            this.SetGolden(0);
+        }
+        else {
+            this.SetGolden(this.Golden + Num);
+        }
+        // task.task50W();
+    },
+    GetDiamond: function () {
+        return parseInt(this.Diamond);
+    },
+    SetDiamond: function (num) {
+        let LastMoney = this.Diamond;
+        this.Diamond = num;
+        let CurrentMoney = num;
+        this.ManageUI.getComponent('ManageUI').DiamondChangeCallBack(this.GetDiamond(), LastMoney, CurrentMoney);
+    },
+    PlusDiamond: function (num) {
+        if (this.Diamond + num < 0) {
+            this.SetDiamond(0);
+        }
+        else {
+            this.SetDiamond(this.Diamond + num);
+        }
     },
 
     /**
-     * 接口
-     * todo cnt和snb 由钱包读取
+     * 游戏里面的cnt 和神农呗
      */
-    CNT: {
-      default: 0,
-      visible: false,
+    GetCNT: function () {
+        return parseFloat(this.CNT);
     },
-    SNB: {
-      default: 0,
-      visible: false,
+    SetCNT: function (Num) {
+        this.CNT = Num;
+        this.ManageUI.getComponent('ManageUI').CNTChangeCallBack(this.CNT);
     },
-    //站内收益
-    CNTDrawBalance: {
-      default: 0,
-      visible: false,
+    GetSNB: function () {
+        return parseFloat(this.SNB);
+    },
+    SetSNB: function (Num) {
+        this.SNB = Num;
+        this.ManageUI.getComponent('ManageUI').SNBChangeCallBack(this.SNB);
+    },
+
+
+    GetWorkerLV: function () {
+        return parseInt(this.WorkerLV);
+    },
+    SetWorkerLV: function (num) {
+        this.WorkerLV = num;
+    },
+    PlusWorkerLV: function (num) {
+        this.WorkerLV += num;
+    },
+    GetWorkerNum: function () {
+        return parseInt(this.WorkerNum);
+    },
+    SetWorkerNum: function (num) {
+        this.WorkerNum = num;
+    },
+    PlusWorkerNum: function (num) {
+        this.WorkerNum += num;
+    },
+    GetLastTimeEveryDayRewardsDate: function () {
+        return this.LastTimeEveryDayRewardsDate;
+    },
+    //获取转盘 时间
+    GetLastTimeLuckDate: function () {
+        return this.LastTimeLuckDate;
+    },
+    //设置转盘时间
+    SetLastTimeLuckDate: function (DateString) {
+        this.LastTimeLuckDate = DateString;
+    },
+    SetLastTimeEveryDayRewardsDate: function (DateString) {
+        this.LastTimeEveryDayRewardsDate = DateString;
     },
 
-    //读取的土地文件
-    ConfigLand: {
-      default: null,
-      visible: false,
+    //工人信息数组
+    GetWorkerCharacterInfoArray: function () {
+        return this.CharacterInfoArray;
+    },
+    SetWorkerCharacterInfoArray: function (item) {
+        this.CharacterInfoArray = item;
     },
 
-    toast: null,
-    scheduleObj: null,
-    toastCallback: null,
-    isStart: true,
-    isInit: false,
+    /*** */
+    GetWorkerCapacity: function () {
+        return parseInt((this.WorkerCapacity));
+    },
+    SetWorkerCapacity: function (num) {
+        this.WorkerCapacity = num;
+    },
+    PlusWorkerCapacity: function (num) {
+        this.WorkerCapacity += num;
+    },
+    GetTerritoryStateArray: function () {
+        return this.TerritoryStateArray;
+    },
+    SetTerritoryStateArray: function (aTerritoryStateArray) {
+        this.TerritoryStateArray = aTerritoryStateArray;
+    },
+    PlusTerritoryStateArray: function (Item) {
+        this.TerritoryStateArray.push(Item);
+    },
+    GetBuildingStateArray: function () {
+        return this.BuildingStateArray;
+    },
+    SetBuildingStateArray: function (aBuildingStateArray) {
+        this.BuildingStateArray = aBuildingStateArray;
+    },
+    PlusBuildingStateArray: function (Item) {
+        this.BuildingStateArray.push(Item);
+    },
+    GetBuildingLockStateArray: function () {
+        return this.BuildingLockStateArray;
+    },
+    SetBuildingLockStateArray: function (aArray) {
+        this.BuildingLockStateArray = aArray;
+    },
+    PlusBuildingLockStateArray: function (Item) {
+        this.BuildingLockStateArray.push(Item);
+    },
 
+    GetBuildingNumArray: function () {
+        return this.BuildingNumArray;
+    },
+    SetBuildingNumArray: function (aBuildingNumArray) {
+        this.BuildingNumArray = aBuildingNumArray;
+    },
+    PlusBuildingNumArray: function (Item) {
+        this.BuildingNumArray.push(Item);
+    },
+    //操作钻石数据
+    GetDiamondNumArray: function () {
+        return this.DiamondNumArray;
+    },
+    SetDiamondNumArray: function (aDiamondNumArray) {
+        this.DiamondNumArray = aDiamondNumArray;
+    },
+    GetEveryDayRewardsArray: function () {
+        return this.EveryDayRewardsArray;
+    },
+    SetEveryDayRewardsArray: function (aArray) {
+        this.EveryDayRewardsArray = aArray;
+    },
+    PlusEveryDayRewardsArray: function (Item) {
+        this.EveryDayRewardsArray.push(Item);
+    },
+    GetFoodTradeState: function () {
+        return parseInt((this.FoodTradeState));
+    },
+    SetFoodTradeState: function (num) {
+        this.FoodTradeState = num;
+    },
+    PlusFoodTradeState: function (num) {
+        this.FoodTradeState += num;
+    },
+    GetWoodTradeState: function () {
+        return parseInt((this.WoodTradeState));
+    },
+    SetWoodTradeState: function (num) {
+        this.WoodTradeState = num;
+    },
+    PlusWoodTradeState: function (num) {
+        this.WoodTradeState += num;
+    },
+    GetMineralTradeState: function () {
+        return parseInt((this.MineralTradeState));
+    },
+    SetMineralTradeState: function (num) {
+        this.MineralTradeState = num;
+    },
+    PlusMineralTradeState: function (num) {
+        this.MineralTradeState += num;
+    },
+    GetLotteryTimes: function () {
+        return parseInt((this.LotteryTimes));
+    },
+    SetLotteryTimes: function (num) {
+        this.LotteryTimes = num;
+    },
+    PlusLotteryTimes: function (num) {
+        this.LotteryTimes += num;
+    },
+
+
+    //初始化道路
+    onSpawnHighway() {
+        // 获取InitPoint层
+        let InitPos = this._tiledMap.getLayer('InitPoint');
+        InitPos.enabled = false;
+
+        //创建公路数据
+        if (this.readData && this.readData.allHighwayStylesAndIndex) {
+            //保存到内存中
+            this.GameData_highwayIndex = this.readData.highwayIndex;
+            //先赋值道路的对象数组
+            let _AllHighwayAIndex = Object.assign([], this.readData.allHighwayStylesAndIndex);
+            //获取最后建造公路的层级
+            this.HighwayLayer = this._tiledMap.getLayer('Highway');
+            for (let i = 0; i < _AllHighwayAIndex.length; i++) {
+                let _tiledPos = GlobalD.TiledMap.analyticalIndexData(_AllHighwayAIndex[i].highwayInfoIndex);
+                /**
+                 * 解决固定土地时候,道路 和房子 冲突
+                 * 
+                 */
+                if (GlobalD.game.getManageGameIndexArrayAt(cc.v2(_tiledPos.x, _tiledPos.y))) {
+                    continue;
+                }
+                let highwayTemp = cc.instantiate(this.HighWayPrefabs);
+                highwayTemp.parent = this.HighwayLayer.node;
+                let tiledTile = highwayTemp.addComponent('TiledTile');
+                tiledTile.x = _tiledPos.x;
+                tiledTile.y = _tiledPos.y;
+                //地图设置可行走区域公路设置
+                AStar.setMapSolid(_tiledPos.x, _tiledPos.y, 0);
+                // _buildId ==0 是公路
+                let _buildId = 0;
+                let occupyTemp = cc.v2(_buildId, _AllHighwayAIndex[i].highwayInfoIndex);
+                GlobalD.game.OccupyArray.push(occupyTemp);
+                highwayTemp.getComponent('HighwayInfo').onChangeHighwayStyles(_AllHighwayAIndex[i].highwayInfoType);
+
+                GlobalD.game.AllHighwayStylesAndIndex.push(_AllHighwayAIndex[i]);
+
+            }
+            // console.log("end");
+        } else {
+            //如果用户没有存储数据
+            //根据InitPoint 的数据,创建初始化的地图数据 的初始化数据
+
+            this.HighwayLayer = this._tiledMap.getLayer('Highway');
+            for (var i = 0; i < 32; i++) {
+                //去除中间两条路
+                if (i == 16 || i == 17) continue;
+                for (var j = 0; j < 32; j++) {
+                    let tilesPos = cc.v2(i, j);
+
+                    if (InitPos.getTileGIDAt(tilesPos)) {
+
+
+                        let index = GlobalD.TiledMap.getIndex(tilesPos);
+                        this.GameData_highwayIndex.push(index);
+
+                        let highwayTemp = cc.instantiate(this.HighWayPrefabs);
+                        highwayTemp.parent = this.HighwayLayer.node;
+                        let tiledTile = highwayTemp.addComponent('TiledTile');
+                        tiledTile.x = tilesPos.x;
+                        tiledTile.y = tilesPos.y;
+                        // cc.log('onSpawnHighway2');
+                        //地图设置可行走区域公路设置
+                        AStar.setMapSolid(tilesPos.x, tilesPos.y, 0);
+                        // _buildId ==0 是公路
+                        let _buildId = 0;
+                        let occupyTemp = cc.v2(_buildId, index);
+                        GlobalD.game.OccupyArray.push(occupyTemp);
+
+                        let tile = InitPos.getTiledTileAt(tilesPos.x, tilesPos.y, true);
+
+                        let _MoveType = reGameStates.HighwayType.moveX;
+                        // if (tile.gid == 15) {
+                        //     _MoveType = reGameStates.HighwayType.moveX;
+                        // } else 
+                        if (tile.gid == 16) {
+                            _MoveType = reGameStates.HighwayType.moveY;
+                        } else if (tile.gid == 11) {
+                            _MoveType = reGameStates.HighwayType.ZebraCrossingX;
+                        } else if (tile.gid == 12) {
+                            _MoveType = reGameStates.HighwayType.ZebraCrossingY;
+                        }
+                        // return;
+                        //更换公路样式
+                        GlobalD.game.onCreateDifferentRoadStyles({
+                            _buildId: _buildId,
+                            _highwayType: _MoveType,
+                            _roadIndex: index,
+                            _hightwayNode: highwayTemp
+                        });
+                    }
+                }
+            }
+        }
+        //外面的两条路
+        let initRoad = this._tiledMap.getLayer('Road');
+        initRoad.enabled = false;
+        for (var i = 16; i < 18; i++) {
+            for (var j = 0; j < 32; j++) {
+                let tilesPos = cc.v2(i, j);
+                // cc.log('road tilesPos',tilesPos)
+                if (initRoad.getTileGIDAt(tilesPos)) {
+                    let index = GlobalD.TiledMap.getIndex(tilesPos);
+                    this.GameData_highwayIndex.push(index);
+                    let highwayTemp = cc.instantiate(this.HighWayPrefabs);
+                    highwayTemp.parent = this.HighwayLayer.node;
+                    let tiledTile = highwayTemp.addComponent('TiledTile');
+                    tiledTile.x = tilesPos.x;
+                    tiledTile.y = tilesPos.y;
+                    // cc.log('initRoad');
+                    //地图设置可行走区域公路设置
+                    AStar.setMapSolid(tilesPos.x, tilesPos.y, 0);
+                    let _buildId = 0;
+                    let occupyTemp = cc.v2(_buildId, index);
+                    GlobalD.game.OccupyArray.push(occupyTemp);
+                    //更换公路样式
+                    // if (j >= 25 && j <= 27 || j >= 19 && j <= 21 || j >= 9 && j <= 11)
+                    //     highwayTemp.getComponent('HighwayInfo').onChangeHighwayStyles(reGameStates.HighwayType.none);
+                    // else
+                    //     highwayTemp.getComponent('HighwayInfo').onChangeHighwayStyles(reGameStates.HighwayType.moveY);
+
+                }
+            }
+        }
+    },
+
+    //清除所有的数据
+    onClearAllData() {
+        this.unschedule(this.AutoSaveData);
+        //任务索引
+        cc.sys.localStorage.removeItem('userdata');
+        //跳回登录场景
+        // cc.director.loadScene('Login');
+    },
+    //保存数据请求
     /**
-     * 限制重复触发支付, 正在支付中转态,
+     * 
+     * 现在转服务器存储,原本所有相关操作通过服务器计算。
+     * 一、目前涉及到的是 SNT 和 SNB 两个货币相关,和买田地操作 (可以理解为租聘,三种类型)
+     * 
+     * isNetwork:true,上传到网络
+     * 
      */
-    isPlayingCnt: false,
-    isPlayingSnb: false,
+    pushData: function (isNetwork) {
+        // cc.log(this.EveryDayRewardsArray);
+        // console.log(this.readData.BFirstLoadGame);
+        var datas = {
+            version: this.GameVersion,
+            // 转后台处理
+            BFirstLoadGame: 1,//只要push数据,就证明已经开始第一次游戏了
+
+            /**游戏不修改,默认值 start */
+            shareGive: this.shareGive,
+            //签到分享给钻石金币
+            signInGive: this.signInGive,
+            //每个月 给的 低保
+            EveryGive: this.EveryGive,
+            //公共分享
+            publicGive: this.publicGive,
+            /**游戏不修改,默认值 end */
+
+            //时间
+            GameYear: this.GameYear,
+            GameMonth: this.GameMonth,
+            GameDay: this.GameDay,
+
+            //这里只是单纯的存储起来
+            CNT: this.CNT,
+            SNB: this.SNB,
+
+            Golden: this.Golden,
+            Diamond: this.Diamond,
+            WorkerLV: this.WorkerLV,
+            WorkerNum: this.WorkerNum,
+            WorkerCapacity: this.WorkerCapacity,
+            GameDate: this.GameDate,
+            LastTimeEveryDayRewardsDate: this.LastTimeEveryDayRewardsDate,
+            LastTimeLuckDate: this.LastTimeLuckDate,
+            EveryDayRewardsArray: this.EveryDayRewardsArray,//.join('_'),
+            TerritoryStateArray: this.TerritoryStateArray,//.join('_'),
+            //面板状态
+            BuildingStateArray: this.BuildingStateArray,//.join('_'),
+            BuildingLockStateArray: this.BuildingLockStateArray,//.join('_'),
+
+            /**
+             * SNB和CNT相关,需要后台筛选 田地 和 种子。单独处理
+             */
+            BuildingNumArray: this.BuildingNumArray,//.join('_'),
+            DiamondNumArray: this.DiamondNumArray,//.join('_'),
+            FoodTradeState: this.FoodTradeState,
+            WoodTradeState: this.WoodTradeState,
+            MineralTradeState: this.MineralTradeState,
+
+            LotteryTimes: this.LotteryTimes,
+
+            /**
+             * 这些数据不用服务器初始化
+             */
+            //工人工作信息
+            characterInfoArray: this.CharacterInfoArray,
+            //道路数据
+            highwayIndex: this.GameData_highwayIndex,
+            allHighwayStylesAndIndex: GlobalD.game.AllHighwayStylesAndIndex,
+            //建筑物数据
+            buildingsInfo: this.GameData_buildings,
+            //任务
+            TaskIconCountClick: task.TaskIconCountClick
+        }
+
+        if (isNetwork) {
+            var data = [];
+            // data["openid"] = userData.openId;
+            // data["userdata"] = JSON.stringify(datas);
+            data["playerData"] = JSON.stringify(datas);
+
+            /** 推送信息 */
+            utils.post(utils.api.playerPushInfo, data, (res, playerPushInfoTemp) => {
+                // console.log('playerPushInfoTemp', playerPushInfoTemp);
+            })
+        } else {
+            console.log("存储本地:" + isNetwork);
+            //保存用户数据到本地
+            cc.sys.localStorage.setItem('userdata', JSON.stringify(datas));
+        }
+
+
+    },
 
     /**
-     * 处理请求
+     * 兑换种子时候,特殊处理数据
+     * 扣除相应的钻石
      */
-    //现在多次触发
-    isOnAddFruit: false,
-    isOnSaleFruit: false,
-    isOnGrantFruit: false,
-  },
-  onLoad() {
-    //初始化GameData全局变量
-    GlobalD.GameData = this
-    this.GameConfig()
-  },
-  GameConfig() {
-    this.AddBuildingCost = 5
-    this.RemoveBuildingCost = 5
-
-    //
-    this.Dapp = {
-      UserInfo: null,
-    }
-  },
-  start() {
-    cc.loader.loadRes(
-      'prefab/gameToast',
-      function (err, texture) {
-        this.toast = cc.instantiate(texture)
-        this.toast.parent = cc.find('Canvas/UICamera')
-        this.toast.zIndex = 999
-        this.toast.active = false
-        this.scheduleObj = this.schedule(() => {
-          this.updateToast()
-        }, 1)
-      }.bind(this)
-    )
-
-    this._tiledMap = GlobalD.TiledMap._tiledMap
-    //调用初始化dapp
-    this.isDebugMode(GlobalD.dapp)
-  },
-  /**
-   * 根据 不存在dapp 的话,使用本地测试
-   * @param {*} bInit
-   */
-  isDebugMode: function (bInit) {
-    if (bInit) {
-      //读取网络数据
-      try {
-        GlobalD.dapp.cntBalance().then((cntBalance) => {
-          //会延迟返回
-          // console.log("获取cnt:" + cntBalance) // string, 精度18,需要自行处理省略几位小数
-          GlobalD.GameData.SetCNT(cntBalance)
+    exchangeSeed() {
+        //先暂停存储
+        this.unschedule(this.AutoSaveData);
+
+        utils.post(utils.api.exchangeSeeds, { diamondAmount: 50000, seedId: 8 }, (res, value) => {
+            console.log("兑换种子", value);
+            callback(res, value);
+            //兑换成功后
+            if (0 === value.code) {
+                //更新一次数据
+                let _playerData = JSON.parse(value.data.playerData);
+                //更新本地钻石数据
+                this.SetDiamond(_playerData.Diamond);
+
+            } else {
+                //兑换失败
+            }
+
+
+            //重新开启存储
+            this.schedule(this.AutoSaveData, 15);
         })
-      } catch (err) {
-        console.error(err) // 初始化失败,运行环境不是钱包环境
-      }
-      //登录时候已经初始化好snb了
-      this.SNB = GlobalD.UserInfo.snb
-
-      this.readData = userData.readData
-      // cc.log('playerPullInfo 读取到数据?:', this.readData)
-      this.InitNextworkData()
-      this.InitSceneInfo()
-
-      // 自动存储数据
-      /**
-       * todo 如果退出游戏,触发一次存储。
-       */
-      this.AutoSaveData = function () {
-        this.pushData(true)
-      }
-      this.schedule(this.AutoSaveData, 20)
-    } else {
-      // 清除
-      cc.log('本地数据重新开始,并且不初始化')
-      // this.onClearAllData();
-      this.Init()
-      this.InitSceneInfo()
-      this.AutoSaveData = function () {
-        this.pushData(false)
-      }
-      this.schedule(this.AutoSaveData, 20)
-    }
-  },
-
-  getData: function () {
-    //如果开局没有读取到网络数据,就这里初始化
-    if (userData.readData == null) {
-      cc.log('本地数据:', cc.sys.localStorage.getItem('userdata'))
-      let userdata = cc.sys.localStorage.getItem('userdata')
-      if (userdata) {
-        this.readData = JSON.parse(userdata)
-      }
-      this.Init()
-      this.InitSceneInfo()
-    } else {
-      this.readData = userData.readData
-      cc.log('读取到数据?:', this.readData)
-      this.Init()
-      this.InitSceneInfo()
-    }
-  },
-
-  InitSceneInfo() {
-    //根据顺序生成
-    //初始化时间ui
-    cc.find('GameNode/ManageTimer').getComponent('ManageTimer').Init()
-    //初始化金钱ui,gold,diamond, cnt,snb,
-    cc.find('GameNode/ManageGolden')
-      .getComponent('ManageGolden')
-      .InitManageGlodenUI()
-    // //初始化地图物件
-    // cc.find("GameNode/ManageMap").getComponent('ManageMap').InitManageMap();
-    GlobalD.TiledMap.onInitSolid()
-
-    //初始化生成房屋
+    },
     /**
-     * dapp设定: 如果固定土地冲突,删除冲突的建筑和回收仓库
+     * 获取是否租赁过的状态
      */
-    this.ManageUI.getComponent('ManageBuildings').InitBuildings()
+    getPlayerExchangeState(callback) {
+        utils.get(utils.api.playerExchangeState, {}, (res, vaule) => {
+            console.log("租赁状态:", value);
+            callback(res, vaule);
+        })
+    },
 
-    //初始化道路
     /**
-     * 原本游戏设定是先生产道路,现在为了方便处理等房屋生产后,再处理公路
-     * dapp设定: 如果固定土地冲突,删除对应的公路
+     * 暂时不需要从这里读取
      */
-    this.onSpawnHighway()
+    getLandConfig() {
+        utils.get(utils.api.landConfig, {}, (res, value) => {
+            if (0 === value.code) {
+                this.ConfigLand = value.data;
+            } else {
+                console.warn("未能读取到config土地?");
+            }
+        })
+    },
+    //获取用户全部租赁土地
+    getUserLandList() {
+        utils.get(utils.api.userLandList, {}, (res, vaule) => {
+
+        })
+    },
+    //获取用户已租赁土地的状态
+    getLandState(context) {
+        let { landId, callback } = context;
+        utils.get(utils.api.landState, { landId: landId }, (res, vaule) => {
+            callback(res, vaule);
+        })
+    },
+    //获取商城种子
+    getMallSeed(callback) {
+        utils.get(utils.api.mallSeed, {}, (res, vaule) => {
+            callback(res, vaule);
+        })
+    },
+
+    getWarehouseSeedAndFruit(callback) {
+        utils.get(utils.api.getSeedAndFruit, {}, (res, vaule) => {
+            callback(res, vaule);
+        })
+    },
+    //获取种子状态
+    onGetSeedState(data, callback) {
+        utils.get(utils.api.getSeedState, data, (res, vaule) => {
+            callback(res, vaule);
+        })
+    },
+
+    //种植种子
+    // data:{landId:1,seedId:1}
+    onPlant(data, callback) {
+        utils.get(utils.api.plant, data, (res, vaule) => {
+            callback(res, vaule);
+        })
+    },
+
+    //收取果实
+    onAddFruit(data, callback) {
+        if (this.isOnAddFruit) {
+            console.log("收取果实过快!");
+            return;
+        }
+        this.isOnAddFruit = true;
+        utils.post(utils.api.addFruit, data, (res, vaule) => {
+            this.isOnAddFruit = false;
+            callback(res, vaule);
+        })
+    },
+
+    //出售果实
+    onSaleFruit(data, callback) {
+        if (this.isOnSaleFruit) {
+            console.log("出售果实过快!");
+            return;
+        }
+        this.isOnSaleFruit = true;
+        utils.post(utils.api.saleFruit, data, (res, vaule) => {
+            this.isOnSaleFruit = false;
+            callback(res, vaule);
+        })
+    },
+
+    //赠送果实
+    onGrantFruit(data, callback) {
+        if (this.isOnGrantFruit) {
+            console.log("赠送果实过快!");
+            return;
+        }
+        this.isOnGrantFruit = true;
+        utils.post(utils.api.grantFruit, data, (res, vaule) => {
+            this.isOnGrantFruit = false;
+            callback(res, vaule);
+        })
+    },
+
+    //神农呗购买种子
+    onBuySeedsWithSNB(snbAmount, seedId, callback) {
+        utils.post(utils.api.snbBuySeeds, { payAmount: snbAmount, seedId: seedId }, (res, vaule) => {
+            callback(res, vaule);
+        })
+    },
+
+    //获取用户的snb
+    onGetUserSnb(callback) {
+        utils.get(utils.api.userSnbInfo, {}, (res, value) => {
+            GlobalD.GameData.SetSNB(value.data.SNB);
+            if (callback)
+                callback(res, value);
+        })
+    },
 
-    //初始化生成人物
-    /**
-     * dapp设定: 如果固定土地位置冲突,把人物生成位置放置到主路
-     * onSpawnWorkerAIFromStoredData 此函数处理
-     */
-    cc.find('GameNode/ManageWorker').getComponent('ManageWorker').InitWorkerAI()
-
-    let _BFirstLoadGame = this.readData ? this.readData.BFirstLoadGame : 0
-    //初始化新手教学
-    GlobalD.ManageTask.InitTask(_BFirstLoadGame)
-
-    this.ManageUI.getComponent('ManageUI').Init()
-  },
-  InitNextworkData() {
-    // console.log("this.readData", this.readData);
-    this.Golden = this.readData.Golden
-    this.Diamond = this.readData.Diamond
-    this.shareGive = this.readData.shareGive
-    //签到分享给钻石金币
-    this.signInGive = this.readData.signInGive
-    //每个月 给的 低保
-    this.EveryGive = this.readData.EveryGive
-    //公共分享
-    this.publicGive = this.readData.publicGive
-
-    // cc.log('初始化网络数据');
-    //读取日期数据
-    this.GameYear = this.readData.GameYear
-    this.GameMonth = this.readData.GameMonth
-    this.GameDay = this.readData.GameDay
-
-    //读取金币
-    this.Golden = this.readData.Golden
-    //读取钻石
-    this.Diamond = this.readData.Diamond
-    // cc.log('this.readData.Diamond', this.readData.Diamond);
-    //读取工人等级
-    this.WorkerLV = this.readData.WorkerLV
-    //工人数量
-    this.WorkerNum = this.readData.WorkerNum
-    //工人容量
-    this.WorkerCapacity = this.readData.WorkerCapacity
-    this.GameDate = this.readData.GameDate
-    this.LastTimeEveryDayRewardsDate = this.readData.LastTimeEveryDayRewardsDate
-    this.LastTimeLuckDate = this.readData.LastTimeLuckDate
-    this.EveryDayRewardsArray = this.readData.EveryDayRewardsArray //.split('_');
-    this.TerritoryStateArray = this.readData.TerritoryStateArray //.split('_');
-    //面板状态
-    this.BuildingStateArray = this.readData.BuildingStateArray //.split('_');
-
-    //解锁设置为 不用解锁
-    // this.BuildingLockStateArray.forEach((value, index, array) => {
-    //     array[index] = 1;
-    // })
-    this.BuildingLockStateArray = this.readData.BuildingLockStateArray //.split('_');
-    this.BuildingNumArray = this.readData.BuildingNumArray //.split('_');
-    this.DiamondNumArray = this.readData.DiamondNumArray //.split('_');
-    this.FoodTradeState = this.readData.FoodTradeState
-    this.WoodTradeState = this.readData.WoodTradeState
-    this.MineralTradeState = this.readData.MineralTradeState
-    //工人工作信息
-    if (this.readData.characterInfoArray) {
-      this.CharacterInfoArray = this.readData.characterInfoArray
-    } else {
-      this.CharacterInfoArray = []
-    }
-    //道路数据
-    if (this.readData.highwayIndex)
-      this.GameData_highwayIndex = this.readData.highwayIndex
-
-    //建筑物数据
-    if (this.readData.buildingsInfo)
-      this.GameData_buildings = this.readData.buildingsInfo
-
-    this.LotteryTimes = this.readData.LotteryTimes
-    //任务
-    if (this.readData.TaskIconCountClick)
-      task.TaskIconCountClick = this.readData.TaskIconCountClick
-  },
-  /**
-   * 初始化
-   */
-  Init: function () {
-    let _BFirstLoadGame = false //  this.readData ? this.readData.BFirstLoadGame : 0;
-    //date
-    this.GameYear = 0
-    this.GameMonth = 0
-    this.GameDay = 0
-    this.GameDate = '0000/00/01'
     /**
-     * 新增 CNT 和 SNB
+     * 支付cnt操作
+     * @param {*} amount // 需支付金额
+     * @param {*} payType 支付类型,1购买土地租凭, 2自然灾害防护,3野兽防护
+     * @param {*} itemType 操作物品的id 字符串
      */
-    this.CNT = 0
-    this.SNB = 0
-    this.Golden = 2000
-    this.Diamond = 100
-    this.WorkerLV = 0
-    this.WorkerNum = 0
-    this.CharacterInfoArray = []
-    this.WorkerCapacity = 5
-    this.TerritoryStateArray = [1, 1, 1, 1, 1, 1, 1, 1] //测试,全开地图
+    payCNT(cntAmount, payType, itemType, callback) {
+        console.log("购买金额:" + cntAmount + "购买类型PlayType:" + payType + "购买物品的id:" + itemType);
+        if (!GlobalD.dapp) {
+            console.warn("GlobalD.dapp未初始化,不能payCNT!");
+            return;
+        }
+        //
+        if (this.isPlayingCnt) {
+            console.warn("同时触发支付CNT过快!");
+            return;
+        }
+        if (GlobalD.GameData.GetCNT() < cntAmount) {
+            console.log("cnt 不足,GetCNT:" + GlobalD.GameData.GetCNT() + "消费的cntAmount" + cntAmount);
+            GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), "CNT不足!", 2, () => {
+                console.log("finish toast! CNT不足!");
+            });
+            return;
+        }
+        this.isPlayingCnt = true;
+        GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), "支付处理中...", 5, () => {
+            console.log("finish toast!支付处理中...");
+        });
+
+        GlobalD.dapp.payCnt(cntAmount, payType, itemType).then((data) => {
+            const [err, tx] = data;
+            this.isPlayingCnt = false;
+            if (err === null) {
+                // TODO 成功, 支付为链上操作,需要提供回调接口给这边服务端确认交易成功后修改购买订单结果
+                console.log(tx) // 交易hash,唯一标识符
+
+                GlobalD.dapp.cntBalance().then((cntBalance) => {
+                    //会延迟返回
+                    // console.log("更新cnt:" + cntBalance) // string, 精度18,需要自行处理省略几位小数
+                    GlobalD.GameData.SetCNT(cntBalance);
+                });
+                GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), "支付成功!", 5, () => {
+                    GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), "区块确认中,请耐心等待!", 120);
+                });
+
+
+            } else {
+                console.log(err)
+                GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), err, 2, () => {
+                    console.log("finish toast!");
+                });
+            }
+
+            if (callback) {
+                callback(data);
+            }
+        });
+    },
+
     /**
-     * 添加建筑往后添加,到时候ManageBuildings 脚本 会初始化根据顺序
-     * BuildingStateArray---相关 GetBuildingStateArray 获取建筑状态
-     * BuildingNumArray  ---相关 GetBuildingNumArray 获取建筑数量
-     * BuildingFrameArray ---相关 ManageUI  添加面板是否解锁之类的相关预制
+     * 神农呗转换CNT ,比例是5:1
+     * @param {*} snbAmount 
+     * @param {*} callback 
+     * @returns 
      */
-    this.BuildingStateArray = [
-      1, //公路
-      1, //路铲
-      1, //拆迁
-      1, //农舍
-      1, //单元楼
-      1, //别墅
-      1, //农田
-      1, //伐木场
-      1, //矿坑
-      1, //加工厂
-      1, //冷饮摊
-      1, //贩卖机
-      1, //面包房
-      1, //早餐车
-      1, //饮茶店
-      1, //点心店
-      1, //美食店
-      1, //西餐厅
-      1, //花店
-      1, //美发店
-      1, //洋装店
-      1, //珠宝店
-      1, //电影院
-      1, //路灯
-      1, //绿化带
-      1, //花坛
-      1, //喷泉
-      1, //警察局
-      1, //游乐场
-      1, //蓝色城堡
-      1, //粉色城堡
-      1, //Holy Farmland
-      1, //Holy Farmland seed
-    ]
-    this.BuildingLockStateArray = [
-      1, //公路
-      1, //路铲
-      1, //拆迁
-      1, //农舍
-      0, //单元楼
-      0, //别墅
-      1, //农田
-      0, //伐木场
-      0, //矿坑
-      1, //加工厂
-      0, //冷饮摊
-      0, //贩卖机
-      0, //面包房
-      0, //早餐车
-      0, //饮茶店
-      0, //点心店
-      0, //美食店
-      0, //西餐厅
-      0, //花店
-      0, //美发店
-      0, //洋装店
-      0, //珠宝店
-      0, //电影院
-      1, //路灯
-      1, //绿化带
-      1, //花坛
-      0, //喷泉
-      0, //警察局
-      0, //游乐场
-      0, //蓝色城堡
-      0, //粉色城堡
-      1, //Holy Farmland
-      1, //Holy Farmland seed
-    ]
-    //建筑物数量
-    this.BuildingNumArray = [
-      0, //公路
-      0, //路铲
-      0, //拆迁
-      4, //农舍
-      1, //单元楼
-      1, //别墅
-      4, //农田
-      1, //伐木场
-      1, //矿坑
-      2, //加工厂
-      2, //冷饮摊
-      1, //贩卖机
-      1, //面包房
-      1, //早餐车
-      1, //饮茶店
-      1, //点心店
-      1, //美食店
-      1, //西餐厅
-      1, //花店
-      1, //美发店
-      1, //洋装店
-      1, //珠宝店
-      1, //电影院
-      1, //路灯
-      1, //绿化带
-      1, //花坛
-      1, //喷泉
-      1, //警察局
-      1, //游乐场
-      1, //蓝色城堡
-      1, //粉色城堡
-      1, //Holy Farmland
-      1, //Holy Farmland seed
-    ]
-
-    this.DiamondNumArray = AConfig.DiamondArray
-    //todo 钻石消耗默认值
-    this.DiamondNumArray.forEach((value, index, array) => {
-      array[index] = 0
-    })
-    cc.log('钻石消耗默认值', this.DiamondNumArray)
-    this.EveryDayRewardsArray = [0, 0, 0, 0, 0, 0, 0]
-
-    this.LastTimeEveryDayRewardsDate = '0000/00/00'
-    this.LastTimeLuckDate = '0000/00/00'
-
-    this.FoodTradeState = 1
-    this.WoodTradeState = 1
-    this.MineralTradeState = 1
-    //转盘分享给钻石金币
-    this.shareGive = [200, 5]
-    //签到分享给钻石金币
-    this.signInGive = [200, 5]
-    //每个月 给的 低保
-    this.EveryGive = [500, 10]
-    //公共分享
-    this.publicGive = [200, 50]
-    //每天抽奖次数
-    this.LotteryTimes = 10
-
-    // 1 === _BFirstLoadGame
-    if (_BFirstLoadGame) {
-      console.log('this.readData', this.readData)
-      // cc.log('初始化网络数据');
-      //读取日期数据
-      this.GameYear = this.readData.GameYear
-      this.GameMonth = this.readData.GameMonth
-      this.GameDay = this.readData.GameDay
-
-      /**
-       * 接口
-       * todo cnt和snb 由钱包读取
-       */
-      this.CNT = 0
-      this.SNB = 0
-
-      //读取金币
-      this.Golden = this.readData.Golden
-      //读取钻石
-      this.Diamond = this.readData.Diamond
-      // cc.log('this.readData.Diamond', this.readData.Diamond);
-      //读取工人等级
-      this.WorkerLV = this.readData.WorkerLV
-      //工人数量
-      this.WorkerNum = this.readData.WorkerNum
-      //工人容量
-      this.WorkerCapacity = this.readData.WorkerCapacity
-      this.GameDate = this.readData.GameDate
-      this.LastTimeEveryDayRewardsDate =
-        this.readData.LastTimeEveryDayRewardsDate
-      this.LastTimeLuckDate = this.readData.LastTimeLuckDate
-      this.EveryDayRewardsArray = this.readData.EveryDayRewardsArray //.split('_');
-      this.TerritoryStateArray = this.readData.TerritoryStateArray //.split('_');
-      //面板状态
-      this.BuildingStateArray = this.readData.BuildingStateArray //.split('_');
-
-      //解锁设置为 不用解锁
-      this.BuildingLockStateArray.forEach((value, index, array) => {
-        array[index] = 1
-      })
-      // this.BuildingLockStateArray = this.readData.BuildingLockStateArray.split('_');
-      this.BuildingNumArray = this.readData.BuildingNumArray //.split('_');
-      this.DiamondNumArray = this.readData.DiamondNumArray //.split('_');
-      this.FoodTradeState = this.readData.FoodTradeState
-      this.WoodTradeState = this.readData.WoodTradeState
-      this.MineralTradeState = this.readData.MineralTradeState
-
-      //工人工作信息
-      if (this.readData.characterInfoArray)
-        this.CharacterInfoArray = this.readData.characterInfoArray
-      //道路数据
-      if (this.readData.highwayIndex)
-        this.GameData_highwayIndex = this.readData.highwayIndex
-
-      //建筑物数据
-      if (this.readData.buildingsInfo)
-        this.GameData_buildings = this.readData.buildingsInfo
-
-      this.LotteryTimes = this.readData.LotteryTimes
-      //任务
-      if (this.readData.TaskIconCountClick)
-        task.TaskIconCountClick = this.readData.TaskIconCountClick
-      //测试5W
-      // this.PlusDiamond(50000);
-    }
+    onSnbToCnt(snbAmount, callback) {
+        if (!GlobalD.dapp) {
+            console.warn("GlobalD.dapp未初始化,不能onSnbToCnt!");
+            return;
+        }
+        // GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), "暂不支持兑换CNT!", 2, () => {
+        //     console.log("finish toast!");
+        // });
+        // return;
+        if (this.isPlayingSnb) {
+            console.warn("同时触发支付SNB过快!");
+            return;
+        }
+        if (GlobalD.GameData.GetSNB() <= 0) {
+            console.log("神农呗数量GetSNB:", GlobalD.GameData.GetSNB(), "替换snbAmount:", snbAmount);
+            GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), "神农呗数量不足!", 2, () => {
+                console.log("finish toast!");
+            });
+            return;
+        }
 
-    //如果用户未租赁过土地且未用钻石兑换过种子,则显示
-    console.log('土地租赁情况' + GlobalD.UserLeaseLand)
-    if (GlobalD.UserLeaseLand == null) {
-      this.ManageUI.getComponent('ManageUI').DiamondGapViewShow()
-    }
-  },
-
-  //GET / SET /Plus
-  GetGameDate: function () {
-    return this.GameDate
-  },
-  SetGameDate: function (num) {
-    this.GameDate = num
-  },
-  PlusGameDate: function (num) {
-    this.GameDate += num
-  },
-  GetGolden: function () {
-    return parseInt(this.Golden)
-  },
-  GetGoldenCallBack(_CallBack) {
-    if (_CallBack) _CallBack({ resGolden: parseInt(this.Golden) })
-  },
-  SetGolden: function (Num) {
-    let LastMoney = this.Golden
-    this.Golden = Num
-    let CurrentMoney = Num
-    this.ManageUI.getComponent('ManageUI').GoldenChangeCallBack(
-      this.GetGolden(),
-      LastMoney,
-      CurrentMoney
-    )
-  },
-  PlusGolden: function (Num) {
-    if (this.Golden + Num < 0) {
-      this.SetGolden(0)
-    } else {
-      this.SetGolden(this.Golden + Num)
-    }
-    // task.task50W();
-  },
-  GetDiamond: function () {
-    return parseInt(this.Diamond)
-  },
-  SetDiamond: function (num) {
-    let LastMoney = this.Diamond
-    this.Diamond = num
-    let CurrentMoney = num
-    this.ManageUI.getComponent('ManageUI').DiamondChangeCallBack(
-      this.GetDiamond(),
-      LastMoney,
-      CurrentMoney
-    )
-  },
-  PlusDiamond: function (num) {
-    if (this.Diamond + num < 0) {
-      this.SetDiamond(0)
-    } else {
-      this.SetDiamond(this.Diamond + num)
-    }
-  },
-
-  /**
-   * 游戏里面的cnt 和神农呗
-   */
-  GetCNT: function () {
-    return parseFloat(this.CNT)
-  },
-  SetCNT: function (Num) {
-    this.CNT = Num
-    this.ManageUI.getComponent('ManageUI').CNTChangeCallBack(this.CNT)
-  },
-  GetSNB: function () {
-    return parseFloat(this.SNB)
-  },
-  SetSNB: function (Num) {
-    this.SNB = Num
-    this.ManageUI.getComponent('ManageUI').SNBChangeCallBack(this.SNB)
-  },
-
-  GetWorkerLV: function () {
-    return parseInt(this.WorkerLV)
-  },
-  SetWorkerLV: function (num) {
-    this.WorkerLV = num
-  },
-  PlusWorkerLV: function (num) {
-    this.WorkerLV += num
-  },
-  GetWorkerNum: function () {
-    return parseInt(this.WorkerNum)
-  },
-  SetWorkerNum: function (num) {
-    this.WorkerNum = num
-  },
-  PlusWorkerNum: function (num) {
-    this.WorkerNum += num
-  },
-  GetLastTimeEveryDayRewardsDate: function () {
-    return this.LastTimeEveryDayRewardsDate
-  },
-  //获取转盘 时间
-  GetLastTimeLuckDate: function () {
-    return this.LastTimeLuckDate
-  },
-  //设置转盘时间
-  SetLastTimeLuckDate: function (DateString) {
-    this.LastTimeLuckDate = DateString
-  },
-  SetLastTimeEveryDayRewardsDate: function (DateString) {
-    this.LastTimeEveryDayRewardsDate = DateString
-  },
-
-  //工人信息数组
-  GetWorkerCharacterInfoArray: function () {
-    return this.CharacterInfoArray
-  },
-  SetWorkerCharacterInfoArray: function (item) {
-    this.CharacterInfoArray = item
-  },
-
-  /*** */
-  GetWorkerCapacity: function () {
-    return parseInt(this.WorkerCapacity)
-  },
-  SetWorkerCapacity: function (num) {
-    this.WorkerCapacity = num
-  },
-  PlusWorkerCapacity: function (num) {
-    this.WorkerCapacity += num
-  },
-  GetTerritoryStateArray: function () {
-    return this.TerritoryStateArray
-  },
-  SetTerritoryStateArray: function (aTerritoryStateArray) {
-    this.TerritoryStateArray = aTerritoryStateArray
-  },
-  PlusTerritoryStateArray: function (Item) {
-    this.TerritoryStateArray.push(Item)
-  },
-  GetBuildingStateArray: function () {
-    return this.BuildingStateArray
-  },
-  SetBuildingStateArray: function (aBuildingStateArray) {
-    this.BuildingStateArray = aBuildingStateArray
-  },
-  PlusBuildingStateArray: function (Item) {
-    this.BuildingStateArray.push(Item)
-  },
-  GetBuildingLockStateArray: function () {
-    return this.BuildingLockStateArray
-  },
-  SetBuildingLockStateArray: function (aArray) {
-    this.BuildingLockStateArray = aArray
-  },
-  PlusBuildingLockStateArray: function (Item) {
-    this.BuildingLockStateArray.push(Item)
-  },
-
-  GetBuildingNumArray: function () {
-    return this.BuildingNumArray
-  },
-  SetBuildingNumArray: function (aBuildingNumArray) {
-    this.BuildingNumArray = aBuildingNumArray
-  },
-  PlusBuildingNumArray: function (Item) {
-    this.BuildingNumArray.push(Item)
-  },
-  //操作钻石数据
-  GetDiamondNumArray: function () {
-    return this.DiamondNumArray
-  },
-  SetDiamondNumArray: function (aDiamondNumArray) {
-    this.DiamondNumArray = aDiamondNumArray
-  },
-  GetEveryDayRewardsArray: function () {
-    return this.EveryDayRewardsArray
-  },
-  SetEveryDayRewardsArray: function (aArray) {
-    this.EveryDayRewardsArray = aArray
-  },
-  PlusEveryDayRewardsArray: function (Item) {
-    this.EveryDayRewardsArray.push(Item)
-  },
-  GetFoodTradeState: function () {
-    return parseInt(this.FoodTradeState)
-  },
-  SetFoodTradeState: function (num) {
-    this.FoodTradeState = num
-  },
-  PlusFoodTradeState: function (num) {
-    this.FoodTradeState += num
-  },
-  GetWoodTradeState: function () {
-    return parseInt(this.WoodTradeState)
-  },
-  SetWoodTradeState: function (num) {
-    this.WoodTradeState = num
-  },
-  PlusWoodTradeState: function (num) {
-    this.WoodTradeState += num
-  },
-  GetMineralTradeState: function () {
-    return parseInt(this.MineralTradeState)
-  },
-  SetMineralTradeState: function (num) {
-    this.MineralTradeState = num
-  },
-  PlusMineralTradeState: function (num) {
-    this.MineralTradeState += num
-  },
-  GetLotteryTimes: function () {
-    return parseInt(this.LotteryTimes)
-  },
-  SetLotteryTimes: function (num) {
-    this.LotteryTimes = num
-  },
-  PlusLotteryTimes: function (num) {
-    this.LotteryTimes += num
-  },
-
-  //初始化道路
-  onSpawnHighway() {
-    // 获取InitPoint层
-    let InitPos = this._tiledMap.getLayer('InitPoint')
-    InitPos.enabled = false
-
-    //创建公路数据
-    if (this.readData && this.readData.allHighwayStylesAndIndex) {
-      //保存到内存中
-      this.GameData_highwayIndex = this.readData.highwayIndex
-      //先赋值道路的对象数组
-      let _AllHighwayAIndex = Object.assign(
-        [],
-        this.readData.allHighwayStylesAndIndex
-      )
-      //获取最后建造公路的层级
-      this.HighwayLayer = this._tiledMap.getLayer('Highway')
-      for (let i = 0; i < _AllHighwayAIndex.length; i++) {
-        let _tiledPos = GlobalD.TiledMap.analyticalIndexData(
-          _AllHighwayAIndex[i].highwayInfoIndex
-        )
-        /**
-         * 解决固定土地时候,道路 和房子 冲突
-         *
-         */
-        if (
-          GlobalD.game.getManageGameIndexArrayAt(
-            cc.v2(_tiledPos.x, _tiledPos.y)
-          )
-        ) {
-          continue
+        GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), "已发起兑换!", 5, () => {
+            console.log("finish toast!");
+        });
+        this.isPlayingSnb = true;
+        GlobalD.dapp.snbToCnt(snbAmount).then((data) => {
+            //更新日志数据
+            cc.find("GameNode/ManageDapp").getComponent("ManageDapp").onUpdateSnbList();
+            const [err, tx] = data;
+            this.isPlayingSnb = false;
+            if (err === null) {
+                // TODO 成功, 兑换为链上操作,需要提供回调接口给这边服务端确认交易成功后修改扣除SNB数量
+                console.log(tx) // 交易hash,唯一标识符
+                //扣除对应的神农呗,本地修改显示
+                GlobalD.GameData.SetSNB(GlobalD.GameData.GetSNB() - snbAmount);
+
+                GlobalD.dapp.cntBalance().then((cntBalance) => {
+                    //会延迟返回
+                    // console.log("更新cnt:" + cntBalance) // string, 精度18,需要自行处理省略几位小数
+                    GlobalD.GameData.SetCNT(cntBalance);
+                });
+
+
+                GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), "区块确认中,请耐心等待!", 5, () => {
+                    console.log("finish toast!");
+                });
+
+            } else {
+                console.log(err)
+                GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), err, 2, () => {
+                    console.log("finish toast!");
+                });
+            }
+
+            if (callback) {
+                callback(data);
+            }
+        });
+    },
+    //站内收益
+    onCntCanWithdrawBalance(callback) {
+        if (!GlobalD.dapp) {
+            console.warn("GlobalD.dapp未初始化,不能onGetCNTRevenue!");
+            return;
         }
-        let highwayTemp = cc.instantiate(this.HighWayPrefabs)
-        highwayTemp.parent = this.HighwayLayer.node
-        let tiledTile = highwayTemp.addComponent('TiledTile')
-        tiledTile.x = _tiledPos.x
-        tiledTile.y = _tiledPos.y
-        //地图设置可行走区域公路设置
-        AStar.setMapSolid(_tiledPos.x, _tiledPos.y, 0)
-        // _buildId ==0 是公路
-        let _buildId = 0
-        let occupyTemp = cc.v2(_buildId, _AllHighwayAIndex[i].highwayInfoIndex)
-        GlobalD.game.OccupyArray.push(occupyTemp)
-        highwayTemp
-          .getComponent('HighwayInfo')
-          .onChangeHighwayStyles(_AllHighwayAIndex[i].highwayInfoType)
-
-        GlobalD.game.AllHighwayStylesAndIndex.push(_AllHighwayAIndex[i])
-      }
-      // console.log("end");
-    } else {
-      //如果用户没有存储数据
-      //根据InitPoint 的数据,创建初始化的地图数据 的初始化数据
-
-      this.HighwayLayer = this._tiledMap.getLayer('Highway')
-      for (var i = 0; i < 32; i++) {
-        //去除中间两条路
-        if (i == 16 || i == 17) continue
-        for (var j = 0; j < 32; j++) {
-          let tilesPos = cc.v2(i, j)
-
-          if (InitPos.getTileGIDAt(tilesPos)) {
-            let index = GlobalD.TiledMap.getIndex(tilesPos)
-            this.GameData_highwayIndex.push(index)
-
-            let highwayTemp = cc.instantiate(this.HighWayPrefabs)
-            highwayTemp.parent = this.HighwayLayer.node
-            let tiledTile = highwayTemp.addComponent('TiledTile')
-            tiledTile.x = tilesPos.x
-            tiledTile.y = tilesPos.y
-            // cc.log('onSpawnHighway2');
-            //地图设置可行走区域公路设置
-            AStar.setMapSolid(tilesPos.x, tilesPos.y, 0)
-            // _buildId ==0 是公路
-            let _buildId = 0
-            let occupyTemp = cc.v2(_buildId, index)
-            GlobalD.game.OccupyArray.push(occupyTemp)
-
-            let tile = InitPos.getTiledTileAt(tilesPos.x, tilesPos.y, true)
-
-            let _MoveType = reGameStates.HighwayType.moveX
-            // if (tile.gid == 15) {
-            //     _MoveType = reGameStates.HighwayType.moveX;
-            // } else
-            if (tile.gid == 16) {
-              _MoveType = reGameStates.HighwayType.moveY
-            } else if (tile.gid == 11) {
-              _MoveType = reGameStates.HighwayType.ZebraCrossingX
-            } else if (tile.gid == 12) {
-              _MoveType = reGameStates.HighwayType.ZebraCrossingY
+        GlobalD.dapp.cntCanWithdrawBalance().then((data) => {
+            const { err, res } = data;
+            if (err === null) {
+                console.log(res) //Number 返回数字
+                GlobalD.GameData.CNTDrawBalance = res;
             }
-            // return;
-            //更换公路样式
-            GlobalD.game.onCreateDifferentRoadStyles({
-              _buildId: _buildId,
-              _highwayType: _MoveType,
-              _roadIndex: index,
-              _hightwayNode: highwayTemp,
-            })
-          }
+            //todo ,记录一个信息
+            if (callback) {
+                callback(data);
+            }
+        });
+    },
+    //站内收益提现
+    onCntWithdraw(amount, callback) {
+        if (!GlobalD.dapp) {
+            console.warn("GlobalD.dapp未初始化,不能onCntWithdraw!");
+            return;
         }
-      }
-    }
-    //外面的两条路
-    let initRoad = this._tiledMap.getLayer('Road')
-    initRoad.enabled = false
-    for (var i = 16; i < 18; i++) {
-      for (var j = 0; j < 32; j++) {
-        let tilesPos = cc.v2(i, j)
-        // cc.log('road tilesPos',tilesPos)
-        if (initRoad.getTileGIDAt(tilesPos)) {
-          let index = GlobalD.TiledMap.getIndex(tilesPos)
-          this.GameData_highwayIndex.push(index)
-          let highwayTemp = cc.instantiate(this.HighWayPrefabs)
-          highwayTemp.parent = this.HighwayLayer.node
-          let tiledTile = highwayTemp.addComponent('TiledTile')
-          tiledTile.x = tilesPos.x
-          tiledTile.y = tilesPos.y
-          // cc.log('initRoad');
-          //地图设置可行走区域公路设置
-          AStar.setMapSolid(tilesPos.x, tilesPos.y, 0)
-          let _buildId = 0
-          let occupyTemp = cc.v2(_buildId, index)
-          GlobalD.game.OccupyArray.push(occupyTemp)
-          //更换公路样式
-          // if (j >= 25 && j <= 27 || j >= 19 && j <= 21 || j >= 9 && j <= 11)
-          //     highwayTemp.getComponent('HighwayInfo').onChangeHighwayStyles(reGameStates.HighwayType.none);
-          // else
-          //     highwayTemp.getComponent('HighwayInfo').onChangeHighwayStyles(reGameStates.HighwayType.moveY);
+        GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), "收益正在提现中", 10, () => {
+            console.log("finish toast!");
+        });
+        GlobalD.dapp.cntWithdraw(amount).then((data) => {
+            const [err, tx] = data;
+            console.log("onCntWithdraw:", data);
+            if (err === null) {
+                console.log(tx) //String|null 交易唯一哈市
+                GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), "提现成功!", 1, () => {
+                    console.log("finish toast!");
+                });
+            } else {
+                GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), err, 1, () => {
+                    console.log("finish toast!");
+                });
+            }
+            if (callback) {
+                callback(data);
+            }
+        });
+    },
+
+    //获取账户站内CNT明细(村长和镇长才有)
+    onCntLog(page, limit, callback) {
+        if (!GlobalD.dapp) {
+            console.warn("GlobalD.dapp未初始化,不能onGetSnbToCntInfo!");
+            return;
         }
-      }
-    }
-  },
-
-  //清除所有的数据
-  onClearAllData() {
-    this.unschedule(this.AutoSaveData)
-    //任务索引
-    cc.sys.localStorage.removeItem('userdata')
-    //跳回登录场景
-    // cc.director.loadScene('Login');
-  },
-  //保存数据请求
-  /**
-   *
-   * 现在转服务器存储,原本所有相关操作通过服务器计算。
-   * 一、目前涉及到的是 SNT 和 SNB 两个货币相关,和买田地操作 (可以理解为租聘,三种类型)
-   *
-   * isNetwork:true,上传到网络
-   *
-   */
-  pushData: function (isNetwork) {
-    // cc.log(this.EveryDayRewardsArray);
-    // console.log(this.readData.BFirstLoadGame);
-    var datas = {
-      version: this.GameVersion,
-      // 转后台处理
-      BFirstLoadGame: 1, //只要push数据,就证明已经开始第一次游戏了
-
-      /**游戏不修改,默认值 start */
-      shareGive: this.shareGive,
-      //签到分享给钻石金币
-      signInGive: this.signInGive,
-      //每个月 给的 低保
-      EveryGive: this.EveryGive,
-      //公共分享
-      publicGive: this.publicGive,
-      /**游戏不修改,默认值 end */
-
-      //时间
-      GameYear: this.GameYear,
-      GameMonth: this.GameMonth,
-      GameDay: this.GameDay,
-
-      //这里只是单纯的存储起来
-      CNT: this.CNT,
-      SNB: this.SNB,
-
-      Golden: this.Golden,
-      Diamond: this.Diamond,
-      WorkerLV: this.WorkerLV,
-      WorkerNum: this.WorkerNum,
-      WorkerCapacity: this.WorkerCapacity,
-      GameDate: this.GameDate,
-      LastTimeEveryDayRewardsDate: this.LastTimeEveryDayRewardsDate,
-      LastTimeLuckDate: this.LastTimeLuckDate,
-      EveryDayRewardsArray: this.EveryDayRewardsArray, //.join('_'),
-      TerritoryStateArray: this.TerritoryStateArray, //.join('_'),
-      //面板状态
-      BuildingStateArray: this.BuildingStateArray, //.join('_'),
-      BuildingLockStateArray: this.BuildingLockStateArray, //.join('_'),
-
-      /**
-       * SNB和CNT相关,需要后台筛选 田地 和 种子。单独处理
-       */
-      BuildingNumArray: this.BuildingNumArray, //.join('_'),
-      DiamondNumArray: this.DiamondNumArray, //.join('_'),
-      FoodTradeState: this.FoodTradeState,
-      WoodTradeState: this.WoodTradeState,
-      MineralTradeState: this.MineralTradeState,
-
-      LotteryTimes: this.LotteryTimes,
-
-      /**
-       * 这些数据不用服务器初始化
-       */
-      //工人工作信息
-      characterInfoArray: this.CharacterInfoArray,
-      //道路数据
-      highwayIndex: this.GameData_highwayIndex,
-      allHighwayStylesAndIndex: GlobalD.game.AllHighwayStylesAndIndex,
-      //建筑物数据
-      buildingsInfo: this.GameData_buildings,
-      //任务
-      TaskIconCountClick: task.TaskIconCountClick,
-    }
+        GlobalD.dapp.cntLog(page, limit).then((data) => {
+            const { err, res } = data;
+            // if (err === null) {
+            //     console.log(res) //
+            // }
+            if (callback) {
+                callback(data);
+            }
+        });
+    },
 
-    if (isNetwork) {
-      var data = []
-      // data["openid"] = userData.openId;
-      // data["userdata"] = JSON.stringify(datas);
-      data['playerData'] = JSON.stringify(datas)
-
-      /** 推送信息 */
-      utils.post(utils.api.playerPushInfo, data, (res, playerPushInfoTemp) => {
-        // console.log('playerPushInfoTemp', playerPushInfoTemp);
-      })
-    } else {
-      console.log('存储本地:' + isNetwork)
-      //保存用户数据到本地
-      cc.sys.localStorage.setItem('userdata', JSON.stringify(datas))
-    }
-  },
-
-  /**
-   * 暂时不需要从这里读取
-   */
-  getLandConfig() {
-    utils.get(utils.api.landConfig, {}, (res, value) => {
-      if (0 === value.code) {
-        this.ConfigLand = value.data
-      } else {
-        console.warn('未能读取到config土地?')
-      }
-    })
-  },
-  //获取用户全部租赁土地
-  getUserLandList() {
-    utils.get(utils.api.userLandList, {}, (res, vaule) => {})
-  },
-  //获取用户已租赁土地的状态
-  getLandState(context) {
-    let { landId, callback } = context
-    utils.get(utils.api.landState, { landId: landId }, (res, vaule) => {
-      callback(res, vaule)
-    })
-  },
-  //获取商城种子
-  getMallSeed(callback) {
-    utils.get(utils.api.mallSeed, {}, (res, vaule) => {
-      callback(res, vaule)
-    })
-  },
-
-  getWarehouseSeedAndFruit(callback) {
-    utils.get(utils.api.getSeedAndFruit, {}, (res, vaule) => {
-      callback(res, vaule)
-    })
-  },
-  //获取种子状态
-  onGetSeedState(data, callback) {
-    utils.get(utils.api.getSeedState, data, (res, vaule) => {
-      callback(res, vaule)
-    })
-  },
-
-  //种植种子
-  // data:{landId:1,seedId:1}
-  onPlant(data, callback) {
-    utils.get(utils.api.plant, data, (res, vaule) => {
-      callback(res, vaule)
-    })
-  },
-
-  //收取果实
-  onAddFruit(data, callback) {
-    if (this.isOnAddFruit) {
-      console.log('收取果实过快!')
-      return
-    }
-    this.isOnAddFruit = true
-    utils.post(utils.api.addFruit, data, (res, vaule) => {
-      this.isOnAddFruit = false
-      callback(res, vaule)
-    })
-  },
-
-  //出售果实
-  onSaleFruit(data, callback) {
-    if (this.isOnSaleFruit) {
-      console.log('出售果实过快!')
-      return
-    }
-    this.isOnSaleFruit = true
-    utils.post(utils.api.saleFruit, data, (res, vaule) => {
-      this.isOnSaleFruit = false
-      callback(res, vaule)
-    })
-  },
-
-  //赠送果实
-  onGrantFruit(data, callback) {
-    if (this.isOnGrantFruit) {
-      console.log('赠送果实过快!')
-      return
-    }
-    this.isOnGrantFruit = true
-    utils.post(utils.api.grantFruit, data, (res, vaule) => {
-      this.isOnGrantFruit = false
-      callback(res, vaule)
-    })
-  },
-
-  //神农呗购买种子
-  onBuySeedsWithSNB(snbAmount, seedId, callback) {
-    utils.post(
-      utils.api.snbBuySeeds,
-      { payAmount: snbAmount, seedId: seedId },
-      (res, vaule) => {
-        callback(res, vaule)
-      }
-    )
-  },
-
-  //获取用户的snb
-  onGetUserSnb(callback) {
-    utils.get(utils.api.userSnbInfo, {}, (res, value) => {
-      GlobalD.GameData.SetSNB(value.data.SNB)
-      if (callback) callback(res, value)
-    })
-  },
-
-  /**
-   * 支付cnt操作
-   * @param {*} amount // 需支付金额
-   * @param {*} payType 支付类型,1购买土地租凭, 2自然灾害防护,3野兽防护
-   * @param {*} itemType 操作物品的id 字符串
-   */
-  payCNT(cntAmount, payType, itemType, callback) {
-    console.log(
-      '购买金额:' +
-        cntAmount +
-        '购买类型PlayType:' +
-        payType +
-        '购买物品的id:' +
-        itemType
-    )
-    if (!GlobalD.dapp) {
-      console.warn('GlobalD.dapp未初始化,不能payCNT!')
-      return
-    }
-    //
-    if (this.isPlayingCnt) {
-      console.warn('同时触发支付CNT过快!')
-      return
-    }
-    if (GlobalD.GameData.GetCNT() < cntAmount) {
-      console.log(
-        'cnt 不足,GetCNT:' +
-          GlobalD.GameData.GetCNT() +
-          '消费的cntAmount' +
-          cntAmount
-      )
-      GlobalD.GameData.showToast(
-        cc.find('Canvas/UICamera'),
-        'CNT不足!',
-        2,
-        () => {
-          console.log('finish toast! CNT不足!')
+    //获取 神农呗转 CNT 日志
+    onGetSnbToCntInfo(page, limit, callback) {
+        if (!GlobalD.dapp) {
+            console.warn("GlobalD.dapp未初始化,不能onGetSnbToCntInfo!");
+            return;
         }
-      )
-      return
-    }
-    this.isPlayingCnt = true
-    GlobalD.GameData.showToast(
-      cc.find('Canvas/UICamera'),
-      '支付处理中...',
-      5,
-      () => {
-        console.log('finish toast!支付处理中...')
-      }
-    )
-
-    GlobalD.dapp.payCnt(cntAmount, payType, itemType).then((data) => {
-      const [err, tx] = data
-      this.isPlayingCnt = false
-      if (err === null) {
-        // TODO 成功, 支付为链上操作,需要提供回调接口给这边服务端确认交易成功后修改购买订单结果
-        console.log(tx) // 交易hash,唯一标识符
-
-        GlobalD.dapp.cntBalance().then((cntBalance) => {
-          //会延迟返回
-          // console.log("更新cnt:" + cntBalance) // string, 精度18,需要自行处理省略几位小数
-          GlobalD.GameData.SetCNT(cntBalance)
-        })
-        GlobalD.GameData.showToast(
-          cc.find('Canvas/UICamera'),
-          '支付成功!',
-          5,
-          () => {
-            GlobalD.GameData.showToast(
-              cc.find('Canvas/UICamera'),
-              '区块确认中,请耐心等待!',
-              120
-            )
-          }
-        )
-      } else {
-        console.log(err)
-        GlobalD.GameData.showToast(cc.find('Canvas/UICamera'), err, 2, () => {
-          console.log('finish toast!')
+        GlobalD.dapp.swapLog(page, limit).then((data) => {
+            const { err, res } = data;
+            if (err === null) {
+                console.log(res) //
+            }
+            if (callback) {
+                callback(data);
+            }
+        });
+    },
+
+    //获取 snb 流水日志
+    onGetSnbInfoList(page, limit, callback) {
+
+        utils.get(utils.api.snbList, { page: page, limit: limit }, (res, value) => {
+            // console.log("snb操作日志", value);
+            if (0 === value.code) {
+                if (callback)
+                    callback(value.data);
+            } else {
+                let mySnbList = [];
+                if (callback)
+                    callback(mySnbList);
+            }
+
         })
-      }
-
-      if (callback) {
-        callback(data)
-      }
-    })
-  },
-
-  /**
-   * 神农呗转换CNT ,比例是5:1
-   * @param {*} snbAmount
-   * @param {*} callback
-   * @returns
-   */
-  onSnbToCnt(snbAmount, callback) {
-    if (!GlobalD.dapp) {
-      console.warn('GlobalD.dapp未初始化,不能onSnbToCnt!')
-      return
-    }
-    // GlobalD.GameData.showToast(cc.find("Canvas/UICamera"), "暂不支持兑换CNT!", 2, () => {
-    //     console.log("finish toast!");
-    // });
-    // return;
-    if (this.isPlayingSnb) {
-      console.warn('同时触发支付SNB过快!')
-      return
-    }
-    if (GlobalD.GameData.GetSNB() <= 0) {
-      console.log(
-        '神农呗数量GetSNB:',
-        GlobalD.GameData.GetSNB(),
-        '替换snbAmount:',
-        snbAmount
-      )
-      GlobalD.GameData.showToast(
-        cc.find('Canvas/UICamera'),
-        '神农呗数量不足!',
-        2,
-        () => {
-          console.log('finish toast!')
+    },
+
+
+
+    updateToast() {
+        if (this.toastEndTime <= 0) {
+            this.toast.active = false
+            if (this.isStart) {
+                if (this.toastCallback != null && this.toastCallback != undefined) {
+                    this.toastCallback();
+                    // console.log(this.toastCallback);
+                }
+                this.isStart = false;
+            }
+            // console.log("this.toast.active:" + this.toast.active);
         }
-      )
-      return
-    }
+        this.toastEndTime--;
+    },
 
-    GlobalD.GameData.showToast(
-      cc.find('Canvas/UICamera'),
-      '已发起兑换!',
-      5,
-      () => {
-        console.log('finish toast!')
-      }
-    )
-    this.isPlayingSnb = true
-    GlobalD.dapp.snbToCnt(snbAmount).then((data) => {
-      //更新日志数据
-      cc.find('GameNode/ManageDapp')
-        .getComponent('ManageDapp')
-        .onUpdateSnbList()
-      const [err, tx] = data
-      this.isPlayingSnb = false
-      if (err === null) {
-        // TODO 成功, 兑换为链上操作,需要提供回调接口给这边服务端确认交易成功后修改扣除SNB数量
-        console.log(tx) // 交易hash,唯一标识符
-        //扣除对应的神农呗,本地修改显示
-        GlobalD.GameData.SetSNB(GlobalD.GameData.GetSNB() - snbAmount)
-
-        GlobalD.dapp.cntBalance().then((cntBalance) => {
-          //会延迟返回
-          // console.log("更新cnt:" + cntBalance) // string, 精度18,需要自行处理省略几位小数
-          GlobalD.GameData.SetCNT(cntBalance)
-        })
+    showToast(parent, content, time, callback) {
+        if (callback) {
+            this.toastCallback = callback;
+        } else {
+            this.toastCallback = null;
+        }
 
-        GlobalD.GameData.showToast(
-          cc.find('Canvas/UICamera'),
-          '区块确认中,请耐心等待!',
-          5,
-          () => {
-            console.log('finish toast!')
-          }
-        )
-      } else {
-        console.log(err)
-        GlobalD.GameData.showToast(cc.find('Canvas/UICamera'), err, 2, () => {
-          console.log('finish toast!')
-        })
-      }
-
-      if (callback) {
-        callback(data)
-      }
-    })
-  },
-  //站内收益
-  onCntCanWithdrawBalance(callback) {
-    if (!GlobalD.dapp) {
-      console.warn('GlobalD.dapp未初始化,不能onGetCNTRevenue!')
-      return
-    }
-    GlobalD.dapp.cntCanWithdrawBalance().then((data) => {
-      const { err, res } = data
-      if (err === null) {
-        console.log(res) //Number 返回数字
-        GlobalD.GameData.CNTDrawBalance = res
-      }
-      //todo ,记录一个信息
-      if (callback) {
-        callback(data)
-      }
-    })
-  },
-  //站内收益提现
-  onCntWithdraw(amount, callback) {
-    if (!GlobalD.dapp) {
-      console.warn('GlobalD.dapp未初始化,不能onCntWithdraw!')
-      return
-    }
-    GlobalD.GameData.showToast(
-      cc.find('Canvas/UICamera'),
-      '收益正在提现中',
-      10,
-      () => {
-        console.log('finish toast!')
-      }
-    )
-    GlobalD.dapp.cntWithdraw(amount).then((data) => {
-      const [err, tx] = data
-      console.log('onCntWithdraw:', data)
-      if (err === null) {
-        console.log(tx) //String|null 交易唯一哈市
-        GlobalD.GameData.showToast(
-          cc.find('Canvas/UICamera'),
-          '提现成功!',
-          1,
-          () => {
-            console.log('finish toast!')
-          }
-        )
-      } else {
-        GlobalD.GameData.showToast(cc.find('Canvas/UICamera'), err, 1, () => {
-          console.log('finish toast!')
-        })
-      }
-      if (callback) {
-        callback(data)
-      }
-    })
-  },
-
-  //获取账户站内CNT明细(村长和镇长才有)
-  onCntLog(page, limit, callback) {
-    if (!GlobalD.dapp) {
-      console.warn('GlobalD.dapp未初始化,不能onGetSnbToCntInfo!')
-      return
-    }
-    GlobalD.dapp.cntLog(page, limit).then((data) => {
-      const { err, res } = data
-      // if (err === null) {
-      //     console.log(res) //
-      // }
-      if (callback) {
-        callback(data)
-      }
-    })
-  },
-
-  //获取 神农呗转 CNT 日志
-  onGetSnbToCntInfo(page, limit, callback) {
-    if (!GlobalD.dapp) {
-      console.warn('GlobalD.dapp未初始化,不能onGetSnbToCntInfo!')
-      return
-    }
-    GlobalD.dapp.swapLog(page, limit).then((data) => {
-      const { err, res } = data
-      if (err === null) {
-        console.log(res) //
-      }
-      if (callback) {
-        callback(data)
-      }
-    })
-  },
-
-  //获取 snb 流水日志
-  onGetSnbInfoList(page, limit, callback) {
-    utils.get(utils.api.snbList, { page: page, limit: limit }, (res, value) => {
-      // console.log("snb操作日志", value);
-      if (0 === value.code) {
-        if (callback) callback(value.data)
-      } else {
-        let mySnbList = []
-        if (callback) callback(mySnbList)
-      }
-    })
-  },
-
-  updateToast() {
-    if (this.toastEndTime <= 0) {
-      this.toast.active = false
-      if (this.isStart) {
-        if (this.toastCallback != null && this.toastCallback != undefined) {
-          this.toastCallback()
-          // console.log(this.toastCallback);
+        this.isStart = true;
+        if (this.toast) {
+            // console.log(this.toast.active);
+            this.toast.active = true;
+            this.toast.parent = parent;
+            this.toast.zIndex = 999;
+            let DetailLabel = this.toast.getChildByName('DetailLabel');
+            DetailLabel.getComponent(cc.Label).string = content;
+            this.toastEndTime = time;
         }
-        this.isStart = false
-      }
-      // console.log("this.toast.active:" + this.toast.active);
-    }
-    this.toastEndTime--
-  },
-
-  showToast(parent, content, time, callback) {
-    if (callback) {
-      this.toastCallback = callback
-    } else {
-      this.toastCallback = null
-    }
+    },
 
-    this.isStart = true
-    if (this.toast) {
-      // console.log(this.toast.active);
-      this.toast.active = true
-      this.toast.parent = parent
-      this.toast.zIndex = 999
-      let DetailLabel = this.toast.getChildByName('DetailLabel')
-      DetailLabel.getComponent(cc.Label).string = content
-      this.toastEndTime = time
+    onTestToken() {
+        utils.onTestToken();
     }
-  },
 
-  onTestToken() {
-    utils.onTestToken()
-  },
-})
+
+});

部分文件因为文件数量过多而无法显示