Переглянути джерело

粮草不足,获得粮草界面

薛鸿潇 5 роки тому
батько
коміт
06046b0d54

+ 2 - 0
tower_sanguo/assets/scripts/data/GameData.ts

@@ -2,6 +2,7 @@ import LogUtil from "../../MOKA/util/LogUtil";
 import GameController from "../GameController";
 import CheckpointRedBagModle from "../module/checkpointRedBag/CheckpointRedBagModle";
 import FightData from "../module/fight/FightData";
+import GetLiangCaoModel from "../module/getLiangCao/GetLiangCaoModel";
 import TaskModel from "../module/task/TaskModel";
 import turntableModel from "../module/turntable/turntableModel";
 import HttpCommand, { MsgAddGeneralExp, UpdatePlayerProps } from "../net/HttpCommand";
@@ -568,6 +569,7 @@ export default class GameData {
         if (!task_list || !task_list.length) TaskModel.resetTaskData();// 无数据则重置
         // TaskModel.resetTaskData();// 测试专用
         // GameController.http.getUserIsNewDay();
+        GetLiangCaoModel.initData();
         GameController.loadMain();
     }
 

+ 2 - 0
tower_sanguo/assets/scripts/module/fight/FightUI.ts

@@ -26,6 +26,7 @@ import { ViewZorder } from "../../../MOKA/data/ViewZOrder";
 import GeneralUIModel from "../general/GeneralUIModel";
 import GameUtil from "../../../MOKA/util/GameUtil";
 import { MsgAddGeneralExp } from "../../net/HttpCommand";
+import GetLiangCaoModel from "../getLiangCao/GetLiangCaoModel";
 
 const { ccclass, property } = cc._decorator;
 
