Exemple #1
0
        //private static TASK_FINISH objInstance = null;

        //public static TASK_FINISH getInstance()
        //{
        //    if (objInstance == null) objInstance = new TASK_FINISH();
        //    return objInstance;
        //}

        //  private ConcurrentDictionary<Int64, bool> dic = new ConcurrentDictionary<long, bool>();

        /// <summary>
        /// 说明:任务步骤用 类型_类型id_完成值来表示。
        /// 例如1_200001_1, 1表示任务类型对话,200001表示npc的id,对话类型中0表示未完成,1表示完成
        /// 多步任务用|来分割,例如两步对话任务为 1_200001_1|1_200002_1.
        /// </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}", "TASK_FINISH", "完成任务");
#endif

            //type:0表示接受任务,1表示完成任务 2 表示提交任务
            if (!data.ContainsKey("task") || !data.ContainsKey("npcId"))
            {
                return(null);
            }
            var id  = Convert.ToInt64(data.FirstOrDefault(q => q.Key == "task").Value);
            var npc = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "npcId").Value);
            if (session.MainTask == null)
            {
                XTrace.WriteLine("sesion中找不到任务");
                return(null);
            }

            var mytask = session.MainTask.CloneEntity();
            if (mytask == null || mytask.id != id || mytask.task_type != (int)TaskType.MAIN_TASK ||
                mytask.user_id != session.Player.User.id || mytask.task_state != (int)TaskStateType.TYPE_UNRECEIVED)
            {
                return(null);
            }

            var basetask = Variable.BASE_TASKMAIN.FirstOrDefault(q => q.id == mytask.task_id); //基表数据
            if (basetask == null)
            {
                return(null);
            }

            return(ReceiveTaskCheck(mytask, basetask.acceptId, npc));
        }
Exemple #2
0
        //private static WAR_DEFENCE_PLAN_UPDATE _objInstance;

        ///// <summary>WAR_DEFENCE_ROLE_UPDATE单体模式</summary>
        //public static WAR_DEFENCE_PLAN_UPDATE GetInstance()
        //{
        //    return _objInstance ?? (_objInstance = new WAR_DEFENCE_PLAN_UPDATE());
        //}

        /// <summary> 修改武将防守方案信息 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            if (!data.ContainsKey("planId") || !data.ContainsKey("areaSetId") || !data.ContainsKey("frontId") ||
                !data.ContainsKey("roles"))
            {
                return(null);
            }
            //玩家防守方案主键id
            var   sendplanId = data.FirstOrDefault(q => q.Key == "planId").Value.ToString();
            Int64 planid = 0; Int32 areasetid = 0; Int32 front = 0;

            if (!Int64.TryParse(sendplanId, out planid))
            {
                return(CommonHelper.ErrorResult((int)ResultType.FRONT_DATA_ERROR));
            }
            //获取防守地形
            var sendareasetid = data.FirstOrDefault(m => m.Key == "areaSetId").Value.ToString(); //玩家设置地形主键id

            if (!Int32.TryParse(sendareasetid, out areasetid))
            {
                return(CommonHelper.ErrorResult((int)ResultType.FRONT_DATA_ERROR));
            }

            //获取防守阵
            var sendfront = data.FirstOrDefault(m => m.Key == "frontId").Value.ToString(); //玩家设置阵基表id

            Int32.TryParse(sendfront, out front);


            var planvo    = GetSendVo(planid, front);
            var roles     = data.FirstOrDefault(m => m.Key == "roles").Value as object[];
            var listroles = GetSendRoles(roles);

            if (listroles == null || planvo == null)
            {
                return(CommonHelper.ErrorResult(ResultType.FRONT_DATA_ERROR));
            }


            var areasetlist = view_user_area_set.GetEntityByUserId(session.Player.User.id, areasetid).ToList();
            //验证前端数据数据
            var tuple = CheckData(listroles, planvo, session.Player.User.id, areasetid);

            if (!tuple.Item1)
            {
                return(CommonHelper.ErrorResult(ResultType.FRONT_DATA_ERROR));
            }
            //验证坐标信息
            if (!CheckPoint(listroles, areasetlist))
            {
                return(CommonHelper.ErrorResult(ResultType.FRONT_DATA_ERROR));
            }

            // if (!CheckFund(session.Player.War.City)) return CommonHelper.ErrorResult(ResultType.WAR_RES_FUNDS_ERROR);
            return(!SavaData(tuple.Item3, tuple.Item2, listroles, planvo, areasetlist) ?
                   CommonHelper.ErrorResult((int)ResultType.DATABASE_ERROR) :
                   CommonHelper.SuccessResult());
        }
Exemple #3
0
        /// <summary> 查看开始指令处理 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}", "WAR_MILITARY_ENTER", "进入军需品功能");
#endif
            if (!data.ContainsKey("id") || !data.ContainsKey("count"))
            {
                return(null);
            }
            var goods_id    = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "id").Value);    //据点id
            var goods_count = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "count").Value); //据点id

            if (goods_count <= 0)
            {
                return(CommonHelper.ErrorResult((int)ResultType.FRONT_DATA_ERROR));
            }
            var station = session.Player.War.PlayerInCityId;//1000024;
            var user    = session.Player.User;

            var goods = Variable.WARGOODS.Values.FirstOrDefault(m => m.city_id == station && m.goods_id == goods_id);
            if (goods == null)
            {
                return(CommonHelper.ErrorResult((int)ResultType.FRONT_DATA_ERROR));
            }
            //判断资源消耗
            if (goods_count > goods.count)
            {
                return(CommonHelper.ErrorResult((int)ResultType.WAR_GOODS_COUNT_ERROR));
            }

            var city = session.Player.War.City.CloneEntity();
            if (!IsMax(city, goods_id, goods_count))
            {
                return(CommonHelper.ErrorResult((int)ResultType.WAR_RES_MAX_ERROR));
            }
            var res_cost = Math.Round(goods_count * goods.goods_buy_price, 2);

            res_cost = Common.GetInstance().GetFunds(res_cost, user.player_influence, goods_id);
            var temp = city.res_funds - res_cost;
            if (temp < 0)
            {
                return(CommonHelper.ErrorResult((int)ResultType.WAR_RES_FUNDS_ERROR));
            }
            city.res_funds          = temp;
            city                    = SetResouce(city, goods_id, goods_count);
            session.Player.War.City = city;
            //资源更新推送
            tg_war_city.UpdateByResouce(city);
            (new Share.War()).SendCity(city.base_id, city.user_id);
            //数量更新
            var _c = goods.count - goods_count;
            goods.count = _c;
            var key = string.Format("{0}_{1}", goods.city_id, goods.goods_id);
            Variable.WARGOODS.AddOrUpdate(key, goods, (k, v) => goods);

            return(new ASObject(BuildData((int)ResultType.SUCCESS, goods)));
        }
