コード例 #1
0
        /// <summary>判断是否大于最大值</summary>
        private bool IsMax(tg_war_city model, int type, int count)
        {
            var result = false;
            var cs     = Variable.BASE_WARCITYSIZE.FirstOrDefault(m => m.id == model.size);

            if (cs == null)
            {
                return(false);
            }
            var temp = 0;

            switch (type)
            {
            case (int)WarResourseType.兵粮:
            {
                temp   = model.res_foods + count;
                result = temp <= cs.foods; break;
            }

            case (int)WarResourseType.马匹:
            case (int)WarResourseType.铁炮:
            case (int)WarResourseType.薙刀:
            case (int)WarResourseType.苦无:
            {
                temp   = model.res_horse + model.res_gun + model.res_razor + model.res_kuwu + count;
                result = temp <= cs.goods; break;
            }
            }
            return(result);
        }
コード例 #2
0
        /// <summary>验证最大值</summary>
        private tg_war_city CheckMax(int type, int total, int count, tg_war_city city)
        {
            int surplus;

            switch (type)
            {
            case (int)WarResourseType.马匹:
                surplus         = total - city.res_kuwu - city.res_razor - city.res_gun;
                city.res_horse += count;
                city.res_horse  = city.res_horse >= surplus ? surplus : city.res_horse;
                break;

            case (int)WarResourseType.铁炮:
                surplus       = total - city.res_kuwu - city.res_razor - city.res_horse;
                city.res_gun += count;
                city.res_gun  = city.res_gun >= surplus ? surplus : city.res_gun;
                break;

            case (int)WarResourseType.薙刀:
                surplus         = total - city.res_kuwu - city.res_horse - city.res_gun;
                city.res_razor += count;
                city.res_razor  = city.res_razor >= surplus ? surplus : city.res_razor;
                break;

            case (int)WarResourseType.苦无:
                surplus        = total - city.res_horse - city.res_razor - city.res_gun;
                city.res_kuwu += count;
                city.res_kuwu  = city.res_kuwu >= surplus ? surplus : city.res_kuwu;
                break;
            }
            return(city);
        }
コード例 #3
0
        /// <summary>
        /// 插入新的防守方案
        /// </summary>
        /// <param name="city">据点实体</param>
        /// <param name="location">新防守方案位置(2、3)</param>
        /// <returns></returns>
        public tg_war_city_plan GetDefensePlanInsert(tg_war_city city, int location)
        {
            //插入阵表
            var basefront = Variable.BASE_WAR_FRONT.FirstOrDefault(q => q.free == 1);

            tg_war_formation.Insert(new tg_war_formation()
            {
                user_id = city.user_id, base_id = basefront.id
            });
            //插入防守方案表
            var newplan = new tg_war_city_plan()
            {
                user_id = city.user_id, location = location, formation = basefront.id
            };

            newplan.Insert();
            ////关联防守武将表
            //tg_war_city_defense.Insert(new tg_war_city_defense() { user_id = city.user_id, city_id = city.base_id, plan_id = newplan.id });
            ////关联防守地形表
            //tg_war_plan_area.Insert((new tg_war_plan_area() { plan_id = newplan.id }));
            //更新据点数据
            switch (location)
            {
            //locatio: 0-2
            case 1: { city.plan_2 = newplan.id; } break;

            case 2: { city.plan_3 = newplan.id; } break;
            }
            newplan.Update();
            return(newplan);
        }
コード例 #4
0
        /// <summary>PlayerCity 实体转换</summary>
        public static PlayerCity ToPlayerCity(tg_war_city model)
        {
            var city = new PlayerCity()
            {
                id          = model.id,
                baseid      = model.base_id,
                name        = model.name,
                res_foods   = model.res_foods,
                res_funds   = model.res_funds,
                res_soldier = model.res_soldier,
                res_gun     = model.res_gun,
                res_horse   = model.res_horse,
                res_razor   = model.res_razor,
                res_kuwu    = model.res_kuwu,
                res_morale  = model.res_morale,
                peace       = model.peace,
                strong      = model.strong,
                boom        = model.boom,
            };

            switch (model.size)
            {
            case 1: city.size = "村"; break;

            case 2: city.size = "小城"; break;

            case 3: city.size = "大城"; break;

            case 4: city.size = "中城"; break;

            case 5: city.size = "巨城"; break;
            }
            return(city);
        }
