예제 #1
0
        private void btnLuu_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            gridViewNguoiDung.FocusedRowHandle = -1;
            TList <TaiKhoan> listAppUser = bindingSourceNguoiDung.DataSource as TList <TaiKhoan>;

            if (listAppUser != null)
            {
                if (XtraMessageBox.Show("Bạn có muốn lưu các thay đổi không ?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                {
                    try
                    {
                        bindingSourceNguoiDung.EndEdit();
                        TList <PMS.Entities.HeThong> listAppSystems = DataServices.HeThong.GetByUserId(_userID);
                        foreach (TaiKhoan user in listAppUser)
                        {
                            PMS.Entities.HeThong objHeThong = listAppSystems.Find(p => p.UserId == _userID && p.ParentId == user.MaTaiKhoan);
                            if (user.Chon)
                            {
                                if (objHeThong == null)
                                {
                                    listAppSystems.Add(new PMS.Entities.HeThong()
                                    {
                                        UserId = _userID, ParentId = user.MaTaiKhoan
                                    });
                                }
                            }
                            else
                            {
                                if (objHeThong != null)
                                {
                                    objHeThong.MarkToDelete();
                                }
                            }
                        }
                        if (listAppSystems.IsValid)
                        {
                            DataServices.HeThong.Save(listAppSystems);
                            DevExpress.XtraEditors.XtraMessageBox.Show("Bạn đã lưu các thay đổi thành công.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        else
                        {
                            DevExpress.XtraEditors.XtraMessageBox.Show(string.Format("Có {0} dòng dữ liệu không hợp lệ.", listAppSystems.InvalidItems.Count), "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        }
                    }
                    catch
                    {
                        XtraMessageBox.Show("Đã xảy ra lỗi trong quá trình lưu các thay đổi.", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
        }
예제 #2
0
        public bool Doing()
        {
            TList <EmbattleQueue> queueList = GetPriorityQueue();

            if (queueList.Count != 2)
            {
                return(false);
            }
            EmbattleQueue roleA = queueList[0];
            EmbattleQueue roleD = queueList[1];

            //原因:空阵BUG
            if (roleA.GeneralCount == 0 && roleD.GeneralCount == 0)
            {
                new BaseLog().SaveLog("战斗双方佣兵不存在");
                return(false);
            }
            if (roleA.Role == EmbattleRole.RoleA)
            {
                if (roleA.GeneralCount > 0 && roleD.GeneralCount == 0)
                {
                    return(true);
                }
                if (roleA.GeneralCount == 0 && roleD.GeneralCount > 0)
                {
                    return(false);
                }
            }
            else if (roleA.Role == EmbattleRole.RoleD)
            {
                if (roleA.GeneralCount > 0 && roleD.GeneralCount == 0)
                {
                    return(false);
                }
                if (roleA.GeneralCount == 0 && roleD.GeneralCount > 0)
                {
                    return(true);
                }
            }

            queueList.Foreach(item =>
            {
                var general = (CombatGeneral)item.NextGeneral();

                if (general != null)
                {
                    general.SelfAbilityInfoList.ForEach(SelfAbility =>
                    {
                        SelfAbilityEffect selfAbilityEffect = new SelfAbilityEffect();
                        selfAbilityEffect.GeneralID         = general.GeneralID;
                        selfAbilityEffect.EffectID1         = SelfAbility.EffectID1;
                        selfAbilityEffect.FntHeadID         = SelfAbility.FntHeadID;
                        selfAbilityEffect.IsIncrease        = SelfAbility.IsIncrease;
                        selfAbilityEffect.Position          = general.Position;
                        selfAbilityEffect.Role = item.Role.ToShort();
                        processContainer.SelfAbilityEffectList.Add(selfAbilityEffect);
                    });
                }
            });
            //原因:闪避高时死锁
            bool isCombatOut = false;
            int  index       = 0;

            while (roleA.HasCombat() && roleD.HasCombat())
            {
                if (index >= MaxCount)
                {
                    isCombatOut = true;
                    //防止死锁
                    new BaseLog().SaveLog(string.Format("[{0}]战斗超出最大回合数,判攻方输", _combatType));
                    break;
                }
                //设置重新一轮
                roleA.ResetGeneralQueue();
                roleD.ResetGeneralQueue();

                DoSingle(queueList);

                index++;
            }

            foreach (var item in priorityList)
            {
                if (item.Number > BoutNum)
                {
                    BoutNum = item.Number;
                }
                //恢复血量
                double resumeLife = ConfigEnvSet.GetDouble("Combat.ResumeLifeNum");
                //领土战直接恢复100%
                if (_combatType == CombatType.Country && item.IsOver)
                {
                    resumeLife = 1;
                }

                if ((_combatType == CombatType.Country && item.IsOver) ||
                    (_combatType != CombatType.Country && item.IsOver))
                {
                    if (item.Role == EmbattleRole.RoleA)
                    {
                        DoResumeLife(processContainer.AttackList, resumeLife);
                    }
                    else
                    {
                        DoResumeLife(processContainer.DefenseList, resumeLife);
                    }
                }
            }
            ;
            //超出判断攻方输
            if (isCombatOut && roleA.Role == EmbattleRole.RoleA)
            {
                return(false);
            }
            if (isCombatOut && roleA.Role == EmbattleRole.RoleD)
            {
                return(true);
            }
            return(!priorityList.Find(m => m.Role == EmbattleRole.RoleA).IsOver);
        }