Ejemplo n.º 1
0
        void onClick(GameObject e)
        {
            switch (e.name)
            {
            case "plusWorkerBtn":
                if (DbManager.Instance.GetPlusWorkerNum() < DbManager.Instance.GetMaxPlusWorkerNum())
                {
                    ConfirmCtrl.Show(string.Format("花费¥3 购买10个家丁({0}/{1})\n(家丁越多资源生产效率越高)\n确定购买?", DbManager.Instance.GetPlusWorkerNum(), DbManager.Instance.GetMaxPlusWorkerNum()), () => {
                        MaiHandler.PayForProduct("com.courage2017.worker_10");
//                            DbManager.Instance.SetPlusWorkerNum(DbManager.Instance.GetPlusWorkerNum() + 10);
//                            DbManager.Instance.SetMaxWorkerNum(DbManager.Instance.GetMaxWorkerNum() + 10);
//                            DbManager.Instance.SetWorkerNum(DbManager.Instance.GetWorkerNum() + 10);
//                            WorkshopPanelCtrl.MakeWorkerNumChange(DbManager.Instance.GetWorkerNum(), DbManager.Instance.GetMaxWorkerNum());
//                            AlertCtrl.Show("成功招募了10个家丁");
                    }, null, "购买", "不了");
                }
                else
                {
                    AlertCtrl.Show(string.Format("你已经买满了{0}个家丁", DbManager.Instance.GetMaxPlusWorkerNum()));
                }
                break;

            case "CloseBtn":
                FadeOut();
                break;

            default:
                break;
            }
        }