コード例 #5
0
        /// <summary>
        /// 验证消耗的军资金
        /// </summary>
        /// <returns></returns>
        private bool CheckFunds(tg_war_city city)
        {
            var costfunds = Common.GetInstance().GetRule("32042");

            if (city.res_funds < costfunds)
            {
                return(false);
            }
            city.res_funds -= costfunds;
            city.Update();
            Variable.WarCityAll.TryUpdate(city.base_id, city, city);

            new Share.War().SendCity(city.base_id, city.user_id);
            return(true);
        }
コード例 #6
0
        /// <summary> 己方据点为发出点的情况 </summary>
        /// <param name="city">除敌方外的据点信息</param>
        /// <param name="userid">用户Id</param>
        /// <param name="psList">盟友集合</param>
        private WarEntity GetBuildWarEntity(tg_war_city city, Int64 userid, List <tg_war_partner> psList)
        {
            var cityid = city.base_id;
            var olist  = new List <int>();                  //己方可操作的据点
            var rlist  = new List <int>();                  //敌方可操作的据点
            var map    = new List <Core.Common.Util.Map>(); //构建的可操作的己方据点的图型集合
            var _map   = new List <Core.Common.Util.Map>(); //构建的可操作的敌方据点的图型集合
            var time   = (DateTime.Now.Ticks - 621355968000000000) / 10000;

            if (city.guard_time < time)
            {
                _map = (new Share.War()).GetBattleMaps(cityid, psList, userid, new List <int>(), ref rlist);
            }
            map = (new Share.War()).GetMaps(cityid, psList, userid, new List <int>(), ref olist);
            return(BuildWarEntity(0, 0, 0, 0, olist, rlist, map, _map));
        }
コード例 #7
0
        /// <summary>资源设置</summary>
        private tg_war_city SetResouce(tg_war_city model, int type, int count)
        {
            switch (type)
            {
            case (int)WarResourseType.兵粮: { model.res_foods += count; break; }

            case (int)WarResourseType.马匹: { model.res_horse += count; break; }

            case (int)WarResourseType.铁炮: { model.res_gun += count; break; }

            case (int)WarResourseType.薙刀: { model.res_razor += count; break; }

            case (int)WarResourseType.苦无: { model.res_kuwu += count; break; }
            }
            return(model);
        }
コード例 #8
0
ファイル: WAR_FIGHT.cs プロジェクト: Lantnr/MyTest
        /// <summary>
        /// 获取防守方防守方案id集合
        /// </summary>
        /// <param name="city"></param>
        /// <returns></returns>
        private List <Int64> GetCityPlanIds(tg_war_city city)
        {
            var list = new List <Int64>();

            if (city.plan_1 > 0)
            {
                list.Add(city.plan_1);
            }
            if (city.plan_2 > 0)
            {
                list.Add(city.plan_2);
            }
            if (city.plan_3 > 0)
            {
                list.Add(city.plan_3);
            }
            return(list);
        }
