Ejemplo n.º 1
0
        public virtual void UseSpecial(ITetriNETCallback callback, int targetId, Specials special)
        {
            Log.Default.WriteLine(LogLevels.Debug, "UseSpecial {0} {1}", targetId, special);

            IPlayer player = PlayerManager[callback];

            if (player != null)
            {
                //
                player.ResetTimeout(); // player alive
                //
                IPlayer target = PlayerManager[targetId];
                if (target != null)
                {
                    //
                    HostUseSpecial?.Invoke(player, target, special);
                }
                else
                {
                    Log.Default.WriteLine(LogLevels.Warning, "UseSpecial to unknown player {0} from {1}", targetId, player.Name);
                }
            }
            else
            {
                Log.Default.WriteLine(LogLevels.Warning, "UseSpecial from unknown player");
            }
        }
Ejemplo n.º 2
0
 public ISpectator this[ITetriNETCallback callback]
 {
     get
     {
         ISpectator spectator;
         _spectators.TryGetValue(callback, out spectator);
         return(spectator);
     }
 }
Ejemplo n.º 3
0
 public Spectator(int id, string name, ITetriNETCallback callback)
 {
     Id                   = id;
     Name                 = name;
     Callback             = callback;
     LastActionToClient   = DateTime.Now;
     LastActionFromClient = DateTime.Now;
     TimeoutCount         = 0;
 }
Ejemplo n.º 4
0
 public IPlayer this[ITetriNETCallback callback]
 {
     get
     {
         IPlayer player;
         _players.TryGetValue(callback, out player);
         return(player);
     }
 }
Ejemplo n.º 5
0
        public virtual void Heartbeat(ITetriNETCallback callback)
        {
            //Log.Default.WriteLine(LogLevels.Debug, "Heartbeat");

            IPlayer player = PlayerManager[callback];

            if (player != null)
            {
                //Log.Default.WriteLine("Heartbeat from {0}", player.Name);
                player.ResetTimeout(); // player alive
            }
            else
            {
                Log.Default.WriteLine(LogLevels.Warning, "Heartbeat from unknown player");
            }
        }
Ejemplo n.º 6
0
        public virtual void HeartbeatSpectator(ITetriNETCallback callback)
        {
            //Log.Default.WriteLine(LogLevels.Debug, "Heartbeat");

            ISpectator spectator = SpectatorManager[callback];

            if (spectator != null)
            {
                //Log.Default.WriteLine("Heartbeat from {0}", player.Name);
                spectator.ResetTimeout(); // player alive
            }
            else
            {
                Log.Default.WriteLine(LogLevels.Warning, "HeartbeatSpectator from unknown spectator");
            }
        }
Ejemplo n.º 7
0
        public TCPProxy(ITetriNETCallback callback, string address)
        {
            _readyToSend       = false;
            _packetToSendEvent = new ManualResetEvent(false);

            IPAddress  ip       = IPAddress.Parse(address);
            IPEndPoint endpoint = new IPEndPoint(ip, Port);

            _packetsToSend = new Queue <byte[]>();

            _cancellationTokenSource = new CancellationTokenSource();
            _sendTask = new Task(SendTask, _cancellationTokenSource.Token);

            _socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            _socket.BeginConnect(endpoint, OnConnectedToServer, null);
        }
Ejemplo n.º 8
0
        public virtual void PlacePiece(ITetriNETCallback callback, int pieceIndex, int highestIndex, Pieces piece, int orientation, int posX, int posY, byte[] grid)
        {
            Log.Default.WriteLine(LogLevels.Debug, "PlacePiece {0} {1} {2} {3} {4},{5} {6}", pieceIndex, highestIndex, piece, orientation, posX, posY, grid?.Count(x => x > 0) ?? -1);

            IPlayer player = PlayerManager[callback];

            if (player != null)
            {
                player.ResetTimeout(); // player alive
                //
                HostPiecePlaced?.Invoke(player, pieceIndex, highestIndex, piece, orientation, posX, posY, grid);
            }
            else
            {
                Log.Default.WriteLine(LogLevels.Warning, "PlacePiece from unknown player");
            }
        }
Ejemplo n.º 9
0
        public virtual void EarnAchievement(ITetriNETCallback callback, int achievementId, string achievementTitle)
        {
            Log.Default.WriteLine(LogLevels.Debug, "EarnAchievement {0} {1}", achievementId, achievementTitle);

            IPlayer player = PlayerManager[callback];

            if (player != null)
            {
                //
                player.ResetTimeout(); // player alive
                //
                HostEarnAchievement?.Invoke(player, achievementId, achievementTitle);
            }
            else
            {
                Log.Default.WriteLine(LogLevels.Warning, "EarnAchievement from unknown player");
            }
        }