Exemple #4
0
        /// <summary>
        /// 获取前端数据
        /// </summary>
        /// <param name="data"></param>
        /// <returns>1.数据是否正确 2.合战武将实体  3.部队基表id 4.部队数量 5.原始数量</returns>
        private Tuple <bool, tg_war_role, Int32, Int32> GetClientData(ASObject data, Int64 userid)
        {
            if (!data.ContainsKey("roleId") || !data.ContainsKey("soldierId") || !data.ContainsKey("count"))
            {
                return(Tuple.Create(false, new tg_war_role(), 0, 0));
            }
            var _roleid = data.FirstOrDefault(q => q.Key == "roleId").Value.ToString();
            var _baseid = data.FirstOrDefault(q => q.Key == "soldierId").Value.ToString();
            var _count  = data.FirstOrDefault(q => q.Key == "count").Value.ToString();

            Int64 roleid; Int32 baseid; Int32 count;

            Int64.TryParse(_roleid, out roleid);
            Int32.TryParse(_baseid, out baseid);
            Int32.TryParse(_count, out count);


            var role    = tg_war_role.GetEntityById(roleid, userid);//FindByid(roleid);
            var soldier = tg_war_army_type.GetEntityByRidAndBaseId(roleid, baseid);

            if (role == null || soldier == null || count <= 0)
            {
                return(Tuple.Create(false, role, 0, 0));
            }

            if (role.type == (int)WarRoleType.NPC)
            {
                var identify = Variable.BASE_IDENTITY.FirstOrDefault(q => q.vocation == (int)VocationType.Roles);
                if (identify == null)
                {
                    return(Tuple.Create(false, role, 0, 0));
                }
                if (identify.soldier < count)
                {
                    return(Tuple.Create(false, role, 0, 0));
                }
            }
            else
            {
                var roleinfo = tg_role.GetEntityByIdUid(role.rid, userid);//FindByid(role.rid);
                if (roleinfo == null)
                {
                    return(Tuple.Create(false, role, 0, 0));
                }
                var baseidentify = Variable.BASE_IDENTITY.FirstOrDefault(q => q.id == roleinfo.role_identity);
                if (baseidentify == null)
                {
                    return(Tuple.Create(false, role, 0, 0));
                }
                if (baseidentify.soldier < count)
                {
                    return(Tuple.Create(false, role, 0, 0));
                }
            }

            return(Tuple.Create(true, role, baseid, count));
        }
        /// <summary> 据点更改名字 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            if (!data.ContainsKey("name") || !data.ContainsKey("id"))
            {
                return(null);
            }

            var id   = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "id").Value);
            var name = data.FirstOrDefault(m => m.Key == "name").Value.ToString();

            name = CommonHelper.FilterCityName(name);

            if (Util.IsFilterWords(name))
            {
                return(CommonHelper.ErrorResult((int)ResultType.DATA_WORDS_ERROR));
            }

            var user = session.Player.User;
            var rule = Variable.BASE_RULE.FirstOrDefault(m => m.id == "32054");

            if (rule == null)
            {
                return(CommonHelper.ErrorResult(ResultType.BASE_TABLE_ERROR));
            }
            var gold = Convert.ToInt32(rule.value);

            if (user.gold < gold)
            {
                return(CommonHelper.ErrorResult(ResultType.BASE_PLAYER_GOLD_ERROR));
            }
            //name = name + "城";
            if (IsExistByName(name))
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_NAME_EXIST));
            }
            var city = session.Player.War.City;

            if (city == null)
            {
                return(CommonHelper.ErrorResult(ResultType.NO_DATA));
            }
            if (city.base_id != id)
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_CITY_NOEXIST));
            }
            // var city = tg_war_city.GetEntityByBaseId(id);
            city.name = name;
            city.Update();
            Common.GetInstance().UpdateGold(user.id, gold, (int)WarCommand.WAR_UPDATE_CITY_NAME);
            var temp = view_war_city.GetEntityById(city.id);

            //var count = tg_war_role.GetRoleCountByCityId(id);
            (new Share.War()).SendCityBuild(temp);
            return(Common.GetInstance().BulidData(temp, (int)WarCityCampType.OWN));
        }
Exemple #6
0
        //private static ROLE_TITLE_LOAD ObjInstance;

        ///// <summary>ROLE_TITLE_LOAD单体模式</summary>
        //public static ROLE_TITLE_LOAD GetInstance()
        //{
        //    return ObjInstance ?? (ObjInstance = new ROLE_TITLE_LOAD());
        //}

        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            try
            {
#if DEBUG
                XTrace.WriteLine("{0}:{1}", "ROLE_TITLE_LOAD", "称号装备");
#endif
                if (!data.ContainsKey("titleId") || !data.ContainsKey("roleId"))
                {
                    return(null);                                                                 //验证前端数据
                }
                var tid = Convert.ToInt64(data.FirstOrDefault(m => m.Key == "titleId").Value.ToString());
                var rid = Convert.ToInt64(data.FirstOrDefault(m => m.Key == "roleId").Value.ToString());

                var title = tg_role_title.GetTitleByTid(tid, session.Player.User.id);
                var role  = tg_role.GetEntityByIdUid(rid, session.Player.User.id); //tg_role.GetEntityById(rid);
                if (title == null || role == null)
                {
                    return(Error((int)ResultType.DATABASE_ERROR));
                }
                if (title.user_id != session.Player.User.id || role.user_id != session.Player.User.id)
                {
                    return(null);                                                                                      //验证玩家数据,防止发包
                }
                if (title.title_state == (int)TitleState.NOT_REACHED)
                {
                    return(Error((int)ResultType.TITLE_NO_REACHED));                                                   //验证称号达成状态
                }
                var btitle = Variable.BASE_ROLETITLE.FirstOrDefault(m => m.id == title.title_id);
                if (btitle == null)
                {
                    return(Error((int)ResultType.BASE_TABLE_ERROR));                  //验证基表信息
                }
                if (!CheckRepeatTitle(role, tid))
                {
                    return(Error((int)ResultType.TITLE_HAS_LOAD));                                //验证同一称号已穿戴
                }
                if (Common.GetInstance().Count(title) >= title.title_count)
                {
                    return(Error((int)ResultType.TITLE_PACKET_FULL));                                                          //验证称号格子是否已满
                }
                //更新称号格子信息
                title = UpdateNewTitle(title, rid);
                if (Common.GetInstance().Count(title) == 1)
                {
                    title.title_load_state = (int)LoadStateType.LOAD;                                            //穿戴后称号的状态
                }
                return(CheckRole(session, role, btitle, title));
            }
            catch (Exception ex)
            {
                XTrace.WriteException(ex);
                return(new ASObject());
            }
        }
Exemple #7
0
        //    private static WAR_DIPLOMACY_IN _objInstance;

        //    /// <summary>WAR_DIPLOMACY_IN单体模式</summary>
        //    public static WAR_DIPLOMACY_IN GetInstance()
        //    {
        //        return _objInstance ?? (_objInstance = new WAR_DIPLOMACY_IN());
        //    }

        /// <summary> 建交 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            if (!data.ContainsKey("type") || !data.ContainsKey("id"))
            {
                return(null);
            }

            var id     = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "id").Value);   //id:[double] 据点基表id
            var type   = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "type").Value); //type:[int] 1 建交 2 同盟
            var userid = session.Player.User.id;
            var city   = (new Share.War()).GetWarCity(id);

            if (city == null)
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_CITY_NOEXIST));
            }
            var p = tg_war_partner.GetEntityByUserId(userid, city.user_id);

            switch (type)
            {
            case 1:    //type:[int] 1 建交
            {
                if (p == null)
                {
                    return(BuildData(0));
                }
                return(p.friendly >= 100 ?
                       CommonHelper.ErrorResult(ResultType.WAR_DIPLOMACY_FULL)
                            : BuildData(p.friendly));
            }

            case 2:    //type:[int] 2 同盟
            {
                if (p == null)
                {
                    return(CommonHelper.ErrorResult(ResultType.WAR_DIPLOMACY_NOTFULL));
                }
                var time = Common.GetInstance().CurrentTime();
                if (p.time < time)
                {
                    return(p.friendly < 100 ?
                           CommonHelper.ErrorResult(ResultType.WAR_DIPLOMACY_NOTFULL)
                                : BuildData(p.friendly));
                }
                return(CommonHelper.ErrorResult(ResultType.WAR_DIPLOMACY_TIME_IN));
            }

            default: { return(CommonHelper.ErrorResult(ResultType.FRONT_DATA_ERROR)); }
            }
        }
