// this is  for _host only_ to send messages to themself
        public void SendMatchStateMessageSelf <T>(MatchMessageType opCode, T message)
            where T : MatchMessage <T>
        {
            Debug.LogError("Sending Match Data to Self");
            // TODO: add more cases
            switch (opCode)
            {
            case MatchMessageType.AsteroidSpawned:
                OnAsteroidSpawned?.Invoke(message as MatchMessageSpawnElement);
                break;

            case MatchMessageType.PlayerSpawned:
                OnPlayerSpawned?.Invoke(message as MatchMessageSpawnShip);
                break;

            case MatchMessageType.BallSpawned:
                OnBallSpawned?.Invoke(message as MatchMessageSpawnElement);
                break;

            case MatchMessageType.GoalSpawned:
                OnGoalSpawned?.Invoke(message as MatchMessageSpawnElement);
                break;

            case MatchMessageType.StadiumEntered:
                OnStadiumEntered?.Invoke();
                break;
            }
        }
Exemple #2
0
        /// <summary>
        /// This method is used by host to invoke locally event connected with match message which is sent to other players.
        /// Should be always runned on host client after sending any message, otherwise some of the game logic would not be runned on host game instance.
        /// Don't use this method when client is not a host!
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="opCode"></param>
        /// <param name="message"></param>
        public void SendMatchStateMessageSelf <T>(MatchMessageType opCode, T message)
            where T : MatchMessage <T>
        {
            //Choosing which event should be invoked basing on opCode and firing event
            switch (opCode)
            {
            //GAME
            case MatchMessageType.MatchEnded:
                OnGameEnded?.Invoke(message as MatchMessageGameEnded);
                break;

            //UNITS
            case MatchMessageType.UnitSpawned:
                OnUnitSpawned?.Invoke(message as MatchMessageUnitSpawned);
                break;

            /*
             * case MatchMessageType.UnitMoved:
             *  OnUnitMoved?.Invoke(message as MatchMessageUnitMoved);
             *  break;
             *
             * case MatchMessageType.UnitAttacked:
             *  OnUnitAttacked?.Invoke(message as MatchMessageUnitAttacked);
             *  break;
             */

            //SPELLS

            /*
             * case MatchMessageType.SpellActivated:
             *  OnSpellActivated?.Invoke(message as MatchMessageSpellActivated);
             *  break;
             */

            //CARDS

            /*
             * case MatchMessageType.CardPlayRequest:
             *  OnCardRequested?.Invoke(message as MatchMessageCardPlayRequest);
             *  break;
             *
             * case MatchMessageType.CardPlayed:
             *  OnCardPlayed?.Invoke(message as MatchMessageCardPlayed);
             *  break;
             *
             * case MatchMessageType.CardCanceled:
             *  OnCardCancelled?.Invoke(message as MatchMessageCardCanceled);
             *  break;
             *
             * case MatchMessageType.StartingHand:
             *  OnStartingHandReceived?.Invoke(message as MatchMessageStartingHand);
             *  break;
             */

            default:
                break;
            }
        }
Exemple #3
0
 public void Send(MatchMessageType msgtype, int arg = 0)
 {
     if ((this.webSocket != null) && this.webSocket.IsOpen)
     {
         MatchMessage message = new MatchMessage();
         this.myname    = LocalSave.Instance.GetUserName();
         message.userid = LocalSave.Instance.GetServerUserID().ToString();
         if (this.myname == string.Empty)
         {
             this.myname = message.userid;
         }
         message.nickname = this.myname;
         message.msgtype  = (short)msgtype;
         message.argint   = arg;
         this.Send(JsonConvert.SerializeObject(message));
     }
 }
        /// <summary>
        /// This method sends match state message to other players through Nakama server.
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="opCode"></param>
        /// <param name="message"></param>
        public void SendMatchStateMessage <T>(MatchMessageType opCode, T message)
            where T : MatchMessage <T>
        {
            try
            {
                //Packing MatchMessage object to json
                string json = MatchMessage <T> .ToJson(message);

                //Sending match state json along with opCode needed for unpacking message to server.
                //Then server sends it to other players
                _socket.SendMatchStateAsync(MatchId, (long)opCode, json);
            }
            catch (Exception e)
            {
                Debug.LogError("Error while sending match state: " + e.Message);
            }
        }