Ejemplo n.º 10
0
        public virtual void ResetWinList(ITetriNETCallback callback)
        {
            Log.Default.WriteLine(LogLevels.Debug, "ResetWinList");

            IPlayer player = PlayerManager[callback];

            if (player != null)
            {
                //
                player.ResetTimeout(); // player alive
                //
                HostResetWinList?.Invoke(player);
            }
            else
            {
                Log.Default.WriteLine(LogLevels.Warning, "ResetWinList from unknown player");
            }
        }
Ejemplo n.º 11
0
        public virtual void BanPlayer(ITetriNETCallback callback, int playerId)
        {
            Log.Default.WriteLine(LogLevels.Debug, "BanPlayer {0}", playerId);

            IPlayer player = PlayerManager[callback];

            if (player != null)
            {
                //
                player.ResetTimeout(); // player alive
                //
                HostBanPlayer?.Invoke(player, playerId);
            }
            else
            {
                Log.Default.WriteLine(LogLevels.Warning, "BanPlayer from unknown player");
            }
        }
Ejemplo n.º 12
0
        public virtual void ChangeOptions(ITetriNETCallback callback, GameOptions options)
        {
            Log.Default.WriteLine(LogLevels.Debug, "ChangeOptions {0}", options);

            IPlayer player = PlayerManager[callback];

            if (player != null)
            {
                //
                player.ResetTimeout(); // player alive
                //
                HostChangeOptions?.Invoke(player, options);
            }
            else
            {
                Log.Default.WriteLine(LogLevels.Warning, "ChangeOptions from unknown player");
            }
        }
Ejemplo n.º 13
0
        public virtual void FinishContinuousSpecial(ITetriNETCallback callback, Specials special)
        {
            Log.Default.WriteLine(LogLevels.Debug, "FinishContinuousSpecial {0}", special);

            IPlayer player = PlayerManager[callback];

            if (player != null)
            {
                //
                player.ResetTimeout(); // player alive
                //
                HostFinishContinuousSpecial?.Invoke(player, special);
            }
            else
            {
                Log.Default.WriteLine(LogLevels.Warning, "FinishContinuousSpecial from unknown player");
            }
        }
Ejemplo n.º 14
0
        public virtual void ClearLines(ITetriNETCallback callback, int count)
        {
            Log.Default.WriteLine(LogLevels.Debug, "ClearLines {0}", count);

            IPlayer player = PlayerManager[callback];

            if (player != null)
            {
                //
                player.ResetTimeout(); // player alive
                //
                HostClearLines?.Invoke(player, count);
            }
            else
            {
                Log.Default.WriteLine(LogLevels.Warning, "ClearLines from unknown player");
            }
        }
Ejemplo n.º 15
0
        public virtual void PublishMessage(ITetriNETCallback callback, string msg)
        {
            Log.Default.WriteLine(LogLevels.Debug, "PublishMessage {0}", msg);

            IPlayer player = PlayerManager[callback];

            if (player != null)
            {
                //
                player.ResetTimeout(); // player alive
                //
                HostMessagePublished?.Invoke(player, msg);
            }
            else
            {
                Log.Default.WriteLine(LogLevels.Warning, "PublishMessage from unknown player");
            }
        }
Ejemplo n.º 16
0
        public virtual void PlayerTeam(ITetriNETCallback callback, string team)
        {
            Log.Default.WriteLine(LogLevels.Debug, "PlayerTeam {0}", team);

            IPlayer player = PlayerManager[callback];

            if (player != null)
            {
                //
                player.ResetTimeout(); // player alive
                //
                HostPlayerTeamChanged?.Invoke(player, team);
            }
            else
            {
                Log.Default.WriteLine(LogLevels.Warning, "Heartbeat from unknown player");
            }
        }
Ejemplo n.º 17
0
        public virtual void PublishSpectatorMessage(ITetriNETCallback callback, string msg)
        {
            Log.Default.WriteLine(LogLevels.Debug, "PublishMessage {0}", msg);

            ISpectator spectator = SpectatorManager[callback];

            if (spectator != null)
            {
                //
                spectator.ResetTimeout(); // player alive
                //
                HostSpectatorMessagePublished?.Invoke(spectator, msg);
            }
            else
            {
                Log.Default.WriteLine(LogLevels.Warning, "OnSpectatorMessagePublished from unknown spectator");
            }
        }
Ejemplo n.º 18
0
        public virtual void ModifyGrid(ITetriNETCallback callback, byte[] grid)
        {
            Log.Default.WriteLine(LogLevels.Debug, "ModifyGrid {0}", grid?.Count(x => x > 0) ?? -1);

            IPlayer player = PlayerManager[callback];

            if (player != null)
            {
                //
                player.ResetTimeout(); // player alive
                //
                HostGridModified?.Invoke(player, grid);
            }
            else
            {
                Log.Default.WriteLine(LogLevels.Warning, "ModifyGrid from unknown player");
            }
        }