Exemple #8
0
        //private static ROLE_TITLE_UNLOAD ObjInstance;

        ///// <summary>ROLE_TITLE_UNLOAD单体模式</summary>
        //public static ROLE_TITLE_UNLOAD GetInstance()
        //{
        //    return ObjInstance ?? (ObjInstance = new ROLE_TITLE_UNLOAD());
        //}

        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            try
            {
#if DEBUG
                XTrace.WriteLine("{0}:{1}", "ROLE_TITLE_UNLOAD", "称号卸载");
#endif
                if (!data.ContainsKey("roleId") || !data.ContainsKey("titleId"))
                {
                    return(null);                                                                //验证前端传递参数信息
                }
                var rid = Convert.ToInt64(data.FirstOrDefault(m => m.Key == "roleId").Value.ToString());
                var tid = Convert.ToInt64(data.FirstOrDefault(m => m.Key == "titleId").Value.ToString());

                var role  = tg_role.GetEntityById(rid);
                var title = tg_role_title.GetTitleByTid(tid, session.Player.User.id);
                if (role == null || title == null)
                {
                    return(Error((int)ResultType.DATABASE_ERROR));                                //验证称号信息
                }
                //验证玩家信息
                if (role.user_id != session.Player.User.id || title.user_id != session.Player.User.id)
                {
                    return(null);
                }

                //检查武将身上是否已经穿戴该称号,同时验证称号格子是否装备了该武将
                if (!CheckRole(role, tid) || !CheckTitle(title, rid))
                {
                    return(Error((int)ResultType.FRONT_DATA_ERROR));
                }
                if (title.title_load_state == (int)LoadStateType.UNLOAD)
                {
                    return(Error((int)ResultType.TITLE_UN_LOAD));                                                    //验证称号是否已经卸载
                }
                //卸载称号后更新称号格子上的武将信息
                title = DeleteRole(title, rid);

                //更新称号信息,对应处理武将信息
                return(!tg_role_title.UpdateByTitle(title) ?
                       Error((int)ResultType.DATABASE_ERROR) :
                       UpdateRole(session, role, title.title_id, title));
            }
            catch (Exception ex)
            {
                XTrace.WriteException(ex);
                return(new ASObject());
            }
        }
Exemple #9
0
            /// <summary>
            /// 说明:任务步骤用 类型_类型id_完成值来表示。
            /// 例如1_200001_1, 1表示任务类型对话,200001表示npc的id,对话类型中0表示未完成,1表示完成
            /// 多步任务用|来分割,例如两步对话任务为 1_200001_1|1_200002_1.
            /// </summary>
            public ASObject CommandStart(TGGSession session, ASObject data)
            {
#if DEBUG
                XTrace.WriteLine("{0}:{1}", "TASK_FINISH", "完成任务");
#endif
#if DEBUG
                var sw = Stopwatch.StartNew();
#endif
                //type:0表示接受任务,1表示完成任务 2 表示提交任务
                if (!data.ContainsKey("task") || !data.ContainsKey("npcId"))
                {
                    return(null);
                }
                var id  = Convert.ToInt64(data.FirstOrDefault(q => q.Key == "task").Value);
                var npc = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "npcId").Value);
                if (session.MainTask == null)
                {
                    XTrace.WriteLine("sesion中找不到任务");
                    return(null);
                }
                var userid = session.Player.User.id;
                var mytask = session.MainTask.CloneEntity();

                if (mytask == null || mytask.id != id || mytask.task_type != (int)TaskType.MAIN_TASK ||
                    mytask.user_id != userid || mytask.task_state == (int)TaskStateType.TYPE_FINISHED)
                {
                    return(null);
                }

                var basetask = Variable.BASE_TASKMAIN.FirstOrDefault(q => q.id == mytask.task_id); //基表数据
                if (basetask == null)
                {
                    return(null);
                }

                var baseindex = Variable.BASE_TASKMAIN.IndexOf(basetask);
                if (mytask.task_state != (int)TaskStateType.TYPE_REWARD)  //验证任务是否完成
                //return new ASObject(BulidReturnData((int)ResultType.TASK_MAINTASK_UNFINISHED, null));
                {
                    return(null);
                }

#if DEBUG
                sw.Stop();
                XTrace.WriteLine("指令 {1} 运行总耗时:{0} 毫秒", sw.ElapsedMilliseconds.ToString(), GetType().Namespace);
#endif
                return(SubmitTaskCheck(mytask, npc, baseindex)); //验证提交任务
            }
Exemple #10
0
        //private static ROLE_TITLE_SELECT ObjInstance;

        ///// <summary>ROLE_TITLE_SELECT单体模式</summary>
        //public static ROLE_TITLE_SELECT GetInstance()
        //{
        //    return ObjInstance ?? (ObjInstance = new ROLE_TITLE_SELECT());
        //}

        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            try
            {
#if DEBUG
                XTrace.WriteLine("{0}:{1}", "ROLE_TITLE_SELECT", "称号选择");
#endif
                if (!data.ContainsKey("id"))
                {
                    return(null);
                }
                var btid   = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "id").Value.ToString());
                var player = session.Player;

                //获得称号信息
                var title = tg_role_title.GetTitleByUseridTid(player.User.id, btid);
                if (title == null)
                {
                    return(Error((int)ResultType.FRONT_DATA_ERROR));                //验证前端选择的称号信息
                }
                var btitle = Variable.BASE_ROLETITLE.FirstOrDefault(m => m.id == btid);
                if (btitle == null)
                {
                    return(Error((int)ResultType.BASE_TABLE_ERROR));                 //验证基表信息
                }
                //根据称号类型返回对应称号完成次数
                var count = Count(player.UserExtend, btitle.methods);
                return(new ASObject(Common.GetInstance().BuildTitleSelect((int)ResultType.SUCCESS, count, title)));
            }
            catch (Exception ex)
            {
                XTrace.WriteException(ex);
                return(new ASObject());
            }
        }
Exemple #11
0
        //public static WORK_DROP ObjInstance;

        ///// <summary> WORK_DROP单体模式 </summary>
        //public static WORK_DROP GetInstance()
        //{
        //    return ObjInstance ?? (ObjInstance = new WORK_DROP());
        //}

        public ASObject CommandStart(TGGSession session, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}工作任务放弃", "WORK_DROP", session.Player.User.player_name);
