コード例 #1
0
        private void CheckGameState()
        {
            if (gameBoard.GameOver())
            {
                GamePause();
                mainWindowControl.btnStartStop.BackgroundImage = Image.FromFile(Application.StartupPath + @"\pause1.png");
                mainWindowControl.btnStartStop.Enabled         = false;
                mainWindowControl.pnGameOver.Visible           = true;
                PlayerEntities playerEntity = new PlayerEntities();
                Player         player1      = new Player();
                var            pl           = (from player in playerEntity.Players
                                               where player.P_State == true
                                               select player).SingleOrDefault();
                if (pl != null)
                {
                    if (pl.P_Score < (int)gameBoard.GetScore)
                    {
                        pl.P_Score = (int)gameBoard.GetScore;
                        playerEntity.SaveChanges();
                        MessageBox.Show("Congrat " + pl.P_Username + ".New Record: " + gameBoard.GetScore);
                    }
                }

                //Kiem tra username trong database

                //gameBoard.GetScore.ToString()
            }
        }
コード例 #2
0
 public override void EntityAdded(EntityWrapper entityWrapper)
 {
     if (entityWrapper.HasComponent <Player>())
     {
         PlayerEntities.Add(entityWrapper);
     }
 }
コード例 #3
0
 private List <Task> BroadcastAsyncHere(IEnumerable <IPacket> packets, IBroadcastRule rule)
 {
     return(PlayerEntities.Select(s =>
                                  Task.Run(() =>
                                           rule == null || rule.Match(s.Value)
                 ? s.Value.Session.SendPacketsAsync(packets)
                 : Task.CompletedTask)).ToList());
 }
コード例 #4
0
        // Эти методы не особо нужны. Они создавались только для поддержки серверной сущности.

        public void AddPlayerEntity(PlayerEntity playerEntity)
        {
            var coincidence = PlayerEntities.FirstOrDefault(x => x == playerEntity);

            // Он не был зарегестрирован.
            if (coincidence == null)
            {
                PlayerEntities.Add(playerEntity);
                OnPlayerEntityAdd(playerEntity);
            }
        }
コード例 #5
0
        public void RemovePlayerEntity(PlayerEntity playerEntity)
        {
            var coincidence = PlayerEntities.FirstOrDefault(x => x == playerEntity);

            // Он был зарегестрирован.
            if (coincidence != null)
            {
                PlayerEntities.Remove(playerEntity);
                OnPlayerEntityRemove(playerEntity);
            }
        }
コード例 #6
0
        public void RegisterEntity <T>(T entity) where T : ISubstantialEntity
        {
            switch (entity)
            {
            case null:
                return;

            case IPlayerEntity playerEntity:
                PlayerEntities.Add(playerEntity.Id, playerEntity);
                SubstantialEntities.Add(entity.Id, entity);
                break;

            default:
                SubstantialEntities.Add(entity.Id, entity);
                break;
            }
        }
コード例 #7
0
        private List <Task> BroadcastEventAsyncHere(ILogicEvent logicEvent, IBroadcastEventRule rule, bool onlyPlayers)
        {
            if (onlyPlayers)
            {
                return(PlayerEntities.Select(s =>
                                             Task.Run(() =>
                                                      rule == null || rule.Match(s.Value)
                            ? s.Value.EmitEventAsync(logicEvent)
                            : Task.CompletedTask)).ToList());
            }

            return(SubstantialEntities.Select(s =>
                                              Task.Run(() =>
                                                       rule == null || rule.Match(s.Value)
                        ? s.Value.EmitEventAsync(logicEvent)
                        : Task.CompletedTask)).ToList());
        }
コード例 #8
0
ファイル: Map.cs プロジェクト: Adanlink/Funat_Server
        public void UnregisterEntity <T>(T entity) where T : IEntity
        {
            switch (entity)
            {
            case null:
                return;

            case IPlayerEntity playerEntity:
                PlayerEntities.Remove(playerEntity.Id);
                Entities.Remove(playerEntity.Id);
                break;

            default:
                Entities.Remove(entity.Id);
                break;
            }
        }
コード例 #9
0
ファイル: Level.cs プロジェクト: TeridiumLabs/PuzzledPenguins
        public IEnumerable <Entity> GetEntitiesAtPosition(int x, int y)
        {
            if (!IsInBounds(x, y))
            {
                return(null);
            }

            var position = new IntVector2(x, y);
            var entities = new List <Entity>();

            if (StaticEntities.Contains(position))
            {
                entities.Add(StaticEntities[position]);
            }
            entities.AddRange(DynamicEntities.Where(e => e.Position == position));
            entities.AddRange(PlayerEntities.Where(e => e.Position == position));
            return(entities);
        }