@@ -497,6 +498,7 @@ export default class FightUI extends BaseUI {
         this.mission_start.stop();
         this.mission_start.play();
         XXEvent.emit(XXConst.EventNewMissionStart, mission)// 新的一波开始了
+        GetLiangCaoModel.updateFoodCount(mission);
     }
     private playMissionEndEffect(win: boolean, rewards: string) {
         if (win) {

+ 54 - 6
tower_sanguo/assets/scripts/module/getLiangCao/GetLiangCaoModel.ts

@@ -1,5 +1,6 @@
 import { PLAYERPROP } from "../../data/GameDefinition";
 import GameController from "../../GameController";
+import MainUI from "../main/MainUI";
 
 /**
  *  获取粮草界面逻辑
@@ -11,28 +12,41 @@ export default class GetLiangCaoModel {
          * - 跨天重置
         */
         rest_vedio_times: 0,
-        /** 可以获得的粮草数量 */
-        food_count: 4999,
     }
+    /** 可以获得的粮草数量 */
+    public static food_count: number = 0
     /** 今日最多可看视频次数 
      * - 走配置,需要配置
     */
-    public static max_vedio_times: number = 40;
+    public static max_vedio_times: number = 0;
     /** 保存数据 */
     public static saveData() {
         let temp_str_model_data = JSON.stringify(this.model_data);
-        GameController.gameData.updatePropNoCheck(PLAYERPROP.GET_FOOD_DATA, temp_str_model_data);// 任务条数据
+        GameController.gameData.updatePropNoCheck(PLAYERPROP.GET_FOOD_DATA, temp_str_model_data);
     }
     /** 重置数据 */
     public static resetData() {
         this.model_data.rest_vedio_times = this.max_vedio_times;
         this.saveData();
     }
+    /** 初始化数据 */
+    public static initData() {
+        if (!this.max_vedio_times) this.max_vedio_times = GameController.gameData.serverConfig_data.videofoodtime || 0;
+
+        let list_data = GameController.gameData.player.getProp(PLAYERPROP.GET_FOOD_DATA);
+        if (list_data) {
+            let temp_str_list_data = JSON.parse(list_data)
+            if (temp_str_list_data) this.model_data = temp_str_list_data;
+        } else {
+            // 没有数据
+            this.resetData();
+        }
+    }
     /** 更新可以获得的粮草数量 
      * 每关刷新
     */
     public static updateFoodCount(mission_id) {
-        this.model_data.food_count = GameController.gameData.getMissionByID(mission_id).videofood;
+        this.food_count = GameController.gameData.getMissionByID(mission_id).videofood;
     }
     /** 预计可训练次数 
      * - 实时计算得到
@@ -42,7 +56,7 @@ export default class GetLiangCaoModel {
     public static canExpUpTimes(): number {
         let can_expUp_times = 0;
 
-        let cur_food = this.model_data.food_count;
+        let cur_food = this.food_count;
         let consume_food = GameController.gameData.player.getProp(PLAYERPROP.FOODCONSUME);
         can_expUp_times = Math.floor(cur_food / consume_food);
         return can_expUp_times;
@@ -65,4 +79,38 @@ export default class GetLiangCaoModel {
         need_after_time = Math.ceil(need_food / food_recover);
         return need_after_time;
     }
+    /** 看视频领取粮草的逻辑 */
+    public static receiveTVFood() {
+        if (this.model_data.rest_vedio_times <= 0) {
+            GameController.uiM.showToast('剩余次数不足');
+        } else {
+            this.model_data.rest_vedio_times--;
+            this.saveData();
+            GameController.gameData.player.setProp(PLAYERPROP.FOOD, this.food_count, true);
+            this.flyRedBagToMain();
+        }
+    }
+    /** 主界面组件,动画用 */
+    private static comp_main: MainUI = null!;
+    /** 飞粮草效果 */
+    private static flyRedBagToMain() {
+        if (!this.comp_main) this.comp_main = GameController.uiM.getUI(MainUI);
+        let start_world_pos = this.comp_main.btn_3.node.parent.convertToWorldSpaceAR(this.comp_main.btn_3.node.getPosition());
+        start_world_pos.y += this.comp_main.btn_3.node.height;
+        let start_node_pos = this.comp_main.node.convertToNodeSpaceAR(start_world_pos);
+
+        let end_world_pos = this.comp_main.node_lc.node.parent.convertToWorldSpaceAR(this.comp_main.node_lc.node.getPosition());
+        let end_node_pos = this.comp_main.node.convertToNodeSpaceAR(end_world_pos);
+        let fly_data = {
+            node_p: this.comp_main.node,
+            item_count: 10,
+            item_scale: [1, 2],
+            item_sf: this.comp_main.node_lc.spriteFrame,
+            start_pos: start_node_pos,
+            end_pos: end_node_pos,
+            complete_call: null,
+        }
+        // 发起飞item事件
+        this.comp_main.node.emit('ui-fly-node', fly_data);
+    }
 }

+ 7 - 2
tower_sanguo/assets/scripts/module/getLiangCao/GetLiangCaoUI.ts

@@ -1,5 +1,6 @@
 
 import BaseUI from "../../../MOKA/component/BaseUI";
+import GameController from "../../GameController";
 import GetLiangCaoModel from "./GetLiangCaoModel";
 const { ccclass, property } = cc._decorator;
 
@@ -29,14 +30,18 @@ export default class GetLiangCaoUI extends BaseUI {
     private initStyle() {
         this.lbl_can_up.string = GetLiangCaoModel.canExpUpTimes() + '';
         this.lbl_rest_times.string = GetLiangCaoModel.model_data.rest_vedio_times + '次';
-        this.lbl_lc_count.string = 'x' + GetLiangCaoModel.model_data.food_count;
+        this.lbl_lc_count.string = 'x' + GetLiangCaoModel.food_count;
     }
     private onClickReceive() {
+        // 看视频回调
         // 领取粮草逻辑
-        // this.close();
+        GetLiangCaoModel.receiveTVFood();
+        this.initStyle();
+        this.close();
     }
     private onUpdateFoodCount(mission_id) {
         GetLiangCaoModel.updateFoodCount(mission_id);
+        this.initStyle();
     }
     // update (dt) {}
 }