#endif
            if (!data.ContainsKey("id"))
            {
                return(null);
            }
            var id   = Convert.ToInt64(data.FirstOrDefault(q => q.Key == "id").Value);
            var task = tg_task.GetEntityByIdAndUserId(id, session.Player.User.id); //tg_task.FindByid(id);

            if (task == null || task.task_type != (int)TaskType.WORK_TASK)
            {
                return(BuildData((int)ResultType.TASK_VOCATION_NOTASK, null));
            }

            if (task.task_step_type == (int)TaskStepType.RAISE_COIN)
            {
                var key = string.Format("{0}_{1}_{2}", (int)CDType.WorkTask, task.user_id, task.id);
                Variable.CD.AddOrUpdate(key, true, (k, v) => true);
            }
            task    = Common.GetInstance().WorkTasksInit(task);
            task.id = id;
            task.Update();
            Common.GetInstance().ClearTime(task.user_id);
            return(BuildData((int)ResultType.SUCCESS, task));
        }
Exemple #12
0
        //private static WAR_CITY_IN _objInstance;

        ///// <summary>WAR_CITY_IN单体模式</summary>
        //public static WAR_CITY_IN GetInstance()
        //{
        //    return _objInstance ?? (_objInstance = new WAR_CITY_IN());
        //}

        /// <summary> 进入据点 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            if (!data.ContainsKey("id"))
            {
                return(null);
            }
            var id     = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "id").Value);//id:[double] 据点基表id
            var userid = session.Player.User.id;

            var temp = view_war_city.GetEntityByUserId(userid, id);

            if (temp == null)
            {
                return(CommonHelper.ErrorResult(ResultType.NO_DATA));
            }
            var city = BuildCity(temp);

            (new Share.War()).SaveWarCityAll(city);

            var roles = tg_war_role.GetPlayerWarRoleByUserId(userid, id, (int)WarRoleType.NPC); //获取备大将聚合
            var rs    = (new Share.War()).ToWarRoleInfoVos(roles);

            session.Player.War.PlayerInCityId = id;

            return(BulidData(temp, (int)WarCityCampType.OWN, rs));
        }
        //private static WAR_DEFENCE_PLAN_COST _objInstance;

        ///// <summary>WAR_DEFENCE_PLAN_COST单体模式</summary>
        //public static WAR_DEFENCE_PLAN_COST GetInstance()
        //{
        //    return _objInstance ?? (_objInstance = new WAR_DEFENCE_PLAN_COST());
        //}

        /// <summary> 修改防守方案消费 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            if (!data.ContainsKey("planId"))
            {
                return(null);
            }
            var   getplan  = data.FirstOrDefault(q => q.Key == "planId").Value.ToString();
            Int64 planid   = 0; Int64.TryParse(getplan, out planid);
            var   planinfo = tg_war_city_plan.GetEntityByPlanId(planid, session.Player.User.id);

            if (planinfo == null)
            {
                return
                    (CommonHelper.ErrorResult(ResultType.FRONT_DATA_ERROR));
            }

            //不是第一次修改
            if (planinfo.is_update == 1)
            {
                var city = session.Player.War.City.CloneEntity();
                if (!CheckFunds(city))
                {
                    return(CommonHelper.ErrorResult(ResultType.WAR_RES_FUNDS_ERROR));
                }
                session.Player.War.City = city;
            }
            //第一次修改
            planinfo.is_update = 1;
            planinfo.Update();

            return(BuildData(planinfo));
        }
Exemple #14
0
        /// <summary> 出征选择目标 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            if (!data.ContainsKey("id"))
            {
                return(null);
            }
            var id = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "id").Value);    //id:[double] 据点基表id (要出征的据点)

            var userid = session.Player.User.id;

            session.Player.War.WarBattle = new WarEntity();
            var city = (new Share.War()).GetWarCity(id, userid);

            if (city == null)
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_CITY_NOEXIST));
            }

            var olist = new List <int>(); //己方可操作的据点
            var rlist = new List <int>(); //敌方可操作的据点
            var time  = (DateTime.Now.Ticks - 621355968000000000) / 10000;

            var psList = tg_war_partner.GetEntityByUserId(userid);

            if (city.guard_time < time) //自己据点不在保护时间内
            {
                session.Player.War.WarBattle.rivalMap = (new Share.War()).GetBattleMaps(id, psList, userid, new List <int>(), ref rlist);
            }
            session.Player.War.WarBattle.Map                  = (new Share.War()).GetMaps(id, psList, userid, new List <int>(), ref olist);
            session.Player.War.WarBattle.warGoCityId          = id;
            session.Player.War.WarBattle.OperableCityIds      = olist;
            session.Player.War.WarBattle.OperableRivalCityIds = rlist;
            return(BulidData(olist, rlist));
        }
Exemple #15
0
        //private static ROLE_TITLE_PACKET_BUY _objInstance;

        ///// <summary>ROLE_TITLE_PACKET_BUY单体模式</summary>
        //public static ROLE_TITLE_PACKET_BUY GetInstance()
        //{
        //    return _objInstance ?? (_objInstance = new ROLE_TITLE_PACKET_BUY());
        //}

        /// <summary>称号解锁</summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            try
            {
#if DEBUG
                XTrace.WriteLine("{0}:{1}", "ROLE_TITLE_PACKET_BUY", "称号解锁");
#endif
                if (!data.ContainsKey("titleId"))
                {
                    return(null);                                 //验证前端传递数据
                }
                var tid  = Convert.ToInt64(data.FirstOrDefault(m => m.Key == "titleId").Value.ToString());
                var user = session.Player.User.CloneEntity();

                var title = tg_role_title.GetTitleByTid(tid, user.id);
                if (title == null)
                {
                    return(Error((int)ResultType.FRONT_DATA_ERROR));
                }
                if (title.user_id != user.id)
                {
                    return(null);                            //验证玩家信息,防止发包
                }
                if (title.title_count >= 3)
                {
                    return(Error((int)ResultType.TITLE_COUNT_FULL)); //验证已解锁称号格子数量
                }
                var cost = CostGold(title);                          //计算解锁格子需要花费的元宝信息
                var gold = user.gold;
                user.gold = user.gold - cost;
                if (user.gold < 0)
                {
                    return(Error((int)ResultType.BASE_PLAYER_GOLD_ERROR));
                }
                user.Update();

                //记录玩家元宝资源消费记录
                log.GoldInsertLog(cost, user.id, (int)ModuleNumber.TITLE, (int)TitleCommand.ROLE_TITLE_PACKET_BUY);

                (new Share.User()).REWARDS_API((int)GoodsType.TYPE_GOLD, user);  //推送用户资源消耗更新
                session.Player.User = user;

                //更新解锁后称号信息
                if (!tg_role_title.UpdateByTitle(title))
                {
                    return(Error((int)ResultType.DATABASE_ERROR));
                }

                //记录元宝花费日志
                var logdata = string.Format("{0}_{1}_{2}_{3}", "Gold", gold, cost, user.gold);
                (new Share.Log()).WriteLog(user.id, (int)LogType.Use, (int)ModuleNumber.TITLE, (int)TitleCommand.ROLE_TITLE_PACKET_BUY, "称号", "解锁", "元宝", (int)GoodsType.TYPE_GOLD, cost, user.gold, logdata);
                return(new ASObject(BuildLoadData((int)ResultType.SUCCESS, title)));
            }
            catch (Exception ex)
            {
                XTrace.WriteException(ex);
                return(new ASObject());
            }
        }
        /// <summary>
        /// 获取前端数据
        /// </summary>
        /// <param name="data"></param>
        /// <returns></returns>
        private Tuple <bool, Int32, Int64> GetFrontData(ASObject data)
        {
            if (!data.ContainsKey("planId") || !data.ContainsKey("type"))
            {
                return(Tuple.Create(false, 0, 0L));
            }
            var   sendplanid = data.FirstOrDefault(q => q.Key == "planId").Value.ToString();
            var   sendtype   = data.FirstOrDefault(q => q.Key == "type").Value.ToString();
            Int64 planid     = 0;
            Int32 type       = 0;

            if (!Int64.TryParse(sendplanid, out planid) || !Int32.TryParse(sendtype, out type))
            {
                return(Tuple.Create(false, 0, 0L));
            }
            return(Tuple.Create(true, type, planid));
        }