コード例 #10
0
        public void SetPlayers(Dictionary <int, PlayerPacket> playerPackets)
        {
            for (int i = 0; i < PlayerEntities.Count; i++)
            {
                int id = PlayerEntities.ElementAt(i).Key;
                if (playerPackets.ContainsKey(id) == false)
                {
                    PlayerEntities[id].Destroy();
                    PlayerEntities.Remove(id);
                    _mapInstance.RemoveMapPlayer(i);
                    i--;
                }
            }

            for (int i = 0; i < playerPackets.Count; i++)
            {
                PlayerPacket packet = playerPackets.ElementAt(i).Value;
                if (packet.PlayerID == RpgClientConnection.Instance.GetLocalPlayerID())
                {
                    _localPlayerPacket = packet;
                }

                if (PlayerEntities.ContainsKey(packet.PlayerID))
                {
                    Entity          clientEntity    = PlayerEntities[packet.PlayerID];
                    PlayerComponent playerComponent = (PlayerComponent)clientEntity.FindComponent <PlayerComponent>();
                    playerComponent.SetPlayerPacket(packet);
                }
                else
                {
                    Entity clientEntity = Entity.CreateInstance(this.Parent.GetManager());
                    clientEntity.GetTransform().Parent = this.Parent.GetTransform();
                    MapPlayer mapPlayer = new MapPlayer(packet, null);
                    _mapInstance.AddMapPlayer(mapPlayer);
                    new PlayerComponent(clientEntity, mapPlayer);
                    PlayerEntities.Add(packet.PlayerID, clientEntity);

                    if (_localPlayerPacket == packet)
                    {
                        _localMapPlayer = mapPlayer;
                    }
                }
            }
        }
コード例 #11
0
        public void UnregisterEntity <T>(T entity) where T : ISubstantialEntity
        {
            switch (entity)
            {
            case null:
                break;

            case IPlayerEntity playerEntity:
                PlayerEntities.Remove(playerEntity.Id);
                SubstantialEntities.Remove(playerEntity.Id);
                break;

            default:
                SubstantialEntities.Remove(entity.Id);
                break;
            }

            if (SubstantialEntities.Count == 0)
            {
                Dispose();
            }
        }
コード例 #12
0
    // Use this for initialization
    void Start()
    {
        systems = new List <ISystemInterface>();

        entities      = new PlayerEntities();
        enemyEntities = new EnemyEntities();

        entities.Init(entityCount);
        enemyEntities.Init(enemyEntityCount);

        // System addition order matters, they will run in the same order
        systems.Add(new GravitySystem());
        systems.Add(new ForceSystem());
        systems.Add(new InputSystem());
        systems.Add(new MoveSystem());
        systems.Add(new CollisionSystem());
        systems.Add(new WorldBoundsSystem());
        systems.Add(new RenderingSystem());

        foreach (var system in systems)
        {
            system.Start(this);
        }
    }
コード例 #13
0
 public override void EntityRemoved(EntityWrapper entityWrapper)
 {
     PlayerEntities.Remove(entityWrapper);
 }
コード例 #14
0
ファイル: GameState.cs プロジェクト: riQQ/HearthSim.Common
 private PlayerEntity TryGetPlayerEntity(MatchInfo.Player player)
 => player != null && PlayerEntities.TryGetValue(player.Id, out var playerEntity) ? playerEntity : null;
コード例 #15
0
ファイル: Map.cs プロジェクト: Adanlink/Funat_Server
 public Task BroadcastAsync(IEnumerable <IPacket> packets, IBroadcastRule rule)
 {
     return(Task.WhenAll(PlayerEntities.Select(s =>
                                               Task.Run(() => rule == null || rule.Match(s.Value) ? s.Value.Session.SendPacketsAsync(packets) : Task.CompletedTask))));
 }
コード例 #16
0
ファイル: Map.cs プロジェクト: Adanlink/Funat_Server
 public Task BroadcastAsync <T>(T packet, IBroadcastRule rule) where T : IPacket
 {
     return(Task.WhenAll(PlayerEntities.Select(s =>
                                               Task.Run(() => rule == null || rule.Match(s.Value) ? s.Value.Session.SendPacketAsync(packet) : Task.CompletedTask))));
 }