Ejemplo n.º 2
0
        void onClick(GameObject e)
        {
            switch (e.name)
            {
            case "CameraBtn":
//                    ConfirmCtrl.Show("观看一段视频来缓解下各位侠客的伤势如何?", () => {
//                        MaiHandler.StartRewardedVideo(() => {
//                            Messenger.Broadcast(NotifyTypes.RelieveRoles);
//                        });
//                        MaiHandler.SendEvent("StartRewardedVideoForInjurys", DbManager.Instance.HostData.Lv.ToString());
//                    });
                ConfirmCtrl.Show("是否花费10000两银子请御医来缓解下各位侠客的伤势如何?", () => {
                    if (DbManager.Instance.CostSilver(10000))
                    {
                        Messenger.Broadcast(NotifyTypes.RelieveRoles);
                        MaiHandler.SendEvent("StartRewardedVideoForInjurys", DbManager.Instance.HostData.Lv.ToString());
                    }
                    else
                    {
                        AlertCtrl.Show("银两不足");
                    }
                });
                break;

            case "CloseBtn":
                FadeOut();
                break;
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 是主角等级上升
        /// </summary>
        /// <param name="toLv">To lv.</param>
        public void HostRoleUpgrade(int toLv)
        {
            if (HostData.Lv >= toLv)
            {
                return;
            }
            RoleData role = null;

            db = OpenDb();
            SqliteDataReader sqReader = db.ExecuteQuery("select RoleData from RolesTable where RoleId = '" + currentRoleId + "'");
            string           roleDataStr;

            if (sqReader.Read())
            {
                roleDataStr = sqReader.GetString(sqReader.GetOrdinal("RoleData"));
                roleDataStr = roleDataStr.IndexOf("{") == 0 ? roleDataStr : DESStatics.StringDecder(roleDataStr);
                role        = JsonManager.GetInstance().DeserializeObject <RoleData>(roleDataStr);
                role.Lv     = toLv > role.Lv ? toLv : role.Lv;
                //更新主角数据
                db.ExecuteQuery("update RolesTable set RoleData = '" + DESStatics.StringEncoder(JsonManager.GetInstance().SerializeObjectDealVector(role)) + "' where RoleId = '" + currentRoleId + "'");
            }
            db.CloseSqlConnection();

            if (role != null)
            {
                HostData.MakeJsonToModel();
                role.MakeJsonToModel();
                Messenger.Broadcast <RoleData, RoleData>(NotifyTypes.HostRoleUpgradeEcho, HostData, role);
                CallRoleInfoPanelData(false); //刷新队伍数据
                MaiHandler.SetAccount(role);
            }
        }
Ejemplo n.º 4
0
 void OnDestroy()
 {
     if (hostUpgradeLv > 0)
     {
         if (DbManager.Instance.IsTaskCompleted(taskId))
         {
             Messenger.Broadcast <int>(NotifyTypes.HostRoleUpgrade, hostUpgradeLv);
             MaiHandler.SendEvent("TaskFinished", DbManager.Instance.HostData.Lv.ToString(), taskId);
         }
     }
     Messenger.Broadcast(NotifyTypes.MakeCheckNewFlags); //判断城镇界面的新增提示
 }
Ejemplo n.º 5
0
 void Start()
 {
     PlayBgm();
     Messenger.Broadcast <AreaTarget, AreaMain>(NotifyTypes.AreaInit, areaTarget, this);
     RebuildDisableEvents();
     if (!string.IsNullOrEmpty(PlayerPrefs.GetString("BattleIsGoingOn_FightFlag_For_" + DbManager.Instance.HostData.Id)))
     {
         AlertCtrl.Show("之前与对手的交锋将继续", () => {
             Messenger.Broadcast <string>(NotifyTypes.CreateBattle, PlayerPrefs.GetString("BattleIsGoingOn_FightFlag_For_" + DbManager.Instance.HostData.Id));
         }, "动手");
     }
     MaiHandler.CheckReceipt(); //内购补单
 }
Ejemplo n.º 6
0
//    System.DateTime backDelayDate = System.DateTime.MinValue;
//    double backDelayTimeout = 12;
    public void OnApplicationPause(bool pause)
    {
        Debug.Log("OnApplicationPause: " + pause);
        if (pause)   //程序进入后台
        {
            MaiHandler.StopSession();
//            backDelayDate = System.DateTime.Now;
        }
        else   //程序被唤醒
        {
            MaiHandler.StartSession();
//            //大于等于5级每次切换回游戏都弹一次插屏广告
//            if (DbManager.Instance.HostData != null && DbManager.Instance.HostData.Lv >= 5 && (System.DateTime.Now - backDelayDate).TotalSeconds > backDelayTimeout) {
//                backDelayDate = System.DateTime.Now;
//                MaiHandler.ShowInterstitial(false);
//                MaiHandler.SendEvent("StartInterstitialForBack", DbManager.Instance.HostData.Lv.ToString());
//            }
        }
    }
Ejemplo n.º 7
0
        void onClick(GameObject e)
        {
            if (!PayBtn.enabled)
            {
                return;
            }
            if (!IsFree)
            {
                MaiHandler.PayForProduct(ProductId);
            }
            else
            {
//                MaiHandler.StartRewardedVideo(() => {
                DbManager.Instance.GotSilver(1000);
                Messenger.Broadcast <string>(NotifyTypes.GetStorePanelData, UserModel.CurrentUserData.CurrentCitySceneId);
                StartTimer();
                AlertCtrl.Show("银子 +1000");
//                });
            }
        }
Ejemplo n.º 8
0
        void onClick(GameObject e)
        {
            if (!PayBtn.enabled)
            {
                return;
            }
            if (propData.Num >= propData.Max)
            {
                switch (propData.Type)
                {
                case PropType.NocturnalClothing:
                    AlertCtrl.Show(string.Format("最多只能携带{0}件夜行衣", propData.Max));
                    break;

                case PropType.Bodyguard:
                    AlertCtrl.Show(string.Format("最多只能雇佣{0}位镖师", propData.Max));
                    break;

                case PropType.LimePowder:
                    AlertCtrl.Show(string.Format("最多只能携带{0}包石灰粉", propData.Max));
                    break;

                case PropType.Scout:
                    AlertCtrl.Show(string.Format("最多只能拥有{0}个探子", propData.Max));
                    break;

                default:
                    break;
                }
                return;
            }

            if (!IsFree)
            {
                if (propData.Num > 0)
                {
                    switch (propData.Type)
                    {
                    case PropType.NocturnalClothing:
                        AlertCtrl.Show(string.Format("你还有{0}件夜行衣,不可再买", propData.Num));
                        break;

                    case PropType.Bodyguard:
                        AlertCtrl.Show(string.Format("你还有{0}位镖师,不可再买", propData.Num));
                        break;

                    case PropType.LimePowder:
                        AlertCtrl.Show(string.Format("你还有{0}包石灰粉,不可再买", propData.Num));
                        break;

                    case PropType.Scout:
                        AlertCtrl.Show(string.Format("你还有{0}个探子,不可再买", propData.Num));
                        break;

                    default:
                        break;
                    }
                    return;
                }
                MaiHandler.PayForProduct(productId);
            }
            else
            {
//                MaiHandler.StartRewardedVideo(() => {
                StartTimer();
                SendRewards(propData.Type, UnityEngine.Random.Range(1, 3));
//                });
            }
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Scenes the notify init.
        /// </summary>
        public static void AreaNotifyInit()
        {
            Messenger.AddListener <AreaTarget, AreaMain>(NotifyTypes.AreaInit, (target, main) => {
                AreaModel.CurrentTarget  = target;
                AreaModel.AreaMainScript = main;
                //加载动态事件列表
                Messenger.Broadcast <string>(NotifyTypes.GetActiveEventsInArea, UserModel.CurrentUserData.CurrentAreaSceneName);
                //打开大地图UI交互界面
                Messenger.Broadcast(NotifyTypes.CallAreaMainPanelData);
                //如果当前所处的位置是城镇,则进入城镇
                if (UserModel.CurrentUserData.PositionStatu == UserPositionStatusType.InCity)
                {
                    Messenger.Broadcast <string>(NotifyTypes.EnterCityScene, UserModel.CurrentUserData.CurrentCitySceneId);
                }
            });

            Messenger.AddListener(NotifyTypes.AreaDestroyed, () => {
                if (AreaModel.CurrentTarget != null && AreaModel.CurrentTarget.gameObject != null)
                {
                    MonoBehaviour.Destroy(AreaModel.CurrentTarget.gameObject);
                    AreaModel.CurrentTarget = null;
                }
                Messenger.Broadcast(NotifyTypes.HideAreaMainPanel);
            });

            Messenger.AddListener(NotifyTypes.CallAreaMainPanelData, () => {
                Messenger.Broadcast <System.Action <UserData> >(NotifyTypes.CallUserData, (userData) => {
                    Messenger.Broadcast <JArray>(NotifyTypes.CallAreaMainPanelDataEcho, new JArray(userData.AreaFood.IconId, userData.AreaFood.Num, userData.AreaFood.MaxNum, userData.CurrentAreaSceneName));
                    Vector2 pos = new Vector2(userData.CurrentAreaX, userData.CurrentAreaY);
                    Messenger.Broadcast <Vector2, bool>(NotifyTypes.SetAreaPosition, pos, false);
                });
            });

            Messenger.AddListener <JArray>(NotifyTypes.CallAreaMainPanelDataEcho, (data) => {
                AreaMainPanelCtrl.Show(data);
                Messenger.Broadcast(NotifyTypes.MakeUpdateProps);
            });

            Messenger.AddListener(NotifyTypes.MakeUpdateProps, () => {
                AreaMainPanelCtrl.MakeUpdateProps(DbManager.Instance.GetAllProps());
            });

            Messenger.AddListener <PropType, int>(NotifyTypes.AddProp, (type, num) => {
                DbManager.Instance.AddProp(type, num);
                Messenger.Broadcast(NotifyTypes.MakeUpdateProps);
            });

            Messenger.AddListener <PropType, int>(NotifyTypes.UseProp, (type, num) => {
                DbManager.Instance.UseProp(type, num);
            });

            Messenger.AddListener(NotifyTypes.HideAreaMainPanel, () => {
                AreaMainPanelCtrl.Hide();
            });

            Messenger.AddListener <string, bool>(NotifyTypes.MoveOnArea, (direction, duringMove) => {
                //如果触发战斗则禁止移动
                if (BattleFightPanelCtrl.Ctrl != null || !AreaModel.CurrentTarget.CanTriggerEvent())
                {
                    return;
                }
                //移动前先判断移动目的地是否有战斗
                Vector2 nextMovePosition = AreaModel.CurrentTarget.GetNextMovePosition(direction);
                //判断前方是否是障碍
                tk2dRuntime.TileMap.TileInfo groundTile = AreaModel.CurrentTarget.GetTileInfo((int)nextMovePosition.x, (int)nextMovePosition.y, 0);
                //判断禁止通过的碰撞区域
                if (groundTile == null || groundTile.stringVal == "obstacle")
                {
                    Statics.CreatePopMsg(Vector3.zero, "撞到墙上了,请绕行", Color.white, 30);
                    return;
                }
                string fightEventId = string.Format("{0}_{1}_{2}", UserModel.CurrentUserData.CurrentAreaSceneName, (int)nextMovePosition.x, (int)nextMovePosition.y);
                EventData data;

                if (AreaMain.ActiveAreaEventsMapping.ContainsKey(fightEventId))
                {
                    data = AreaMain.ActiveAreaEventsMapping[fightEventId];
                    if (data.Type == SceneEventType.Battle)
                    {
                        ConfirmCtrl.Show("前方将有恶战,是否继续?", () => {
                            Messenger.Broadcast <string>(NotifyTypes.CreateBattle, data.EventId);
                        }, null, "动手", "撤退");
                        return;
                    }
                }
                else if (AreaMain.StaticAreaEventsMapping.ContainsKey(fightEventId))
                {
                    //判断静态事件是否禁用
                    if (!AreaMain.DisableEventIdMapping.ContainsKey(fightEventId))
                    {
                        data = AreaMain.StaticAreaEventsMapping[fightEventId];
                        if (data.Type == SceneEventType.Battle)
                        {
                            ConfirmCtrl.Show("前方将有恶战,是否继续?", () => {
                                Messenger.Broadcast <string>(NotifyTypes.CreateBattle, data.EventId);
                                //处理静态事件的预禁用操作
                                EventData disableEvent = new EventData();
                                disableEvent.Id        = fightEventId;
                                disableEvent.Type      = SceneEventType.DisableEvent;
                                disableEvent.X         = (int)nextMovePosition.x;
                                disableEvent.Y         = (int)nextMovePosition.y;
                                Messenger.Broadcast <EventData>(NotifyTypes.HandleDisableEvent, disableEvent);
                            }, null, "动手", "撤退");
                            return;
                        }
                        if (data.Type == SceneEventType.Pagoda)
                        {
                            ConfirmCtrl.Show("前方有守卫,是否继续?", () => {
                                string eventId = data.EventId;
                                if (eventId == "10310020")
                                {
                                    //处理金兀术难度选择后战斗id的变化
                                    int difficulty = PlayerPrefs.GetInt("TowerDifficulty");
                                    switch (difficulty)
                                    {
                                    case 1:
                                        eventId = "10310021";
                                        break;

                                    case 2:
                                        eventId = "10310022";
                                        break;

                                    default:
                                        break;
                                    }
                                }
                                Messenger.Broadcast <string>(NotifyTypes.CreateBattle, eventId);
                                //处理静态事件的预禁用操作
                                EventData disableEvent = new EventData();
                                disableEvent.Id        = fightEventId;
                                disableEvent.EventId   = eventId;
                                disableEvent.Type      = SceneEventType.DisablePagoda;
                                disableEvent.X         = (int)nextMovePosition.x;
                                disableEvent.Y         = (int)nextMovePosition.y;
                                Messenger.Broadcast <EventData>(NotifyTypes.HandleDisableEvent, disableEvent);
                            }, null, "动手", "撤退");
                            return;
                        }
                        else if (data.OpenType != SceneEventOpenType.None)
                        {
                            //静态事件有一个开启判定类型
                            switch (data.OpenType)
                            {
                            case SceneEventOpenType.FightWined:
                                if (!DbManager.Instance.IsFightWined(data.OpenKey))
                                {
                                    ConfirmCtrl.Show(string.Format("前方有强敌守卫,是否硬闯?{0}", data.Notice), () => {
                                        Messenger.Broadcast <string>(NotifyTypes.CreateBattle, data.OpenKey);
                                    }, null, "动手", "撤退");
                                    return;
                                }
                                break;

                            case SceneEventOpenType.NeedItem:
                                if (DbManager.Instance.GetUsedItemNumByItemId(data.OpenKey) <= 0)
                                {
                                    ItemData item = JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", data.OpenKey);
                                    if (DbManager.Instance.GetItemNumByItemId(data.OpenKey) > 0)
                                    {
                                        ConfirmCtrl.Show(string.Format("需要交出 <color=\"#1ABDE6\">{0}</color> 才能通过", item.Name), () => {
                                            if (DbManager.Instance.CostItemFromBag(data.OpenKey, 1))
                                            {
                                                DbManager.Instance.UpdateUsedItemRecords(data.OpenKey, 1);
                                                AlertCtrl.Show(string.Format("交出了 <color=\"#1ABDE6\">{0}</color>", item.Name));
                                            }
                                        }, null, "给", "不给");
                                    }
                                    else
                                    {
                                        AlertCtrl.Show(string.Format("行囊里没有<color=\"#1ABDE6\">{0}</color>,不能过去!{1}", item.Name, data.Notice));
                                    }
                                    return;
                                }
                                break;

                            case SceneEventOpenType.NeedTasks:
                                if (!string.IsNullOrEmpty(data.StringValue))
                                {
                                    string[] taskIds = data.StringValue.Split(new char[] { '|' });
                                    if (!DbManager.Instance.HasAnyTask(taskIds))
                                    {
                                        AlertCtrl.Show(string.Format("前方暂时无法通过!\n<color=\"#00FF00\">{0}</color>", data.Notice));
                                        return;
                                    }
                                }
                                break;

                            default:
                                break;
                            }
                        }
                    }
                }
                //判定体力是否足够移动
                DbManager.Instance.MoveOnArea(direction, duringMove);
//				Messenger.Broadcast<string, int, bool>(NotifyTypes.MoveOnAreaEcho, direction, 666, duringMove);
            });

            Messenger.AddListener <string, int, bool>(NotifyTypes.MoveOnAreaEcho, (direction, foodsNum, duringMove) => {
                if (foodsNum > 0)
                {
                    AreaMainPanelCtrl.MakeArrowShow(direction, foodsNum);
                    Vector2 pos = AreaModel.CurrentTarget.Move(direction, foodsNum > 0, duringMove);
                    AreaMainPanelCtrl.MakeSetPosition(pos);
                }
                else
                {
                    if (UserModel.CurrentRebornTimes >= UserModel.MaxRebornTimes)
                    {
                        AlertCtrl.Show("干粮耗尽, 先回城镇休整", () => {
                            Messenger.Broadcast(NotifyTypes.BackToCity);
                        });
                    }
                    else
                    {
//                        ConfirmCtrl.Show(string.Format("干粮耗尽,您愿意观看一段视频获得{0}点体力吗?\n(复活次数:{1}/{2})", UserModel.CurrentFoodNums / 2, UserModel.MaxRebornTimes - UserModel.CurrentRebornTimes, UserModel.MaxRebornTimes), () => {
//                            MaiHandler.StartRewardedVideo(() => {
//                                UserModel.CurrentFoodNums = UserModel.CurrentFoodNums / 2;
//                                UserModel.CurrentRebornTimes++;
//                                Messenger.Broadcast<int>(NotifyTypes.EatFood, UserModel.CurrentFoodNums);
//                            });
//                            MaiHandler.SendEvent("StartRewardedVideoForFoods", DbManager.Instance.HostData.Lv.ToString());
//                        }, () => {
//                            Messenger.Broadcast(NotifyTypes.BackToCity);
//                        }, "观看", "不了");

                        ConfirmCtrl.Show(string.Format("干粮耗尽,您愿意花费5000两银子获得{0}点体力吗?\n(复活次数:{1}/{2})", UserModel.CurrentFoodNums / 2, UserModel.MaxRebornTimes - UserModel.CurrentRebornTimes, UserModel.MaxRebornTimes), () => {
                            if (DbManager.Instance.CostSilver(5000))
                            {
                                UserModel.CurrentFoodNums = UserModel.CurrentFoodNums / 2;
                                UserModel.CurrentRebornTimes++;
                                Messenger.Broadcast <int>(NotifyTypes.EatFood, UserModel.CurrentFoodNums);
                            }
                            else
                            {
                                AlertCtrl.Show("银两不足, 先回城镇休整", () => {
                                    Messenger.Broadcast(NotifyTypes.BackToCity);
                                });
                            }
                            MaiHandler.SendEvent("StartRewardedVideoForFoods", DbManager.Instance.HostData.Lv.ToString());
                        }, () => {
                            Messenger.Broadcast(NotifyTypes.BackToCity);
                        }, "花钱", "不了");
                    }
                    BattleFightPanelCtrl.Hide(); //强制退出战斗
                }
            });

            Messenger.AddListener <Vector2, bool>(NotifyTypes.SetAreaPosition, (pos, doEvent) => {
                AreaMainPanelCtrl.MakeSetPosition(pos);
                if (AreaModel.AreaMainScript != null)
                {
                    AreaModel.AreaMainScript.SetPosition(pos, doEvent);
                }
            });

            Messenger.AddListener <string>(NotifyTypes.GetActiveEventsInArea, (sceneId) => {
                DbManager.Instance.GetActiveEventsInArea(sceneId);
            });

            Messenger.AddListener <List <EventData> >(NotifyTypes.GetActiveEventsInAreaEcho, (events) => {
                if (AreaModel.AreaMainScript != null)
                {
                    AreaModel.AreaMainScript.UpdateActiveAreaEventsData(events);
                    AreaModel.AreaMainScript.RefreshActiveAreaEventsView();
                }
            });

            Messenger.AddListener <EventData>(NotifyTypes.HandleDisableEvent, (ev) => {
                if (AreaModel.AreaMainScript != null)
                {
                    AreaModel.AreaMainScript.HandleDisableEvent(ev);
                }
            });

            Messenger.AddListener <bool>(NotifyTypes.ReleaseDisableEvent, (win) => {
                if (AreaModel.AreaMainScript != null)
                {
                    AreaModel.AreaMainScript.ReleaseDisableEvent(win);
                }
            });

            Messenger.AddListener <string, EventData>(NotifyTypes.PushDisableEvent, (eventId, eventData) => {
                if (AreaModel.AreaMainScript != null)
                {
                    AreaModel.AreaMainScript.PushDisableEvent(eventId, eventData);
                }
            });

            Messenger.AddListener <List <SceneEventType> >(NotifyTypes.ClearDisableEventIdMapping, (excepts) => {
                if (AreaModel.AreaMainScript != null)
                {
                    AreaModel.AreaMainScript.ClearDisableEventIdMapping(excepts);
                }
            });

            Messenger.AddListener <int>(NotifyTypes.EatFood, (num) => {
                int eatNum = DbManager.Instance.EatFood(num);
                AlertCtrl.Show(string.Format("打开包袱发现<color=\"#00FF00\">{0}个干粮</color>{1}", num, eatNum != num ? "\n你的行囊只装得下<color=\"#FF0000\">" + eatNum + "个</color>" : ""));
            });
        }
Ejemplo n.º 10
0
        /// <summary>
        /// 用户相关消息
        /// </summary>
        public static void UserNotifyInit()
        {
            Messenger.AddListener <System.Action <UserData> >(NotifyTypes.CallUserData, (callback) => {
                callUserDataCallback = callback;
                DbManager.Instance.CallUserData();
            });

            Messenger.AddListener <System.Action <UserData> >(NotifyTypes.UpdateUserData, (callback) => {
                if (UserModel.CurrentUserData != null)
                {
                    callUserDataCallback = callback;
                    DbManager.Instance.UpdateUserData(JsonManager.GetInstance().SerializeObjectDealVector(UserModel.CurrentUserData));
                }
            });

            Messenger.AddListener <JObject>(NotifyTypes.CallUserDataEcho, (obj) => {
                if (callUserDataCallback != null)
                {
                    JArray data = (JArray)obj["data"];
                    if (data.Count > 4)
                    {
                        UserModel.CurrentUserData              = JsonManager.GetInstance().DeserializeObject <UserData>(data[1].ToString());
                        UserModel.CurrentUserData.Id           = data[0].ToString();
                        UserModel.CurrentUserData.AreaFood.Num = (int)data[2];
                        UserModel.CurrentUserData.TimeAngle    = (float)data[3];
                        UserModel.CurrentUserData.TimeTicks    = (long)data[4];
                        UserModel.CurrentFoodNums              = UserModel.CurrentUserData.AreaFood.MaxNum;
                        FramePanelCtrl.TimePlay(UserModel.CurrentUserData.TimeAngle, UserModel.CurrentUserData.TimeTicks); //初始化时辰时间戳
                    }
                    callUserDataCallback(UserModel.CurrentUserData);
                    callUserDataCallback = null;
                }
            });

            Messenger.AddListener <string, Vector2, System.Action <UserData> >(NotifyTypes.UpdateUserDataAreaInfo, (areaName, pos, callback) => {
                if (UserModel.CurrentUserData != null)
                {
                    UserModel.CurrentUserData.PositionStatu        = UserPositionStatusType.InArea;
                    UserModel.CurrentUserData.CurrentAreaSceneName = areaName;
                    UserModel.CurrentUserData.CurrentAreaX         = (int)pos.x;
                    UserModel.CurrentUserData.CurrentAreaY         = (int)pos.y;
                    Messenger.Broadcast <System.Action <UserData> >(NotifyTypes.UpdateUserData, callback);
                }
            });

            Messenger.AddListener <string>(NotifyTypes.UpdateUserDataCityInfo, (cityId) => {
                if (UserModel.CurrentUserData != null)
                {
                    SceneData scene = JsonManager.GetInstance().GetMapping <SceneData>("Scenes", cityId);
                    //战斗据点场景不缓存
                    if (!scene.IsJustFightScene)
                    {
                        UserModel.CurrentUserData.PositionStatu      = UserPositionStatusType.InCity;
                        UserModel.CurrentUserData.CurrentCitySceneId = cityId;
                    }
                }
            });

            Messenger.AddListener <string, Vector2, System.Action <UserData> >(NotifyTypes.UpdateUserDataAreaPos, (areaName, pos, callback) => {
                if (UserModel.CurrentUserData != null)
                {
                    UserModel.CurrentUserData.CurrentAreaSceneName = areaName;
                    UserModel.CurrentUserData.CurrentAreaX         = (int)pos.x;
                    UserModel.CurrentUserData.CurrentAreaY         = (int)pos.y;
                    Messenger.Broadcast <System.Action <UserData> >(NotifyTypes.UpdateUserData, callback);
                }
            });

            Messenger.AddListener(NotifyTypes.PlayBgm, () => {
                if (UserModel.CurrentUserData != null)
                {
                    switch (UserModel.CurrentUserData.PositionStatu)
                    {
                    case UserPositionStatusType.InArea:
                        if (AreaModel.AreaMainScript)
                        {
                            AreaModel.AreaMainScript.PlayBgm();
                        }
                        break;

                    case UserPositionStatusType.InCity:
                        CityScenePanelCtrl.MakePlayBgm();
                        break;

                    default:
                        break;
                    }
                }
            });

            Messenger.AddListener(NotifyTypes.EnterGame, () => {
                DbManager.Instance.ResetTasks();                 //初始化任务
                if (DbManager.Instance.GetRecordNum() > 0)
                {
//					MainPanelCtrl.Hide();
//					RecordListPanelCtrl.Hide();
//					SettingPanelCtrl.Hide();
                    UIModel.CloseAllWindows();
                    Messenger.Broadcast <bool>(NotifyTypes.CallRoleInfoPanelData, false);
                    MaiHandler.SetAccount(DbManager.Instance.HostData);
                    Messenger.Broadcast <System.Action <UserData> >(NotifyTypes.CallUserData, (userData) => {
                        if (userData != null)
                        {
                            Messenger.Broadcast <string>(NotifyTypes.GoToScene, userData.CurrentAreaSceneName);
                        }
                        else
                        {
                            //修复上一次创建新角色没创建完就退出游戏,再进后卡死的bug
                            Messenger.Broadcast(NotifyTypes.GetRecordListData);
                        }
//                        //大于等于5级每次登陆游戏都弹一次插屏广告
//                        if (DbManager.Instance.HostData != null &&
//                            DbManager.Instance.HostData.Lv >= 5 &&
//                            DbManager.Instance.GetPlusWorkerNum() <= 0 &&
//                            PlayerPrefs.GetInt("TotalPay") <= 0) {
//                            MaiHandler.ShowInterstitial(false);
//                            MaiHandler.SendEvent("StartInterstitialForLogin", DbManager.Instance.HostData.Lv.ToString());
//                        }
                    });
                }
                else
                {
                    Messenger.Broadcast <string>(NotifyTypes.ShowCreateHostRolePanel, "role_0");                    //第一个角色创建
                }
            });

            Messenger.AddListener <string>(NotifyTypes.ShowCreateHostRolePanel, (id) => {
//				MainPanelCtrl.Hide();
//				RecordListPanelCtrl.Hide();
//				SettingPanelCtrl.Hide();
                UIModel.CloseAllWindows();
                CreateHostRolePanelCtrl.Show(id);
            });

            Messenger.AddListener <RoleData>(NotifyTypes.CreateHostRole, (role) => {
                PlayerPrefs.SetString("CurrentRoleId", role.Id);                 //记录当前角色存档id
                DbManager.Instance.SetCurrentRoleId(role.Id);
                DbManager.Instance.AddNewRecord(role.Id, role.Name, "{}", System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));

                //创建用户数据
                UserData userData             = new UserData();
                userData.AreaFood             = new ItemData();
                userData.AreaFood.Num         = 0;
                userData.AreaFood.MaxNum      = 30;
                userData.PositionStatu        = UserPositionStatusType.InCity;
                userData.CurrentAreaSceneName = "Area00";
                userData.CurrentCitySceneId   = "00001";
                userData.CurrentAreaX         = 15;
                userData.CurrentAreaY         = 15;
                userData.MaxRoleNum           = 2;
                DbManager.Instance.AddNewUserData(JsonManager.GetInstance().SerializeObjectDealVector(userData), userData.AreaFood.Num, role.Id, System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));

                //创建角色数据
                role.ResourceBookDataIds.Clear();
                MaiHandler.SetAccount(role);
                if (DbManager.Instance.AddNewRole(role.Id, JsonManager.GetInstance().SerializeObjectDealVector(role), (int)RoleStateType.InTeam, 0, role.HometownCityId, role.Id, System.DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")))
                {
//					DbManager.Instance.AddNewWeapon(role.ResourceWeaponDataId, role.Id);
//					DbManager.Instance.AddNewWeapon("1");
//					DbManager.Instance.AddNewWeapon("2");
//					DbManager.Instance.AddNewWeapon("3");
                    CreateHostRolePanelCtrl.MakeStoryContinue(role.Name);
                }
            });

            Messenger.AddListener(NotifyTypes.GetRecordListData, () => {
                DbManager.Instance.GetRecordListData();
            });

            Messenger.AddListener <List <JArray> >(NotifyTypes.GetRecordListDataEcho, (data) => {
                RecordListPanelCtrl.Show(data);
            });

            Messenger.AddListener(NotifyTypes.ShowMainPanel, () => {
//				MainPanelCtrl.Hide();
//				RecordListPanelCtrl.Hide();
//				SettingPanelCtrl.Hide();
                UIModel.CloseAllWindows();
                MainPanelCtrl.Show();
            });

            Messenger.AddListener <bool>(NotifyTypes.ShowSettingPanel, (flag) => {
                //战斗时不能打开设置界面
                if (BattleMainPanelCtrl.Ctrl != null)
                {
                    return;
                }
                SettingPanelCtrl.Show(flag);
            });
        }
Ejemplo n.º 11
0
        void onClick(GameObject e)
        {
            if (!e.GetComponent <Button>().enabled)
            {
                return;
            }
            switch (e.name)
            {
            case "Block":
            case "CloseBtn":
                Back();
                break;

            case "BGMOpenBtn":
                SoundManager.GetInstance().EnableBGM();
//				Messenger.Broadcast(NotifyTypes.PlayBgm);
                refreshBGMAndSoundView();
                break;

            case "BGMCloseBtn":
                SoundManager.GetInstance().DisableBGM();
                refreshBGMAndSoundView();
                break;

            case "SoundOpenBtn":
                SoundManager.GetInstance().EnableSound();
                refreshBGMAndSoundView();
                break;

            case "SoundCloseBtn":
                SoundManager.GetInstance().DisableSound();
                refreshBGMAndSoundView();
                break;

            case "LoadRecordListBtn":
                Messenger.Broadcast(NotifyTypes.GetRecordListData);
                break;

            case "BackToMainMenuBtn":
                Messenger.Broadcast(NotifyTypes.ShowMainPanel);
                break;

            case "CameraBtn":
                MaiHandler.ShowInterstitial();
                MaiHandler.SendEvent("StartInterstitialForHelp", DbManager.Instance.HostData.Lv.ToString());
                break;

            case "HelpBtn":
                HelpPanelCtrl.Show();
                break;

            case "PraiseBtn":
                const string APP_ID = "1274001919";
                var          url    = string.Format(
                    "https://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id={0}&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8",
                    APP_ID);
                Application.OpenURL(url);
                break;

            case "raidersBtn":
                Application.OpenURL("http://mywuxia.lofter.com");
                break;

            default:
                break;
            }
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Battles the notify init.
        /// </summary>
        public static void BattleNotifyInit()
        {
            Messenger.AddListener <string>(NotifyTypes.CreateBattle, (fightId) => {
                if (BattleFightPanelCtrl.Ctrl != null)
                {
                    Statics.CreatePopMsg(Vector3.zero, "已在战斗中", Color.white, 30);
                    return;
                }
                //获取队伍角色列表
//				RoleData currentRoleData = RoleInfoPanelCtrl.GetCurrentRoleData();
                RoleData currentRoleData = DbManager.Instance.GetHostRoleData();
                if (currentRoleData == null)
                {
                    return;
                }
                currentRoleData.MakeJsonToModel();
                if (currentRoleData.Injury == InjuryType.Moribund)
                {
                    AlertCtrl.Show("你已奄奄一息无法再战!", () => {
                        Messenger.Broadcast(NotifyTypes.BackToCity);
                    });
                    return;
                }
                //获取战斗数据
//				FightData fightData = new FightData();
//				fightData.Id = fightId;
//				fightData.Type = FightType.Normal;
//				RoleData enemy0 = new RoleData();
//				enemy0.Id = "enemy0";
//				enemy0.Name = "赏金刺客";
//				enemy0.HalfBodyId = "enemy000001";
//				BookData book0 = new BookData();
//				book0.Id = "book20001";
//				book0.Name = "地痞撒泼";
//				book0.IconId = "200000";
//				SkillData skill0 = new SkillData();
//				skill0.Type = SkillType.MagicAttack;
//				skill0.Name = "背负投";
//				BuffData buff0 = new BuffData();
//				buff0.Type = BuffType.Vertigo;
////				buff0.Value = 8888;
////				buff0.FirstEffect = true;
//				buff0.RoundNumber = 3;
//				buff0.Rate = 30;
//				buff0.FirstEffect = true;
//				skill0.DeBuffDatas.Add(buff0);
//				SkillData skill1 = new SkillData();
//				skill1.Type = SkillType.PhysicsAttack;
//				skill1.Name = "抱摔";
//				SkillData skill2 = new SkillData();
//				skill2.Type = SkillType.PhysicsAttack;
//				skill2.Name = "撕咬";
//				book0.Skills.Add(skill0);
//				book0.Skills.Add(skill1);
//				book0.Skills.Add(skill2);
//				enemy0.Books.Add(book0);
//				enemy0.AttackSpeed = 2;
//				enemy0.HP = 10000;
//				enemy0.MaxHP = 10000;
//				WeaponData weapon5 = new WeaponData();
//				weapon5.Id = "weapon5";
//				weapon5.Id = "阔刃刀";
//				weapon5.Width = 360;
//				weapon5.Rates = new float[] { 1, 0.6f, 0.2f, 0.1f };
//				enemy0.Weapon = weapon5;
//				fightData.Enemys = new List<RoleData>() {
//					enemy0
//				};
//                List<RoleData> teams = RoleInfoPanelCtrl.GetRoleDatas();
                List <RoleData> teams             = DbManager.Instance.GetRolesInTeam();
                List <List <SecretData> > secrets = new List <List <SecretData> >();
                for (int i = 0, len = teams.Count; i < len; i++)
                {
                    if (teams[i].IsHost)
                    {
                        WeaponLVData weaponLvData = DbManager.Instance.GetWeaponLV(teams[i].ResourceWeaponDataId);
                        teams[i].CurrentWeaponLV  = weaponLvData.LV;
                    }
                    teams[i].MakeJsonToModel();
                    secrets.Add(DbManager.Instance.GetSecretsBelongBooks(teams[i].ResourceBookDataIds));
                }
                FightData fightData = JsonManager.GetInstance().GetMapping <FightData>("Fights", fightId);
                fightData.MakeJsonToModel();
                Messenger.Broadcast(NotifyTypes.HideRoleInfoPanel);
                SoundManager.GetInstance().PauseBGM();
                SoundManager.GetInstance().PushSound("ui0003");
                Messenger.Broadcast <System.Action, System.Action>(NotifyTypes.PlayCameraVortex, () => {
//					BattleMainPanelCtrl.Show(currentRoleData, fightData);
                    List <ItemData> drugs = new List <ItemData>();
//                    drugs.Add(JsonManager.GetInstance().GetMapping<ItemData>("ItemDatas", "100001"));
//                    drugs.Add(JsonManager.GetInstance().GetMapping<ItemData>("ItemDatas", "100002"));
//                    drugs.Add(JsonManager.GetInstance().GetMapping<ItemData>("ItemDatas", "100003"));
                    List <ItemData> allVulnerary = DbManager.Instance.GetItems(ItemType.Drug);
                    for (int i = 0; i < 3; i++)
                    {
                        if (allVulnerary.Count > i)
                        {
                            drugs.Add(allVulnerary[i]);
                        }
                        else
                        {
                            break;
                        }
                    }
                    //处理通天塔量子强度影响的敌人成长率
                    if (UserModel.CurrentUserData.CurrentAreaSceneName == "Area31")
                    {
                        int difficulty = PlayerPrefs.GetInt("TowerDifficulty");
                        float growUp;
                        switch (difficulty)
                        {
                        case 0:
                        default:
                            growUp = 1;
                            break;

                        case 1:
                            growUp = 2;
                            break;

                        case 2:
                            growUp = 4;
                            break;
                        }
                        for (int i = 0, len = fightData.Enemys.Count; i < len; i++)
                        {
                            fightData.Enemys[i].SetGrowUp(growUp);
                        }
                    }
                    BattleFightPanelCtrl.Show(fightData, teams, secrets, fightData.Enemys, drugs, DbManager.Instance.GetProp(PropType.LimePowder));
                    PlayerPrefs.SetString("BattleIsGoingOn_FightFlag_For_" + DbManager.Instance.HostData.Id, fightId);
                }, () => {
//					Messenger.Broadcast<bool>(NotifyTypes.CallRoleInfoPanelData, true);
                });
            });

            Messenger.AddListener <List <RoleData>, string>(NotifyTypes.CreateTestBattle, (roles, fightId) => {
//                List<List<SecretData>> secrets = new List<List<SecretData>>();
//                for (int i = 0, len = roles.Count; i < len; i++) {
//                    secrets.Add(DbManager.Instance.GetSecretsBelongBooks(roles[i].ResourceBookDataIds));
//                }
                TextAsset asset = Resources.Load <TextAsset>("Data/Json/TestSecrets");
                List <List <SecretData> > secrets = PlayerPrefs.GetString("FightEditorUseSecret") == "true" ? JsonManager.GetInstance().DeserializeObject <List <List <SecretData> > >(asset.text) : new List <List <SecretData> >();
                FightData fightData = JsonManager.GetInstance().GetMapping <FightData>("Fights", fightId);
                fightData.MakeJsonToModel();
//				BattleMainPanelCtrl.Show(currentRoleData, fightData);
                List <ItemData> drugs = new List <ItemData>();
                drugs.Add(JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", "100001"));
                drugs.Add(JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", "100002"));
                drugs.Add(JsonManager.GetInstance().GetMapping <ItemData>("ItemDatas", "100003"));

                for (int i = 0, len = fightData.Enemys.Count; i < len; i++)
                {
                    fightData.Enemys[i].SetGrowUp(PlayerPrefs.GetFloat("FightEditorTestGroupUp"));
                }
                BattleFightPanelCtrl.Show(fightData, roles, secrets, fightData.Enemys, drugs, DbManager.Instance.GetProp(PropType.LimePowder));
            });

            Messenger.AddListener <bool, List <DropData>, FightData>(NotifyTypes.EndBattle, (win, drops, fightData) => {
                if (!win)
                {
                    MaiHandler.SendEvent("FightFail", DbManager.Instance.HostData.Lv.ToString(), fightData.Id);
                }
//				Messenger.Broadcast(NotifyTypes.HideRoleInfoPanel);
                Messenger.Broadcast <System.Action, System.Action>(NotifyTypes.PlayCameraVortex, () => {
                    //如果普通战斗失败则回之前到过的城镇去疗伤
                    if (fightData.Type == FightType.Normal && !win)
                    {
                        AlertCtrl.Show("江湖凶险, 稍事休息后再出发!", () => {
                            Messenger.Broadcast(NotifyTypes.BackToCity);
                            PlayerPrefs.SetString("BattleIsGoingOn_FightFlag_For_" + DbManager.Instance.HostData.Id, "");
                        });
                    }
                    else
                    {
                        PlayerPrefs.SetString("BattleIsGoingOn_FightFlag_For_" + DbManager.Instance.HostData.Id, "");
                    }
//					BattleMainPanelCtrl.Hide();
                    BattleFightPanelCtrl.Hide();
                }, () => {
                    //任务详情界面打开时不呼出角色信息板
                    if (TaskDetailInfoPanelCtrl.Ctrl == null)
                    {
                        Messenger.Broadcast <bool>(NotifyTypes.CallRoleInfoPanelData, false);
                    }
                    Messenger.Broadcast(NotifyTypes.PlayBgm);
                    if (drops.Count > 0)
                    {
                        Messenger.Broadcast <List <DropData> >(NotifyTypes.ShowDropsListPanel, drops);
                    }
                    if (fightData.Type == FightType.Task)
                    {
                        Messenger.Broadcast(NotifyTypes.ReloadTaslDetailInfoData);
                        if (win)
                        {
                            Messenger.Broadcast <string>(NotifyTypes.MakeFightWinedBtnDisable, fightData.Id);
                        }
                    }
                });
            });

            Messenger.AddListener <RoleData>(NotifyTypes.ChangeCurrentTeamRoleInBattle, (roleData) => {
                BattleMainPanelCtrl.ChangeCurrentTeamRole(roleData);
            });

            Messenger.AddListener <int>(NotifyTypes.ChangeCurrentTeamBookInBattle, (index) => {
                BattleMainPanelCtrl.ChangeCurrentTeamBook(index);
            });

            Messenger.AddListener <JArray, List <BookData> >(NotifyTypes.SendFightResult, (data, books) => {
                DbManager.Instance.SendFightResult((bool)data[0], data[1].ToString(), (int)data[2], (int)data[5], books, (float)data[6]);
                JArray usedSkillIdData = (JArray)data[3];
                JArray d;
                for (int i = 0; i < usedSkillIdData.Count; i++)
                {
                    d = (JArray)usedSkillIdData[i];
                    DbManager.Instance.UpdateUsedTheSkillRecords(d[0].ToString(), (int)d[1]);
                }
                JArray plusIndexData = (JArray)data[4];
                for (int i = 0; i < plusIndexData.Count; i++)
                {
                    d = (JArray)plusIndexData[i];
                    DbManager.Instance.UpdateWeaponPowerPlusSuccessedRecords((int)d[0], (int)d[1]);
                }
            });

            Messenger.AddListener <bool, List <DropData>, FightData>(NotifyTypes.SendFightResultEcho, (win, drops, fightData) => {
                //加载动态事件列表
                Messenger.Broadcast <string>(NotifyTypes.GetActiveEventsInArea, UserModel.CurrentUserData.CurrentAreaSceneName);
                Messenger.Broadcast <bool, List <DropData>, FightData>(NotifyTypes.EndBattle, win, drops, fightData);
            });

            Messenger.AddListener(NotifyTypes.BackToCity, () => {
                string eventId = JsonManager.GetInstance().GetMapping <string>("AreaCityPosDatas", UserModel.CurrentUserData.CurrentCitySceneId);
                string[] fen   = eventId.Split(new char[] { '_' });
                if (fen.Length >= 3)
                {
                    string areaName = fen[0];
                    int x           = int.Parse(fen[1]);
                    int y           = int.Parse(fen[2]);
                    if (UserModel.CurrentUserData != null)
                    {
                        UserModel.CurrentUserData.PositionStatu        = UserPositionStatusType.InCity;
                        UserModel.CurrentUserData.CurrentAreaSceneName = areaName;
                        UserModel.CurrentUserData.CurrentAreaX         = x;
                        UserModel.CurrentUserData.CurrentAreaY         = y;
                        Messenger.Broadcast <System.Action <UserData> >(NotifyTypes.UpdateUserData, null);
                        Messenger.Broadcast <string>(NotifyTypes.GoToScene, areaName);
                    }
                }
            });

            Messenger.AddListener(NotifyTypes.BattleFaild, () => {
                BattleMainPanelCtrl.MakeFaild();
            });

            Messenger.AddListener <string>(NotifyTypes.MakePopRole, (dieRoleId) => {
                RoleInfoPanelCtrl.MakePopRole(dieRoleId);
            });
        }