Exemple #17
0
        /// <summary> 确定运输目标城市 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            if (!data.ContainsKey("id"))
            {
                return(null);
            }
            var cityid = data.FirstOrDefault(m => m.Key == "id").Value.ToString();
            var id     = Convert.ToInt32(cityid);

            if (!session.Player.War.Transport.OperableCityIds.Contains(id))
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_TARGET_ERROR));
            }
            var rule = Variable.BASE_RULE.FirstOrDefault(m => m.id == "32033");

            if (rule == null)
            {
                return(CommonHelper.ErrorResult(ResultType.BASE_TABLE_ERROR));
            }
            var mps     = session.Player.War.Transport.Map;
            var startId = Convert.ToString(session.Player.War.PlayerInCityId);
            var dij     = new Dijkstra(mps, startId, cityid);

            dij.Find();

            var distance = dij.EndNode.MinDistance.ToString();
            var str      = rule.value.Replace("distance", distance);
            var express  = CommonHelper.EvalExpress(str);
            var time     = Convert.ToInt32(express);
            var city     = (new Share.War()).GetWarCity(id);
            var baseCity = Variable.BASE_WARCITYSIZE.FirstOrDefault(m => m.id == city.size);

            if (baseCity == null)
            {
                return(CommonHelper.ErrorResult(ResultType.BASE_TABLE_ERROR));
            }

            var foods = baseCity.foods - city.res_foods;
            var gun   = baseCity.goods - city.res_gun;
            var horse = baseCity.goods - city.res_horse;
            var kuwu  = baseCity.goods - city.res_kuwu;
            var razor = baseCity.goods - city.res_razor;

            var sX = new ResourceEntity
            {
                foods = foods < 0 ? 0 : foods,
                gun   = gun < 0 ? 0 : gun,
                horse = horse < 0 ? 0 : horse,
                kuwu  = kuwu < 0 ? 0 : kuwu,
                razor = razor < 0 ? 0 : razor
            };

            session.Player.War.Transport.LockCityId    = id;
            session.Player.War.Transport.LockTime      = time;
            session.Player.War.Transport.LockShangXian = sX;

            return(BuildData(time, sX));
        }
Exemple #18
0
        /// <summary> 同意建交 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            if (!data.ContainsKey("id") || !data.ContainsKey("type"))
            {
                return(null);
            }
            var id   = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "id").Value);
            var type = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "type").Value);//type:[int] 0:拒绝 1:同意

            var temp = tg_war_partner.GetEntityById(id, session.Player.User.id);

            if (temp == null)
            {
                return(CommonHelper.ErrorResult(ResultType.NO_DATA));
            }
            var time = Common.GetInstance().CurrentTime();

            if (temp.time > time)
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_YES_PARTNER));
            }
            if (temp.state == (int)WarPertnerType.ALLIANCE_IN)
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_YES_RESULT));
            }

            var count = session.Player.UserExtend.war_total_own;
            var of    = session.Player.User.office;
            var bof   = Variable.BASE_OFFICE.FirstOrDefault(m => m.id == of);

            if (bof == null)
            {
                return(CommonHelper.ErrorResult(ResultType.BASE_TABLE_ERROR));
            }
            var c = Convert.ToDouble(count) / Convert.ToDouble(bof.total_own);  //占有率

            switch (type)
            {
            case 0: { return(Refuse(temp, c)); }

            case 1: { return(Agree(temp, c)); }

            default: { return(CommonHelper.ErrorResult(ResultType.UNKNOW_ERROR)); }
            }
        }
Exemple #19
0
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}工作任务领取", "WORK_ACCEPT", session.Player.User.player_name);
#endif
            if (!data.ContainsKey("id"))
            {
                return(null);
            }
            var id     = Convert.ToInt64(data.FirstOrDefault(q => q.Key == "id").Value);
            var userid = session.Player.User.id;
            var mytask = tg_task.GetEntityByIdAndUserId(id, userid);
            if (tg_task.GetEntityByUserIdAndType(userid, (int)TaskStateType.TYPE_UNRECEIVED, (int)TaskType.WORK_TASK))
            {
                return(null);
            }
            var now = (DateTime.Now.Ticks - 621355968000000000) / 10000;
            if (mytask == null || mytask.task_state != (int)TaskStateType.TYPE_UNRECEIVED || mytask.task_type != (int)TaskType.WORK_TASK)
            {
                return(BuildData((int)ResultType.TASK_VOCATION_NOTASK, 0, null));
            }
            var usertask = tg_task.GetTaskQueryByType(userid, (int)TaskType.WORK_TASK);
            if (usertask.Any(q => q.task_state == (int)TaskStateType.TYPE_REWARD || q.task_state == (int)TaskStateType.TYPE_UNFINISHED))
            {
                return(BuildData((int)ResultType.WORK_IS_STARTED, 0, null));
            }
            var baseinfo = Variable.BASE_TASKVOCATION.FirstOrDefault(q => q.id == mytask.task_id);
            if (baseinfo == null)
            {
                return(BuildData((int)ResultType.TASK_VOCATION_NOTASK, 0, null));
            }
            //技能验证
            if (!CheckSkill(baseinfo, session.Player.Role))
            {
                return(BuildData((int)ResultType.TASK_SKILL_LACK, 0, null));
            }
            //验证体力
            if (!PowerOperate(session.Player.Role.Kind, userid))
            {
                return(BuildData((int)ResultType.BASE_ROLE_POWER_ERROR, 0, null));
            }
            //验证冷却时间
            if (!CheckTime(mytask.task_coolingtime))
            {
                return(BuildData((int)ResultType.WORK_TIME_WRONG, 0, null));
            }
            mytask.task_starttime   = (DateTime.Now.Ticks - 621355968000000000) / 10000;
            mytask.task_coolingtime = now + baseinfo.coolingTime * 1000;
            mytask.task_endtime     = now + baseinfo.limitTime * 1000;

            TaskThreadStart(mytask);//接受任务启动线程

            Common.GetInstance().LimitTimeThreading(baseinfo.limitTime, mytask);
            mytask.task_state = (int)TaskStateType.TYPE_UNFINISHED;
            mytask.Update();
            return(BuildData((int)ResultType.SUCCESS, mytask));
        }