コード例 #9
0
        ///// <summary> 更新玩家铜币资源 </summary>
        ///// <param name="userid">用户id</param>
        ///// <param name="cost">花费铜币数量</param>
        ///// <param name="cmd">指令号</param>
        ///// <param name="ids">需要推送的其他类型 GoodsType</param>
        ///// <param name="flag">花费标识</param>
        //public void UpdateCoin(Int64 userid, Int64 cost, int cmd, List<int> ids, string flag)
        //{
        //    if (!Variable.OnlinePlayer.ContainsKey(userid)) return;
        //    var session = Variable.OnlinePlayer[userid] as TGGSession;
        //    if (session == null) return;

        //    var user = session.Player.User.CloneEntity();
        //    var coin = user.coin;
        //    user.coin = user.coin - cost;

        //    var logdata = string.Format("{0}_{1}_{2}_{3}", "Coin", coin, cost, user.coin);
        //    (new Log()).WriteLog(user.id, (int)LogType.Use, (int)ModuleNumber.USER, (int)UserCommand.OFFICIAL_UPGRADE, "用户", flag, "金钱", (int)GoodsType.TYPE_COIN, Convert.ToInt32(cost), user.coin, logdata);
        //    ids.Add((int)GoodsType.TYPE_COIN);

        //    user.Save();
        //    session.Player.User = user;
        //    (new User()).REWARDS_API(ids, session.Player.User);
        //}

        /// <summary>更新据点资源 </summary>
        /// <param name="city"></param>
        /// <param name="state">开发类型</param>
        /// <param name="resource">资源</param>
        /// <returns></returns>
        public tg_war_city GetUpdateCity(tg_war_city city, int state, int resource)
        {
            switch (state)
            {
            case (int)WarRoleStateType.ASSART: city.res_foods += resource; break;

            case (int)WarRoleStateType.BUILDING: city.boom += resource; break;

            case (int)WarRoleStateType.BUILD_ADD: city.strong += resource; break;

            case (int)WarRoleStateType.MINING: city.res_funds += resource; break;

            case (int)WarRoleStateType.PEACE: city.peace += resource; break;

            case (int)WarRoleStateType.LEVY:
            {
                city.res_soldier += resource;
                var res = city.res_morale - ReduceMorale(resource);          //徵兵扣除士气
                city.res_morale = res <= 0 ? 0 : res;
            }
            break;

            case (int)WarRoleStateType.TRAIN:
            {
                city.res_morale = city.res_morale + resource + GetCharacterMorale(city.user_id);
                var basecity = Variable.BASE_WARCITYSIZE.FirstOrDefault(m => m.id == city.size);
                if (basecity == null)                    //基表判断
                {
                    return(null);
                }
                if (city.res_morale > basecity.morale)
                {
                    city.res_morale = basecity.morale;
                }
            }
            break;
            }
            return(city);
        }
コード例 #10
0
ファイル: WAR_FIGHT.cs プロジェクト: Lantnr/MyTest
        /// <summary>
        /// 占有度足够城市资源结算
        /// </summary>
        /// <param name="city">城市实体</param>
        /// <param name="userid">新占领的用户id</param>
        private void CityWarResourse(tg_war_city city, Int64 userid)
        {
            city.boom       *= 0.2;
            city.strong     *= 0.2;
            city.peace      *= 0.2;
            city.res_foods   = Convert.ToInt32(Math.Floor(city.res_foods * 0.5));
            city.res_funds   = Convert.ToInt32(Math.Floor(city.res_funds * 0.5));
            city.res_horse   = Convert.ToInt32(Math.Floor(city.res_horse * 0.5));
            city.res_kuwu    = Convert.ToInt32(Math.Floor(city.res_kuwu * 0.5));
            city.res_razor   = Convert.ToInt32(Math.Floor(city.res_razor * 0.5));
            city.res_soldier = Convert.ToInt32(Math.Floor(city.res_soldier * 0.5));
            city.res_morale  = Convert.ToInt32(Math.Floor(city.res_morale * 0.5));
            //计算城市新的规模
            var newsize = Variable.BASE_WARCITYSIZE.FirstOrDefault(q => q.boom >= city.boom && q.strong >= city.strong && q.peace >= city.peace);

            city.size       = newsize != null ? newsize.id : Variable.BASE_WARCITYSIZE.FirstOrDefault().id;
            city.user_id    = userid;
            city.plan_1     = 0;
            city.plan_2     = 0;
            city.plan_3     = 0;
            city.type       = (int)WarCityType.VICECITY;
            city.guard_time = (DateTime.Now.AddDays(1).Ticks - 621355968000000000) / 10000;
            //插入防守方案表
            var newplan = new tg_war_city_plan()
            {
                user_id = userid, location = 0
            };

            newplan.Insert();
            city.plan_1 = newplan.id;
            city.Update();

            Variable.WarCityAll.AddOrUpdate(city.base_id, city, (k, v) => city);
            var view = view_war_city.GetEntityByBaseId(city.base_id);

            new Share.War().SendCityBuild(view);
        }