Ejemplo n.º 19
0
        public virtual void UnregisterSpectator(ITetriNETCallback callback)
        {
            Log.Default.WriteLine(LogLevels.Debug, "UnregisterPlayer");

            ISpectator spectator = SpectatorManager[callback];

            if (spectator != null)
            {
                //
                spectator.ResetTimeout(); // player alive
                //
                HostSpectatorUnregistered?.Invoke(spectator);
            }
            else
            {
                Log.Default.WriteLine(LogLevels.Warning, "UnregisterSpectator from unknown spectator");
            }
        }
Ejemplo n.º 20
0
        public WCFProxy(ITetriNETCallback callback, string address)
        {
            if (callback == null)
            {
                throw new ArgumentNullException(nameof(callback));
            }
            if (address == null)
            {
                throw new ArgumentNullException(nameof(address));
            }

            LastActionToServer = DateTime.Now;

            // Get WCF endpoint
            EndpointAddress endpointAddress = null;

            if (String.IsNullOrEmpty(address) || address.ToLower() == "auto")
            {
                List <EndpointAddress> addresses = DiscoverEndpoints().ToList();
                if (addresses.Any())
                {
                    endpointAddress = addresses[0];
                }
            }
            else
            {
                endpointAddress = new EndpointAddress(address);
            }

            // Create WCF proxy from endpoint
            if (endpointAddress != null)
            {
                Log.Default.WriteLine(LogLevels.Debug, "Connecting to server:{0}", endpointAddress.Uri);
                Binding         binding         = new NetTcpBinding(SecurityMode.None);
                InstanceContext instanceContext = new InstanceContext(callback);
                _factory = new DuplexChannelFactory <IWCFTetriNET>(instanceContext, binding, endpointAddress);
                _proxy   = _factory.CreateChannel(instanceContext);
            }
            else
            {
                throw new Exception(String.Format("Server {0} not found", address));
            }
        }
Ejemplo n.º 21
0
        public Player(int id, string name, ITetriNETCallback callback)
        {
            if (name == null)
            {
                throw new ArgumentNullException(nameof(name));
            }
            if (callback == null)
            {
                throw new ArgumentNullException(nameof(callback));
            }

            Id                   = id;
            Name                 = name;
            Callback             = callback;
            PieceIndex           = 0;
            LastActionToClient   = DateTime.Now;
            LastActionFromClient = DateTime.Now;
            TimeoutCount         = 0;
            State                = PlayerStates.Registered;
        }
Ejemplo n.º 22
0
        public WCFSpectatorProxy(ITetriNETCallback callback, string address)
        {
            if (callback == null)
            {
                throw new ArgumentNullException(nameof(callback));
            }
            if (address == null)
            {
                throw new ArgumentNullException(nameof(address));
            }

            LastActionToServer = DateTime.Now;

            EndpointAddress endpointAddress = new EndpointAddress(address);

            // Create WCF proxy from endpoint
            Log.Default.WriteLine(LogLevels.Debug, "Connecting to server:{0}", endpointAddress.Uri);
            Binding         binding         = new NetTcpBinding(SecurityMode.None);
            InstanceContext instanceContext = new InstanceContext(callback);

            _factory = new DuplexChannelFactory <IWCFTetriNETSpectator>(instanceContext, binding, endpointAddress);
            _proxy   = _factory.CreateChannel(instanceContext);
        }
Ejemplo n.º 23
0
 public ISpectator CreateSpectator(int id, string name, ITetriNETCallback callback)
 {
     return(new Spectator(id, name, callback));
 }
Ejemplo n.º 24
0
 public IPlayer CreatePlayer(int id, string name, ITetriNETCallback callback)
 {
     return(new Player(id, name, callback));
 }
Ejemplo n.º 25
0
 public void HeartbeatSpectator(ITetriNETCallback callback)
 {
     ExceptionFreeAction(_proxy.HeartbeatSpectator);
 }
Ejemplo n.º 26
0
 public void UnregisterSpectator(ITetriNETCallback callback)
 {
     ExceptionFreeAction(_proxy.UnregisterSpectator);
 }
Ejemplo n.º 27
0
 public void RegisterSpectator(ITetriNETCallback callback, Versioning clientVersion, string spectatorName)
 {
     ExceptionFreeAction(() => _proxy.RegisterSpectator(clientVersion, spectatorName));
 }
Ejemplo n.º 28
0
 public void PublishSpectatorMessage(ITetriNETCallback callback, string msg)
 {
     ExceptionFreeAction(() => _proxy.PublishSpectatorMessage(msg));
 }
Ejemplo n.º 29
0
 public ISpectatorProxy CreateSpectatorProxy(ITetriNETCallback callback, string address)
 {
     return(new WCFSpectatorProxy(callback, address));
 }
Ejemplo n.º 30
0
 public IProxy CreatePlayerProxy(ITetriNETCallback callback, string address)
 {
     return(new WCFProxy(callback, address));
 }