Exemple #20
0
        /// <summary>  保存地形设定 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            if (!data.ContainsKey("id") || !data.ContainsKey("list"))
            {
                return(null);
            }
            var id   = Convert.ToInt64(data.FirstOrDefault(m => m.Key == "id").Value); //玩家地形设定vo
            var list = data.FirstOrDefault(m => m.Key == "list").Value as object[];    //玩家地形设定vo

            if (list == null || id <= 0)
            {
                return(CommonHelper.ErrorResult((int)ResultType.FRONT_DATA_ERROR));
            }
            //保存空地形
            if (!list.Any())
            {
                return(!DataSave(id) ?
                       CommonHelper.ErrorResult((int)ResultType.DATABASE_ERROR) :
                       CommonHelper.SuccessResult());
            }
            //if (tg_war_area.FindByid(id) == null)
            if (tg_war_area.GetEntityByUseridAndId(session.Player.User.id, id) == null)
            {
                return(CommonHelper.ErrorResult((int)ResultType.FRONT_DATA_ERROR));
            }
            //解析前端数据并转换成实体集合
            var listentity = GetAreaSet(list, id);

            //验证用户是否有该地形
            if (!CheckArea(listentity, session.Player.User.id))
            {
                return(CommonHelper.ErrorResult((int)ResultType.WAR_NO_AREA));
            }
            //验证地形设定的坐标
            if (!CheckPoint(listentity))
            {
                return(CommonHelper.ErrorResult((int)ResultType.WAR_POINT_ERROR));
            }

            //保存到数据库
            return(!DataSave(listentity) ?
                   CommonHelper.ErrorResult((int)ResultType.DATABASE_ERROR) :
                   CommonHelper.SuccessResult());
        }
Exemple #21
0
        public void ResultReceived(IPendingServiceCall call)
        {
            ASObject result = call.Result as ASObject;

            this._netConnection.RaiseNetStatus(result);
            if (!result.ContainsKey("level") || !(result["level"].ToString() == "error"))
            {
                this._netConnection.RaiseOnConnect();
            }
        }
        /// <summary> 出征资源结算 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            if (!data.ContainsKey("id"))
            {
                return(null);
            }
            var id = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "id").Value);         //id:[int] 出征Vo的主键Id
            var bq = tg_war_battle_queue.GetEntityByUseridAndId(id, session.Player.User.id); //tg_war_battle_queue.FindByid(id);

            return(bq == null?CommonHelper.ErrorResult(ResultType.NO_DATA) : (new Share.War()).SettlementResource(bq));
        }
Exemple #23
0
        /// <summary> 入驻 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            if (!data.ContainsKey("id"))
            {
                return(null);
            }
            var id     = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "id").Value); //id:[int] 出征Vo的主键Id
            var userid = session.Player.User.id;
            var bq     = tg_war_battle_queue.GetEntityByUseridAndId(id, userid);         //FindByid(id);

            if (bq == null)
            {
                return(CommonHelper.ErrorResult(ResultType.NO_DATA));
            }

            if (bq.time > Common.GetInstance().CurrentTime())
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_NOT_ARRIVE));
            }

            var city = (new Share.War()).GetWarCity(bq.end_CityId, userid);

            if (city == null)
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_CITY_NOEXIST));
            }

            var rids = bq.rid.Split(',').Select(m => Convert.ToInt64(m)).ToList();

            if (!rids.Any())
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_ROLE_NOEXIST));
            }
            var roles = tg_war_role.GetEntityListByIds(rids); //合战战武将集合

            if (!roles.Any())
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_ROLE_NOEXIST));
            }

            var res = new ResourceEntity();

            res  = (new Share.War()).BuildResourceEntity(roles);
            res  = (new Share.War()).BuildResourceEntity(bq, res);
            city = (new Share.War()).AddCityResources(res, city);

            bq.Delete();
            city.Update();

            (new Share.War()).SaveWarCityAll(city);
            (new Share.War()).RolesInitResultCity(roles, bq.end_CityId);
            (new Share.War()).SendCity(city.base_id, city.user_id);
            return(CommonHelper.SuccessResult());
        }
        public void ResultReceived(IPendingServiceCall call)
        {
            ASObject info = call.Result as ASObject;

            _netConnection.RaiseNetStatus(info);
            if ((info == null) || (info.ContainsKey("level") && info["level"].ToString() == "error"))
            {
                return;
            }
            _netConnection.RaiseOnConnect();
        }
Exemple #25
0
        /// <summary>
        /// 说明:任务步骤用 类型_类型id_完成值来表示。
        /// 例如1_200001_1, 1表示任务类型对话,200001表示npc的id,对话类型中0表示未完成,1表示完成
        /// 多步任务用|来分割,例如两步对话任务为 1_200001_1|1_200002_1.
        /// </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
#if DEBUG
            XTrace.WriteLine("{0}:{1}", "TASK_FINISH", "任务更新");
#endif
#if DEBUG
            var sw = Stopwatch.StartNew();
#endif
            //type:0表示接受任务,1表示完成任务 2 表示提交任务
            if (!data.ContainsKey("task") || !data.ContainsKey("npcId"))
            {
                return(null);
            }
            var id  = Convert.ToInt64(data.FirstOrDefault(q => q.Key == "task").Value);
            var npc = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "npcId").Value);
            if (session.MainTask == null)
            {
                XTrace.WriteLine("sesion中找不到任务");
                return(null);
            }
            var mytask = session.MainTask.CloneEntity();
            if (mytask == null || mytask.id != id || mytask.task_type != (int)TaskType.MAIN_TASK ||
                mytask.user_id != session.Player.User.id)
            {
                return(null);
            }

            var basetask = Variable.BASE_TASKMAIN.FirstOrDefault(q => q.id == mytask.task_id); //基表数据
            if (basetask == null)
            {
                return(null);
            }


#if DEBUG
            sw.Stop();
            XTrace.WriteLine("指令 {1} 运行总耗时:{0} 毫秒", sw.ElapsedMilliseconds.ToString(), GetType().Namespace);
#endif

            return(FinishTaskCheck(mytask, basetask.stepCondition, npc));
        }
Exemple #26
0
        //private static WAR_FIGHT_LINE_ADD _objInstance;

        ///// <summary>WAR_FIGHT_LINE_ADD单体模式</summary>
        //public static WAR_FIGHT_LINE_ADD GetInstance()
        //{
        //    return _objInstance ?? (_objInstance = new WAR_FIGHT_LINE_ADD());
        //}

        /// <summary> 合战武将战斗线路添加 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            if (!data.ContainsKey("roles") || !data.ContainsKey("line") || !data.ContainsKey("type"))
            {
                return(null);
            }
            var roleid = Convert.ToInt64(data.FirstOrDefault(q => q.Key == "roles").Value.ToString());
            var type   = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "type").Value.ToString());

            if (!CheckRole(roleid))
            {
                return(null);
            }
            var line = data.FirstOrDefault(q => q.Key == "line").Value.ToString();

            if (!CheckLine(line, session.Player.User.id, type, roleid))
            {
                return(null);
            }
            return(CommonHelper.SuccessResult());
        }
Exemple #27
0
        /// <summary>
        /// 获取前端数据
        /// </summary>
        /// <param name="data"></param>
        /// <returns>1.数据是否正确 2.武将id 3:兵种表基表id</returns>
        private Tuple <bool, Int64, Int32> GetClientData(ASObject data)
        {
            if (!data.ContainsKey("roleId") || !data.ContainsKey("soldierId"))
            {
                return(Tuple.Create(false, 0L, 0));
            }
            var   _roleid = data.FirstOrDefault(q => q.Key == "roleId").Value.ToString();
            var   _baseid = data.FirstOrDefault(q => q.Key == "soldierId").Value.ToString();
            Int64 roleid; Int32 baseid;

            Int64.TryParse(_roleid, out roleid);
            Int32.TryParse(_baseid, out baseid);

            var soldier = tg_war_army_type.GetEntityByRidAndBaseId(roleid, baseid);

            if (soldier != null)
            {
                return(Tuple.Create(false, roleid, 0));
            }
            return(Tuple.Create(true, roleid, baseid));
        }