コード例 #11
0
        /// <summary>更新当前据点资源信息</summary>
        private tg_war_city MaxNumber(int type, int count, tg_war_city city)
        {
            var info = Variable.BASE_WARCITYSIZE.FirstOrDefault(m => m.id == city.size);

            if (info == null)
            {
                return(city);
            }
            switch (type)
            {
            case (int)WarResourseType.兵粮:
                city.res_foods += count;
                if (city.res_foods > info.foods)
                {
                    city.res_foods = info.foods;
                }
                break;

            case (int)WarResourseType.军资金:
                city.res_funds += count;
                if (city.res_funds > info.funds)
                {
                    city.res_funds = info.funds;
                }
                break;

            case (int)WarResourseType.足轻:
                city.res_soldier += count;
                if (city.res_soldier > info.soldier)
                {
                    city.res_soldier = info.soldier;
                }
                break;
            }
            city = CheckMax(type, info.goods, count, city);
            return(city);
        }
コード例 #12
0
        private bool SavaData(List <Common.Resourse> resourses, tg_war_role role, Int32 baseid, Int32 count, tg_war_city city)
        {
            role.army_id      = baseid;
            role.army_soldier = count;
            //更新城市资源和武将资源
            foreach (var resourse in resourses)
            {
                switch (resourse.type)
                {
                case (int)WarResourseType.兵粮: { city.res_foods -= resourse.value * count; } break;

                case (int)WarResourseType.军资金: { city.res_funds -= resourse.value * count; } break;

                case (int)WarResourseType.苦无: { city.res_use_kuwu += resourse.value * count; role.army_kuwu = resourse.value * count; } break;

                case (int)WarResourseType.薙刀: { city.res_use_razor += resourse.value * count; role.army_razor = resourse.value * count; } break;

                case (int)WarResourseType.足轻: { city.res_use_soldier += resourse.value * count; role.army_soldier = resourse.value * count; } break;

                case (int)WarResourseType.铁炮: { city.res_use_gun += resourse.value * count; role.army_gun = resourse.value * count; } break;

                case (int)WarResourseType.马匹: { city.res_use_horse += resourse.value * count; role.army_horse = resourse.value * count; } break;
                }
            }
            //保存数据
            role.Update();
            city.Update();
            Variable.WarCityAll.TryUpdate(city.base_id, city, city);
            //推送数据
            var list = new[] { "armyBaseId", "armyCount" };

            new Share.War().SendWarRole(role, list);
            new Share.War().SendCity(city.base_id, role.user_id);
            //tg_war_city.Update(string.Format("res_use_foods={0},res_use_funds={1},res_use_kuwu={2},res_use_razor={3}," +
            //                                 "res_use_soldier={4},res_use_gun={5},res_use_horse={6}"city.res_use_foods, city.res_use_funds))
            return(true);
        }
