Exemple #1
0
 public void EnterSight(EEntity self, HashSet <EEntity> entities)
 {
     foreach (var entity in entities)
     {
         EnterSight(self, entity);
     }
 }
        private void button1_Click(object sender, EventArgs e)
        {
            OleDbCommand comEski = new OleDbCommand("select Sifre from Entriy WHERE ((Entriy.Sifre)=@Geliyoo)", con);

            comEski.Parameters.AddWithValue("@Geliyoo", textBox1.Text);
            if (con.State == ConnectionState.Closed)
            {
                con.Open();
            }
            try
            {
                OleDbDataReader rd = comEski.ExecuteReader();
                if (rd.Read())
                {
                    EEntity ent = new EEntity();
                    ent.KullaniciAdi = kullanici.Text;
                    ent.Sifre        = sifretxt.Text;
                    FEntity.Guncelle(ent);
                    kullanici.Text = string.Empty;
                    sifretxt.Text  = string.Empty;
                    textBox1.Text  = string.Empty;
                }
                else
                {
                    MessageBox.Show("Girdiğiniz Şifre Hatalı !!!", "Şifre Hatası", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            finally { con.Close(); }
        }
Exemple #3
0
        public void GuardForNullReferenceMustNotThrowNullReferenceExceptionWhenTheObjectIsNotNull()
        {
            var @object   = new EEntity();
            var exception = Record.Exception(GuardObjectNullReference(@object));

            Assert.Null(exception);
        }
Exemple #4
0
        public void Init()
        {
            // 初始化副本
            var dInfo = new DirectoryInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "MapData"));

            foreach (var filePath in dInfo.GetFiles())
            {
                var dungeon = new CDungeon(int.Parse(filePath.Name));
                DicDungeon.Add(int.Parse(filePath.Name), dungeon);
                foreach (var pos in dungeon.MapData.monsterPos)
                {
                    SDungeon.Instance.EnterDungeon(new EMonster
                    {
                        Id         = EEntity.GenerateEntityId(EEntityType.MONSTER),
                        AIState    = AI.EAIState.PATROL,
                        Dungeon    = dungeon,
                        EntityType = EEntityType.MONSTER,
                        Position   = new CPosition <double> {
                            x = pos[0], y = pos[1], z = 0D
                        },
                        BirthPosition = new CPosition <double> {
                            x = pos[0], y = pos[1], z = 0D
                        },
                        Movement = new CMovement
                        {
                            Speed = 5
                        }
                    }, dungeon);
                }
            }
        }
Exemple #5
0
 /// <summary>
 /// Entity进入副本
 /// </summary>
 /// <param name="entity"></param>
 /// <param name="dungeon"></param>
 public void EnterDungeon(EEntity entity, CDungeon dungeon)
 {
     dungeon.DicEntity.Add(entity.Id, entity);
     dungeon.GridSystem.AddEntityToGrid(entity);
     entity.Dungeon = dungeon;
     entity.Update();
 }
Exemple #6
0
        public static void Guncelle(EEntity Degistir)
        {
            OleDbConnection concon = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Veritabani\\Data.mdb;Jet OLEDB:Database Password=ayakkabi_gelisimsoft;");
            OleDbCommand    comcom = new OleDbCommand("update Entriy set KullaniciAdi=@Kullanici,Sifre=@Sifre WHERE ((Entriy.SifreID)=1)", concon);

            comcom.Parameters.AddWithValue("@Kullanici", Degistir.KullaniciAdi);
            comcom.Parameters.AddWithValue("@Sifre", Degistir.Sifre);
            OleDbDataAdapter adp = new OleDbDataAdapter(comcom);

            if (concon.State == ConnectionState.Closed)
            {
                concon.Open();
            }
            try
            {
                if (comcom.ExecuteNonQuery() > 0)
                {
                    MessageBox.Show("Kullanıcı Adı ve Güncelleme İşlemi Yapılmıştır.", "Güncelleme İşlemleri", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
            }
            catch (Exception Ex)
            {
                MessageBox.Show(Ex.ToString(), "Hata", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
Exemple #7
0
        /// <summary>
        /// 添加Entity进入格子
        /// </summary>
        /// <param name="roleId"></param>
        /// <param name=""></param>
        public int AddEntityToGrid(EEntity entity)
        {
            var idx = GetGridPosFromMapPos(entity.Position, out var _);

            //_entityIdMap[idx][(int)entity.EntityType].Add(entity.Id);
            _entityMap[idx][(int)entity.EntityType].Add(entity);
            return(idx);
        }
Exemple #8
0
        //public void RoleMove(ERole role, double x, double y)
        //{
        //    if (!role.Dungeon.MapData.IsValidPosition((int)x, (int)y)) return;
        //    role.Dungeon.GridSystem.UpdateRolePosition(role, x, y);
        //    SSight.Instance.EntityMove(role);
        //}

        public void EntityMove(EEntity entity, double x, double y)
        {
            if (!entity.Dungeon.MapData.IsValidPosition((int)x, (int)y))
            {
                return;
            }
            entity.Dungeon.GridSystem.UpdateEntityPosition(entity, x, y);
            SSight.Instance.EntityMove(entity);
        }
Exemple #9
0
        /// <summary>
        /// Entity移动通知视野内Entity
        /// </summary>
        /// <param name="role"></param>
        public void EntityMove(EEntity self)
        {
            var pack = new S2CMove();

            pack.EntityInfoList.Add(new EntityInfo {
                Id = self.Id, EntityType = (int)self.EntityType, X = self.Position.x, Y = self.Position.y
            });
            foreach (var entity in self.Sight.SetWatchEntity)
            {
                if (!self.Dungeon.DicRole.ContainsKey(entity.Id))
                {
                    continue;
                }
                Program.Server.StartSend((entity as ERole).exSocket.SocketEventArgs, pack);
            }
        }
Exemple #10
0
        /// <summary>
        /// 更新Entity位置
        /// </summary>
        /// <param name="self"></param>
        /// <param name="x"></param>
        /// <param name="y"></param>
        public void UpdateEntityPosition(EEntity self, double x, double y, bool isFirst = false)
        {
            // 位置无效
            if (!IsValidPos(x, y))
            {
                return;
            }
            var oldPosition = new CPosition <double> {
                x = self.Position.x, y = self.Position.y
            };

            // 格子位置不变时说明AOI没变化 所以不必通知AOI内角色
            var oldGridId = GetGridPosFromMapPos(oldPosition, out var _);
            var newGridId = GetGridPosFromMapPos(x, y, out var _);

            if (oldGridId == newGridId && !isFirst)
            {
                self.Position.x = x;
                self.Position.y = y;
                return;
            }

            GetEntitiesFromSight(self, oldPosition, out _, out var oldEntities);

            // 从旧格子中删除
            DeleteEntityFromGrid(self);
            // 更新位置
            self.Position.x = x;
            self.Position.y = y;
            // 加入新格子
            AddEntityToGrid(self);

            GetEntitiesFromSight(self, self.Position, out _, out var newEntities);

            if (!isFirst)
            {// 首次进入AOI不需要排除
                var bothTmp = new HashSet <EEntity>(oldEntities);
                bothTmp.IntersectWith(newEntities);
                oldEntities.ExceptWith(bothTmp);
                newEntities.ExceptWith(bothTmp);
            }

            oldEntities.Remove(self);
            SSight.Instance.LeaveSight(self, oldEntities);
            SSight.Instance.EnterSight(self, newEntities);
        }
Exemple #11
0
        public void LoginIn(Guid guid, C2SLogin pack)
        {
            var role = new ERole();

            role.Id = EEntity.GenerateEntityId(EEntityType.ROLE);
            Program.Server.DicEventArgs.TryGetValue(guid, out role.exSocket);

            GameServer.DicRole.Add(guid, role);

            SDungeon.Instance.EnterDungeon(role);
            role.Update();
            TServer.Program.Server.StartSend(role.exSocket.SocketEventArgs, new S2CLogin {
                Res = 1, RoleInfo = new RoleInfo {
                    Id = role.Id, X = role.Position.x, Y = role.Position.y
                }
            });
            log.Debug($"Guid:{guid} --- {pack.Name} login in, password is {pack.Password}.");
        }
Exemple #12
0
        /// <summary>
        /// Entity进入视野时
        ///     根据相互的视野范围来决定是否要互相加入到视野中
        /// </summary>
        /// <param name="roleA"></param>
        /// <param name="roleB"></param>
        public void EnterSight(EEntity entityA, EEntity entityB)
        {
            var dis = entityA.Dungeon.GridSystem.GetDistanceFromTwoPosition(entityA.Position, entityB.Position);

            if (entityA.SightDistance >= dis)
            {
                // 自己的视野 大于 两者间距 则 一定能进入视野
                //entityA.Sight.SetInSightEntityIds.Add(entityB.Id);
                entityA.Sight.SetInSightEntity.Add(entityB);
                entityB.Sight.SetWatchEntity.Add(entityA);

                if (entityA is ERole roleA)
                {
                    Program.Server.StartSend(roleA.exSocket.SocketEventArgs
                                             , new S2CSight
                    {
                        EntityInfo = new EntityInfo {
                            Id = entityB.Id, EntityType = (int)entityB.EntityType, X = entityB.Position.x, Y = entityB.Position.y
                        },
                        SightOpt = S2CSight.Types.ESightOpt.EnterSight
                    });
                }
            }

            if (entityB.SightDistance >= dis)
            {
                //entityB.Sight.SetInSightEntityIds.Add(entityA.Id);
                entityB.Sight.SetInSightEntity.Add(entityA);
                entityA.Sight.SetWatchEntity.Add(entityB);
                if (entityB is ERole roleB)
                {
                    Program.Server.StartSend(roleB.exSocket.SocketEventArgs
                                             , new S2CSight
                    {
                        EntityInfo = new EntityInfo {
                            Id = entityA.Id, EntityType = (int)entityA.EntityType, X = entityA.Position.x, Y = entityA.Position.y
                        },
                        SightOpt = S2CSight.Types.ESightOpt.EnterSight
                    });
                }
            }
        }
Exemple #13
0
 public void OnEntityNavAuto(EEntity entity, double x, double y)
 {
     entity.Movement.StackNavPath = Common.NavAuto.AStar.CalOptimalPath(entity.Dungeon.MapData, (int)entity.Position.x, (int)entity.Position.y, (int)x, (int)y);
     entity.Movement.IsNavAuto    = entity.Movement.StackNavPath.Count > 0;
 }
Exemple #14
0
        /// <summary>
        /// 找到所有能看到自己的Entity集合
        /// </summary>
        /// <param name="self"></param>
        /// <param name="deep"></param>
        /// <param name="curPos"></param>
        /// <param name="gridIdxs"></param>
        /// <param name="entities"></param>
        public void GetEntitiesFromSight(EEntity self, CPosition <double> curPos, out HashSet <int> gridIdxs, out HashSet <EEntity> entities)
        {
            GetGridPosFromMapPos(curPos, out var gridPos);

            GetEntitiesFromSight(self.SightDistance, gridPos, out gridIdxs, out entities);
        }
Exemple #15
0
        /// <summary>
        /// 从格子中删除Entity
        /// </summary>
        /// <param name="roleId"></param>
        public void DeleteEntityFromGrid(EEntity entity)
        {
            var idx = GetGridPosFromMapPos(entity.Position, out var _);

            _entityIdMap[idx][(int)entity.EntityType].Remove(entity.Id);
        }