Exemple #28
0
        /// <summary> 本城转移 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            if (!data.ContainsKey("id"))
            {
                return(null);
            }

            var id      = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "id").Value); //id:[double] 要转本城据点id
            var userid  = session.Player.User.id;
            var main_id = session.Player.War.WarCityId;
            var extend  = session.Player.UserExtend.CloneEntity();
            var time    = Common.GetInstance().CurrentTime();

            if (extend.war_base_time > time)
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_TIME_ERROR));
            }
            if (main_id == 0)
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_NO_MAIN));
            }
            var citys = Variable.WarCityAll.Values.Where(m => (m.base_id == id || m.base_id == main_id) && m.user_id == userid).ToList();

            if (citys.Count() != 2)
            {
                return(CommonHelper.ErrorResult(ResultType.NO_DATA));
            }

            var rule = Variable.BASE_RULE.FirstOrDefault(m => m.id == "32096");

            if (rule == null)
            {
                return(CommonHelper.ErrorResult(ResultType.BASE_TABLE_ERROR));
            }
            extend.war_base_time = (DateTime.Now.AddMinutes(Convert.ToInt32(rule.value)).Ticks - 621355968000000000) / 10000;

            foreach (var item in citys)
            {
                item.type = item.type == (int)WarCityType.MAINCITY ?
                            (int)WarCityType.VICECITY : (int)WarCityType.MAINCITY;
                item.Update();
                (new Share.War()).SaveWarCityAll(item);
                (new Share.War()).SendCity(item.base_id, item.user_id);
            }

            extend.Update();
            session.Player.UserExtend    = extend;
            session.Player.War.WarCityId = id;
            var ls = citys.Select(item => EntityToVo.ToStrongHoldShowVo(item, extend.war_base_time)).ToList();

            return(Common.GetInstance().BuildData(ls));
        }