コード例 #13
0
ファイル: Common.LZH.cs プロジェクト: Lantnr/MyTest
        /// <summary>验证数据信息</summary>
        private void CheckData(tg_war_city city, tg_war_role role)
        {
            var basesize = GetBase();

            if (basesize == null)
            {
                return;
            }
            switch (role.state)
            {
            case (int)WarRoleStateType.ASSART: city.res_foods += role.resource; break;

            case (int)WarRoleStateType.BUILDING:
            {
                city.boom += role.resource;
                if (city.boom > basesize.boom)
                {
                    city.boom = basesize.boom;
                }
                break;
            }

            case (int)WarRoleStateType.BUILD_ADD:
            {
                city.strong += role.resource;
                if (city.strong > basesize.strong)
                {
                    city.strong = basesize.strong;
                }
                break;
            }

            case (int)WarRoleStateType.MINING: city.res_funds += role.resource; break;

            case (int)WarRoleStateType.PEACE:
            {
                city.peace += role.resource;
                if (city.peace > basesize.peace)
                {
                    city.peace = basesize.peace;
                }
                break;
            }

            case (int)WarRoleStateType.LEVY:
            {
                city.res_soldier += role.resource;
                var res = city.res_morale - ReduceMorale(role.resource);          //徵兵扣除士气
                city.res_morale = res <= 0 ? 0 : res;
            }
            break;

            case (int)WarRoleStateType.TRAIN:
            {
                city.res_morale = city.res_morale + role.resource + GetCharacterMorale(city.user_id);
                var basecity = Variable.BASE_WARCITYSIZE.FirstOrDefault(m => m.id == city.size);
                if (basecity == null)                    //基表判断
                {
                    return;
                }
                if (city.res_morale > basecity.morale)
                {
                    city.res_morale = basecity.morale;
                }
            }
            break;
            }
            new Share.War().ReduceAdd(role, 0);
            city.Update();
            if (role.count == 0)
            {
                new Share.War().ReduceRes(role);
                role.state          = (int)WarRoleStateType.IDLE;
                role.resource       = 0;
                role.total_count    = 0;
                role.state_end_time = 0;
                RemoveTask(role.user_id, role.id); //移除CD时间
                (new Share.War()).SendWarRole(role, "state");
            }
            else
            {
                //更新武将下一个半小时到达时间
                role.count -= 1;
                Int64 time = 30 * 60 * 1000;
# if DEBUG
                time = 1 * 60 * 1000;
#endif
                role.state_end_time = CurrentTime() + time;
                RemoveTask(role.user_id, role.id);      //移除CD时间
                SpinWait.SpinUntil(() => false, 500);
                TaskBegin(role.user_id, role.id, time); //重新开启线程
            }
コード例 #14
0
ファイル: WAR_FIGHT.cs プロジェクト: Lantnr/MyTest
        /// <summary>
        /// 据点数据更改
        /// </summary>
        /// <param name="userid">防守据点用户id</param>
        /// <param name="city">tg_war_city</param>
        /// <param name="attackuserid">攻击者id</param>
        private void GetCityChange(Int64 userid, tg_war_city city, Int64 attackuserid)
        {
            var list     = new List <tg_war_role>();
            var roles    = tg_war_role.GetListByCityIdAndType(city.base_id, userid, (int)WarRoleType.PLAYER);
            var npcroles = tg_war_role.GetListByCityIdAndType(city.base_id, userid, (int)WarRoleType.NPC);

            tg_war_role.GetListDeleteByIds(npcroles); //备大将删除
            //进攻玩家插入新的备大将
            var newroles = tg_war_role.GetNpcRole(city.base_id, attackuserid);

            newroles.Insert();
            new Share.War().BreakTask(city.base_id);  //关闭天守阁所有线程
            new Share.War().CarryClose(city.base_id); //运输线程结束

            var citycount = Variable.WarCityAll.Values.Count(q => q.user_id == userid);

            if (citycount <= 0) //没有其他城市
            {
                //武将数据清零,状态改为空闲
                foreach (var role in roles)
                {
                    list.Add(new tg_war_role()
                    {
                        user_id = role.user_id,
                        id      = role.id,
                        rid     = role.rid,
                        state   = (int)WarRoleStateType.IDLE,
                    });
                    new Share.War().RoleStopTask(role); //放火破坏等结束
                }
                tg_war_role.GetListUpdate(roles);

                new Share.War().PushCityAssault(userid, attackuserid);   //推送玩家最后一个城市被攻占
            }
            else //有占领其他城市
            {
                var maincity = Variable.WarCityAll.Values.FirstOrDefault(q => q.user_id == userid && q.type == (int)WarCityType.MAINCITY);
                if (maincity == null) //没有本城
                {
                    //最大的城市作为本城
                    var maxsizecity = Variable.WarCityAll.Values.OrderByDescending(q => q.size).FirstOrDefault(q => q.user_id == userid);
                    if (maxsizecity == null)
                    {
                        return;
                    }
                    maxsizecity.type = (int)WarCityType.MAINCITY;
                    maxsizecity.Update();
                    Variable.WarCityAll.TryUpdate(maxsizecity.base_id, maxsizecity, maxsizecity);
                    maincity = maxsizecity;
                }
                //武将回归本城
                foreach (var role in roles)
                {
                    var state = role.state;
                    if (state != (int)WarRoleStateType.DESTROY && state != (int)WarRoleStateType.FIRE &&
                        state != (int)WarRoleStateType.DIPLOMATIC_RELATIONS)
                    {
                        state = (int)WarRoleStateType.IDLE;
                    }
                    list.Add(new tg_war_role()
                    {
                        user_id = role.user_id,
                        id      = role.id,
                        rid     = role.rid,
                        state   = state,
                        station = maincity.base_id,
                    });
                }
                tg_war_role.GetListUpdate(roles);
            }
        }
コード例 #15
0
ファイル: WAR_GO.cs プロジェクト: Lantnr/MyTest
 /// <summary> 武将集合配置的兵扣除对应城市的资源 </summary>
 /// <param name="list">武将集合</param>
 /// <param name="city">据点信息</param>
 private tg_war_city ReduceWarCityRes(IEnumerable <tg_war_role> list, tg_war_city city)
 {
     return(list.Aggregate(city, (current, item) => ReduceWarCityRes(item, current)));
 }
コード例 #16
0
ファイル: WAR_FIGHT.cs プロジェクト: Lantnr/MyTest
        /// <summary>
        /// 战斗结束
        /// </summary>
        /// <param name="player"></param>
        /// <param name="cityinfo"></param>
        /// <param name="defenseuserid"></param>
        /// <param name="fightvo"></param>
        /// <param name="bq"></param>
        /// <returns></returns>
        private bool GetFightEnd(Player player, tg_war_city cityinfo, Int64 defenseuserid, WarFightVo fightvo, tg_war_battle_queue bq)
        {
            var defenseuser = tg_user.FindByid(defenseuserid);
            var own         = Variable.BASE_OFFICE.FirstOrDefault(q => q.id == player.User.office); //占有度查询

            if (own == null)
            {
                return(false);
            }
            var left     = own.total_own - player.UserExtend.war_total_own;
            var basesize = Variable.BASE_WARCITYSIZE.FirstOrDefault(q => q.id == cityinfo.size);

            if (basesize == null)
            {
                return(false);
            }
            var defenseextend = tg_user_extend.GetByUserId(defenseuserid);

            if (fightvo.result.isWin == 1) //出征成功,攻防胜利且占有度足够
            {
                //游戏战报
                WarReportInsert(player.User.id, 100042, cityinfo.base_id, defenseuserid, player.User.player_name);
                if (left >= basesize.own) //占有度足够
                {
                    var rivalUserId = cityinfo.user_id;
                    var planlist    = GetCityPlanIds(cityinfo);
                    tg_war_city_plan.GetListDelete(planlist);        //删除所有的防守方案
                    player.UserExtend.war_total_own += basesize.own; //进攻玩家占有度使用增加

                    if (defenseextend.war_total_own >= basesize.own) //防守玩家占有度使用减少
                    {
                        defenseextend.war_total_own -= basesize.own;
                    }
                    //城市资源结算,城市改为进攻方
                    CityWarResourse(cityinfo, player.User.id);
                    player.UserExtend.Update();
                    player.User.merit += (int)Math.Floor(fightvo.result.rivalDieCount * 0.5);
                    GetCityChange(defenseuserid, cityinfo, player.User.id);

                    #region  除内政策略

                    var flag = Variable.WarCityAll.Values.Count(m => m.user_id == rivalUserId) > 0;
                    if (!flag)
                    {
                        var temp = tg_war_home_tactics.GetEntityByUserid(rivalUserId);
                        if (temp != null)
                        {
                            (new Share.War()).RemoveCD((new Share.War()).GetKey(temp.end_time, rivalUserId));
                            temp.Delete();
                        }
                    }

                    #endregion
                }
                else
                {
                    CityWarResourse(cityinfo);
                    player.User.merit += (int)Math.Floor(fightvo.result.rivalDieCount * 0.5) + basesize.addMerit;
                }
                defenseuser.merit += (int)Math.Floor(fightvo.result.rivalDieCount * 0.1);

                fightvo.result.reward.Add(new RewardVo()
                {
                    goodsType = (int)GoodsType.TYPE_MERIT,
                    value     = player.User.merit,
                });
            }
            else
            {
                //游戏战报
                WarReportInsert(player.User.id, 100043, cityinfo.base_id, defenseuserid, player.User.player_name);
                player.User.merit += (int)Math.Floor(fightvo.result.rivalDieCount * 0.1);
                defenseuser.merit += (int)Math.Floor(fightvo.result.rivalDieCount * 0.5);
                fightvo.result.reward.Add(new RewardVo()
                {
                    goodsType = (int)GoodsType.TYPE_MERIT,
                    value     = player.User.merit,
                });
                //  new Share.War().QueueResultCity(bq);
            }
            //进攻玩家发送协议
            if (Variable.OnlinePlayer.ContainsKey(player.User.id))
            {
                player.User.Update();
                player.UserExtend.Update();
                var session = Variable.OnlinePlayer[player.User.id] as TGGSession;
                session.Player = player;
                (new Share.User()).REWARDS_API(player.User.id, fightvo.result.reward);
            }
            //防守玩家发送协议
            if (Variable.OnlinePlayer.ContainsKey(defenseuserid))
            {
                defenseuser.Update();
                var session = Variable.OnlinePlayer[defenseuserid] as TGGSession;
                session.Player.User       = defenseuser;
                session.Player.UserExtend = defenseextend;
                (new Share.User()).REWARDS_API(defenseuserid, fightvo.result.reward);
            }
            return(true);
        }
コード例 #17
0
ファイル: WAR_GO.cs プロジェクト: Lantnr/MyTest
        /// <summary> 武将配置的兵扣除对应城市的资源 </summary>
        /// <param name="temp">武将信息</param>
        /// <param name="city">据点信息</param>
        private tg_war_city ReduceWarCityRes(tg_war_role temp, tg_war_city city)
        {
            city.res_foods     -= temp.army_foods;
            city.res_use_foods -= temp.army_foods;
            if (city.res_foods < 0)
            {
                city.res_foods = 0;
            }
            if (city.res_use_foods < 0)
            {
                city.res_use_foods = 0;
            }

            city.res_funds     -= temp.army_funds;
            city.res_use_funds -= temp.army_funds;
            if (city.res_funds < 0)
            {
                city.res_funds = 0;
            }
            if (city.res_use_funds < 0)
            {
                city.res_use_funds = 0;
            }

            city.res_gun     -= temp.army_gun;
            city.res_use_gun -= temp.army_gun;
            if (city.res_gun < 0)
            {
                city.res_gun = 0;
            }
            if (city.res_use_gun < 0)
            {
                city.res_use_gun = 0;
            }

            city.res_horse     -= temp.army_horse;
            city.res_use_horse -= temp.army_horse;
            if (city.res_horse < 0)
            {
                city.res_horse = 0;
            }
            if (city.res_use_horse < 0)
            {
                city.res_use_horse = 0;
            }

            city.res_kuwu     -= temp.army_kuwu;
            city.res_use_kuwu -= temp.army_kuwu;
            if (city.res_kuwu < 0)
            {
                city.res_kuwu = 0;
            }
            if (city.res_use_kuwu < 0)
            {
                city.res_use_kuwu = 0;
            }

            city.res_razor     -= temp.army_razor;
            city.res_use_razor -= temp.army_razor;
            if (city.res_razor < 0)
            {
                city.res_razor = 0;
            }
            if (city.res_use_razor < 0)
            {
                city.res_use_razor = 0;
            }

            city.res_soldier     -= temp.army_soldier;
            city.res_use_soldier -= temp.army_soldier;
            if (city.res_soldier < 0)
            {
                city.res_soldier = 0;
            }
            if (city.res_use_soldier < 0)
            {
                city.res_use_soldier = 0;
            }
            return(city);
        }
コード例 #18
0
 /// <summary>资源更新后处理</summary>
 private void ResourceData(tg_war_city city)
 {
     (new War()).SaveWarCityAll(city);                 //更新全局据点信息
     (new War()).SendCity(city.base_id, city.user_id); //推送据点数据更新
 }
コード例 #19
0
        /// <summary>检测资源 </summary>
        private Tuple <bool, List <Common.Resourse> > CheckResourse(Int32 baseid, int count, tg_war_city city, tg_war_role role)
        {
            var listentity = new List <Common.Resourse>();
            var add        = Common.GetInstance().GetResourseString(role.army_id, 1);

            if (add == null)
            {
                return(Tuple.Create(false, listentity));
            }
            var oldcount = role.army_soldier;

            if (oldcount > 0)
            {
                foreach (var resourse in add)
                {
                    switch (resourse.type)
                    {
                    //兵粮和军资金回归城市,不用锁定
                    case (int)WarResourseType.兵粮: { city.res_foods += resourse.value * oldcount; } break;

                    case (int)WarResourseType.军资金: { city.res_funds += resourse.value * oldcount; } break;

                    case (int)WarResourseType.苦无: { if (city.res_use_kuwu >= resourse.value * oldcount)
                                                    {
                                                        city.res_use_kuwu -= resourse.value * oldcount;
                                                    }
                    } break;

                    case (int)WarResourseType.薙刀: { if (city.res_use_razor >= resourse.value * oldcount)
                                                    {
                                                        city.res_use_razor -= resourse.value * oldcount;
                                                    }
                    } break;

                    case (int)WarResourseType.足轻: { if (city.res_use_soldier >= resourse.value * oldcount)
                                                    {
                                                        city.res_use_soldier -= resourse.value * oldcount;
                                                    }
                    } break;

                    case (int)WarResourseType.铁炮: { if (city.res_use_gun >= resourse.value * oldcount)
                                                    {
                                                        city.res_use_gun -= resourse.value * oldcount;
                                                    }
                    } break;

                    case (int)WarResourseType.马匹: { if (city.res_use_horse >= resourse.value * oldcount)
                                                    {
                                                        city.res_use_horse -= resourse.value * oldcount;
                                                    }
                    } break;
                    }
                }
            }

            // listentity.AddRange(add);
            var reduce = Common.GetInstance().GetResourseString(baseid, 1);

            if (reduce == null)
            {
                return(Tuple.Create(false, listentity));
            }
            foreach (var resourse in reduce)
            {
                switch (resourse.type)
                {
                case (int)WarResourseType.兵粮: { if (resourse.value * count > city.res_foods)
                                                {
                                                    return(Tuple.Create(false, listentity));
                                                }
                } break;

                case (int)WarResourseType.军资金: { if (resourse.value * count > city.res_funds)
                                                 {
                                                     return(Tuple.Create(false, listentity));
                                                 }
                } break;

                case (int)WarResourseType.苦无: { if (resourse.value * count > city.res_kuwu - city.res_use_kuwu)
                                                {
                                                    return(Tuple.Create(false, listentity));
                                                }
                } break;

                case (int)WarResourseType.薙刀: { if (resourse.value * count > city.res_razor - city.res_use_razor)
                                                {
                                                    return(Tuple.Create(false, listentity));
                                                }
                } break;

                case (int)WarResourseType.足轻: { if (resourse.value * count > city.res_soldier - city.res_use_soldier)
                                                {
                                                    return(Tuple.Create(false, listentity));
                                                }
                } break;

                case (int)WarResourseType.铁炮: { if (resourse.value * count > city.res_gun - city.res_use_gun)
                                                {
                                                    return(Tuple.Create(false, listentity));
                                                }
                } break;

                case (int)WarResourseType.马匹: { if (resourse.value * count > city.res_horse - city.res_use_horse)
                                                {
                                                    return(Tuple.Create(false, listentity));
                                                }
                } break;
                }
            }
            listentity.AddRange(reduce);
            return(Tuple.Create(true, listentity));
        }