Exemple #29
0
        //private static WAR_DETERMINE_TARGET _objInstance;

        ///// <summary>WAR_DETERMINE_TARGET单体模式</summary>
        //public static WAR_DETERMINE_TARGET GetInstance()
        //{
        //    return _objInstance ?? (_objInstance = new WAR_DETERMINE_TARGET());
        //}

        /// <summary> 出征确定目标 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            if (!data.ContainsKey("id"))
            {
                return(null);
            }

            var id   = Convert.ToInt32(data.FirstOrDefault(m => m.Key == "id").Value);
            var ids  = session.Player.War.WarBattle.OperableRivalCityIds;
            var _ids = session.Player.War.WarBattle.OperableCityIds;

            if (!(ids.Contains(id) || _ids.Contains(id)))
            {
                return(CommonHelper.ErrorResult(ResultType.WAR_WAR_TARGET_ERROR));
            }

            var rule = Variable.BASE_RULE.FirstOrDefault(m => m.id == "32033");

            if (rule == null)
            {
                return(CommonHelper.ErrorResult(ResultType.BASE_TABLE_ERROR));
            }
            var mps = new List <Core.Common.Util.Map>();

            if (ids.Contains(id))
            {
                mps = session.Player.War.WarBattle.rivalMap;
            }
            if (_ids.Contains(id))
            {
                mps = session.Player.War.WarBattle.Map;
            }

            var startId = Convert.ToString(session.Player.War.WarBattle.warGoCityId);
            var dij     = new Dijkstra(mps, startId, Convert.ToString(id));

            dij.Find();
            var distance = dij.EndNode.MinDistance.ToString();
            var str      = rule.value.Replace("distance", distance);
            var express  = CommonHelper.EvalExpress(str);
            var time     = Convert.ToInt32(express);

            session.Player.War.WarBattle.LockTime   = time;
            session.Player.War.WarBattle.LockCityId = id;
            session.Player.War.WarBattle.lastCityId = Convert.ToInt32(dij.EndNode.LastSecond());//是否有其他大名攻击 0:有  -1 没有
            var type = tg_war_battle_queue.GetCityIsAttack(id) ? 0 : -1;

            return(BuildData(time, type));
        }
        //private static WAR_FIGHT_LINE_REMOVE _objInstance;

        ///// <summary>WAR_FIGHT_LINE_REMOVE单体模式</summary>
        //public static WAR_FIGHT_LINE_REMOVE GetInstance()
        //{
        //    return _objInstance ?? (_objInstance = new WAR_FIGHT_LINE_REMOVE());
        //}

        /// <summary> 移除线路 </summary>
        public ASObject CommandStart(TGGSession session, ASObject data)
        {
            try
            {
# if DEBUG
                XTrace.WriteLine("{0}:{1}", "WAR_FIGHT_LINE_REMOVE", "移除线路");
#endif
                if (!data.ContainsKey("roles") || !data.ContainsKey("type"))
                {
                    return(CommonHelper.ErrorResult((int)ResultType.FRONT_DATA_ERROR));
                }

                var rid  = Convert.ToInt64(data.FirstOrDefault(q => q.Key == "roles").Value.ToString());
                var type = Convert.ToInt32(data.FirstOrDefault(q => q.Key == "type").Value.ToString());

                var role = tg_role.FindByid(rid);
                if (role == null)
                {
                    return(CommonHelper.ErrorResult((int)ResultType.ROLE_NOT_EXIST));
                }

                Variable.RemoveLine(role.user_id, type, rid);   //移除用户武将合战线路
                return(CommonHelper.SuccessResult());
            }
Exemple #31
0
 public GGChatUser(ASObject user)
 {
     try
     {
         if( user.ContainsKey("banned") )
             _banned = bool.Parse(user["banned"].ToString());
         if (user.ContainsKey("color"))
             _color = (string)user["color"];
         if (user.ContainsKey("id"))
             _id = int.Parse(user["id"].ToString());
         if (user.ContainsKey("level"))
             _level = int.Parse(user["level"].ToString());
         if (user.ContainsKey("name"))
             _name = (string)user["name"];
         if (user.ContainsKey("sex"))
             _gender = int.Parse(user["sex"].ToString());
     }
     catch { }
 }
Exemple #32
0
 void OnHtmlEditorImageChangedEvent(HtmlEditor.Event eventType, ASObject value)
 {
     StringBuilder sb = new StringBuilder();
     sb.Append("<img src='").Append(value.getString("path")).Append("'");
     if(value.ContainsKey("width"))
         sb.Append(" width='").Append(value.getString("width")).Append("px'");
     if (value.ContainsKey("height"))
         sb.Append(" height='").Append(value.getString("height")).Append("px'");
     if(value.ContainsKey("alt"))
         sb.Append(" alt='").Append(value.getString("alt")).Append("'");
     sb.Append(" />");
     if(eventType == Event.Create)
         runtime.call("HtmlEditorInsertContent", new object[] { sb.ToString()});
     else if(eventType == Event.Update)
         runtime.call("HtmlEditorReplaceContent", new object[] { sb.ToString() });
 }
Exemple #33
0
        /// <summary>
        /// 更新邮件记录
        /// </summary>
        /// <param name="mail"></param>
        /// <param name="updateFields"></param>
        public void updateMailRecord(ASObject mail, string[] updateFields)
        {
            if (mail == null || updateFields == null || updateFields.Length == 0)
                return;
            string sql = @"update ML_Mail set ";
            StringBuilder sb = new StringBuilder();
            sb.Append(sql);
            foreach (string field in updateFields)
            {
                sb.Append(field).Append("=@").Append(field).Append(",");
            }
            if (sb.ToString().LastIndexOf(",") != -1)
                sb.Remove(sb.ToString().LastIndexOf(","), 1);
            if(mail.ContainsKey("id"))
                sb.Append(" where id=@id");
            else
                sb.Append(" where uuid=@uuid");

            SQLiteCommand cmd = null;
            try
            {
                cmd = new SQLiteCommand(sb.ToString(), DBWorker.GetConnection());
                if (mail.ContainsKey("id"))
                    cmd.Parameters.AddWithValue("@id", mail["id"]);
                else
                    cmd.Parameters.AddWithValue("@uuid", mail["uuid"]);
                foreach (string field in updateFields)
                {
                    cmd.Parameters.AddWithValue("@" + field, mail[field]);
                }

                cmd.ExecuteNonQuery();

                cmd.Dispose();
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.Write(ex.StackTrace);
            }
            finally
            {
                if (cmd != null)
                {
                    cmd.Dispose();
                }
            }
        }
Exemple #34
0
        private void showMail(ASObject mail)
        {
            try
            {
                if (Mail_Type == MailType.Dsbox)
                {
                    btnSave.IsEnabled = false;
                    btnAudit.IsEnabled = false;
                }

                txtTo.TextChanged -= txtTo_TextChanged;
                cboFrom.SelectionChanged -= cboFrom_SelectionChanged;

                string mail_account = mail["mail_account"] as string;
                from = MailSendWorker.instance.findAccount(mail_account);

                if (from == null)
                {
                    txtTo.TextChanged += txtTo_TextChanged;
                    cboFrom.SelectionChanged += cboFrom_SelectionChanged;
                }

                string file = mail.getString("mail_file");
                StringBuilder sb = new StringBuilder();
                Mail_Message = MailWorker.instance.ParseMail(file);
                if (Mail_Type == MailType.Transmit)
                    txtSubject.Text = "Fw:" + mail["subject"] as string;
                else if (Mail_Type == MailType.Reply || Mail_Type == MailType.AllReply)
                {
                    txtSubject.Text = "Re:" + mail["subject"] as string;
                }
                else
                    txtSubject.Text = mail["subject"] as string;

                sb.Clear();
                Mail_t_AddressList addresses = Mail_Message.Cc;
                if (addresses != null)
                {
                    foreach (Mail_t_Mailbox mailbox in addresses.Mailboxes)
                    {
                        sb.Append(mailbox.Address).Append(";");
                    }
                    if (sb.ToString().LastIndexOf(";") != -1)
                        sb.Remove(sb.ToString().LastIndexOf(";"), 1);

                    txtCc.Text = sb.ToString();
                }

                if (Mail_Type == MailType.Draft || Mail_Type == MailType.Dsbox)
                    txtTo.Text = mail["mail_to"] as string;
                else if (Mail_Type != MailType.Transmit)
                    txtTo.Text = mail["contact_mail"] as string;

                if (Mail_Type != MailType.Transmit)
                {
                    //审核人
                    if (mail.ContainsKey("reviewer_id") && !String.IsNullOrWhiteSpace(mail.getString("reviewer_id")))
                    {
                        txtAudit.Text = mail.getString("reviewer_name");
                    }
                }

                sb.Clear();
                string uid = mail["uuid"] as string;
                DirectoryInfo dirinfo = Directory.GetParent(store_path + file);
                string dir = dirinfo.FullName + "/" + uid + ".parts";

                if (Mail_Type == MailType.Transmit)
                {
                    sb.Append(getTransmitVm(mail, Mail_Message));
                    sb.Append("<blockquote id=\"isReplyContent\" style=\"PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid\">");
                }
                else if (Mail_Type == MailType.Reply || Mail_Type == MailType.AllReply)
                {
                    sb.Append(getReplyVm(mail, Mail_Message));
                    sb.Append("<blockquote id=\"isReplyContent\" style=\"PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid\">");
                }

                string textHtml = parseMIMEContent(Mail_Message, dir);
                sb.Append(textHtml);

                if (Mail_Type == MailType.Transmit || Mail_Type == MailType.Reply || Mail_Type == MailType.AllReply)
                {
                    sb.Append("</blockquote>");
                }

                htmlEditor.ContentHtml = sb.ToString();

                if (Mail_Type == MailType.Draft || Mail_Type == MailType.Dsbox)
                {
                    _saveMail = _mail;
                }
            }
            catch (Exception e)
            {
                System.Diagnostics.Debug.Write(e.StackTrace);
                ime.controls.MessageBox.Show(e.Message, "错误", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
Exemple #35
0
 public GGChatMessage(ASObject msg)
 {
     if (msg.ContainsKey("id"))
         _id = int.Parse(msg["id"].ToString());
     if (msg.ContainsKey("privacy"))
         _privacy = int.Parse(msg["privacy"].ToString());
     if (msg.ContainsKey("recipient"))
     {
         var tmprec = msg["recipient"].ToString();
         _recipient = (tmprec == "0" ? "" : tmprec);
     }
     if (msg.ContainsKey("sender"))
         _sender = new GGChatUser((ASObject)msg["sender"]);
     if (msg.ContainsKey("status"))
         _status = int.Parse(msg["status"].ToString());
     if (msg.ContainsKey("text"))
         _text = (string)msg["text"];
     if (msg.ContainsKey("time"))
         _time = (string)msg["time"];                   
 }
        private void ChangeData()
        {
            if (createList.Count > 0)
            {
                try
                {
                    foreach (ASObject account in createList)
                    {
                        ASObject policy = new ASObject();
                        ASObject ac = new ASObject();
                        ASObjectUtil.copyTo(account, ac);
                        if (ac.ContainsKey("distribution_policy"))
                        {
                            ac.Remove("distribution_policy");
                            policy["distribution_policy"] = account.getObject("distribution_policy");
                        }

                        Remoting.call("MailManager.createMailAccount", new object[] { ac, ASObjectUtil.toJObject(policy).ToString() });

                        _initImportList.Add(account);
                    }
                    createList.Clear();
                }
                catch (Exception ex)
                {
                    createList.Clear();
                    throw ex;
                }
            }

            if (updateList.Count > 0)
            {
                try
                {
                    foreach (ASObject account in updateList)
                    {
                        ASObject policy = new ASObject();
                        ASObject ac = new ASObject();
                        ASObjectUtil.copyTo(account, ac);
                        if (ac.ContainsKey("distribution_policy"))
                        {
                            ac.Remove("distribution_policy");
                            policy["distribution_policy"] = account.getObject("distribution_policy");
                        }

                        Remoting.call("MailManager.updateMailAccount", new object[] { ac, ASObjectUtil.toJObject(policy).ToString() });
                    }

                    updateList.Clear();
                }
                catch (Exception ex)
                {
                    updateList.Clear();
                    throw ex;
                }
            }

            if (removeList.Count > 0)
            {
                try
                {
                    foreach (ASObject account in removeList)
                    {
                        Remoting.call("MailManager.removeMailAccount", new object[] { account.getLong("id") });
                    }

                    removeList.Clear();
                }
                catch (Exception ex)
                {
                    removeList.Clear();
                    throw ex;
                }
            }

            Remoting.call("MailManager.reloadMailAccount", new object[] { }, this);
        }
 private void AddUpdate(ASObject account)
 {
     if (account.ContainsKey("id") && !updateList.Contains(account))
         updateList.Add(account);
 }