Esempio n. 1
0
        private Yad.Net.Messaging.Common.Message CreateInitMessage()
        {
            GameInitMessage giMsg = (GameInitMessage)MessageFactory.Create(MessageType.GameInit);
            int             count = -1;

            PositionData[] arrPd = null;
            lock (((ICollection)_playerCollection).SyncRoot){
                count = _playerCollection.Count;
                short[] ids   = new short[count];
                int     index = 0;
                foreach (Player p in _playerCollection.Values)
                {
                    ids[index++] = p.Id;
                }
                arrPd = new PositionData[count];
                for (int i = 0; i < count; ++i)
                {
                    arrPd[i] = new PositionData(ids[i]);
                }
            }

            SetStartPositions(arrPd);
            Array.Sort(arrPd);
            giMsg.PositionData = arrPd;
            return(giMsg);
        }
Esempio n. 2
0
    private void HandleGameInit(GameInitMessage message)
    {
        float wait = minStartDelay - delayTimer;

        if (wait < 0)
        {
            wait = 0;
        }
        StartCoroutine(DelayedInit(message, wait));
    }
Esempio n. 3
0
 /// <summary>
 /// Map-Constructor
 /// </summary>
 /// <param name="initMsg">GameInitialization Message with map Info</param>
 public Map(GameInitMessage initMsg)
 {
     foreach (GameCharacterDTO player in initMsg.playerDTOs)
     {
         CreateCharacter(player.uuid, player.position.X, player.position.Y, player.color, player.enemy);
     }
     foreach (GameCharacter player in _players.Values)
     {
         player.playerSound += playCharacterSounds;
     }
     populateMap(initMsg.mapDTO);
 }
Esempio n. 4
0
        public void ProcessMessage(Message message)
        {
            handlerSuspender.WaitOne();

            InfoLog.WriteInfo(message.ToString(), LogFiles.IncomingMsgLog);

            switch (message.Type)
            {
            case MessageType.GameInit:
            {
                GameInitMessage gameInitMessage = message as GameInitMessage;
                PositionData[]  infoTab         = gameInitMessage.PositionData;
                if (GameInitialization != null)
                {
                    GameInitialization(this, new GameInitEventArgs(infoTab));
                }
            }
            break;

            case MessageType.Move:
            case MessageType.Destroy:
            case MessageType.CreateUnit:
            case MessageType.Build:
            case MessageType.Harvest:
            case MessageType.Attack:
            case MessageType.DeployMCV:
            case MessageType.BuildUnitMessage:
            case MessageType.PlayerDisconnected:
                if (GameMessageReceive != null)
                {
                    GameMessageReceive(this, (GameMessage)message);
                }
                break;

            //case MessageType.PlayerDisconnected:
            //    if (PlayerDisconnected != null)
            //        PlayerDisconnected(this, (GameNumericMessage)message);
            //    break;
            case MessageType.DoTurn:
                if (DoTurnPermission != null)
                {
                    DoTurnPermission(this, (DoTurnMessage)message);
                }
                break;

            default:
                InfoLog.WriteInfo("GameMessageHandler received unknown message type: " + message.Type, EPrefix.ClientInformation);
                break;
            }
            handlerSuspender.Release();
        }
Esempio n. 5
0
    // Delay the game initialization so the player sees his ship flying:
    private IEnumerator DelayedInit(GameInitMessage message, float delay)
    {
        yield return(new WaitForSeconds(delay));

        Debug.Log("Initializing game...");
        cardLookUp = message.cards;
        GameView gameView = message.gameView;

        this.gameView = gameView;
        playerName    = gameView.viewer;
        gameBoard.InitializeFromView(gameView);
        RefreshResources();
        starSystemEnvironment.GameStarted();
        UpdateView(gameView);
    }
Esempio n. 6
0
    public void HandleMessage(JObject json)
    {
        string messageClass = (string)json["messageClass"];

        switch (messageClass)
        {
        case "JoinMessage":
            JoinMessage join = json.ToObject <JoinMessage>();
            HandleJoin(join);
            break;

        case "GameInitMessage":
            GameInitMessage gameInit = json.ToObject <GameInitMessage>();
            HandleGameInit(gameInit);
            break;

        case "ValidPlaysMessage":
            ValidPlaysMessage valids = json.ToObject <ValidPlaysMessage>();
            HandleValidPlays(valids);
            break;

        case "EventsMessage":
            EventsMessage eventsMsg = new EventsMessage();
            eventsMsg.commandPlayer = json["commandPlayer"].ToString();
            eventsMsg.ackId         = json["ackId"].ToObject <int>();
            eventsMsg.updatedView   = json["updatedView"].ToObject <GameView>();
            JEnumerable <JToken> eventList = json["events"].Children();
            foreach (JToken token in eventList)
            {
                GameEvent gameEvent = EventFactory.FromJToken(token);
                if (gameEvent != null)
                {
                    eventsMsg.events.Add(gameEvent);
                }
            }
            HandleEventsMessage(eventsMsg);
            break;

        default:
            Debug.LogError("Unknown message: " + messageClass);
            break;
        }
    }
Esempio n. 7
0
        public void Run(MapInfoComponent map)
        {
            System.Console.WriteLine("MapInit::Run");
            int             seed    = world.GetBehavior <RandomBhr>().random();
            GameInitMessage message = new GameInitMessage()
            {
                seed = seed
            };

            message.pid.AddRange(map.players);
            foreach (var item in map.players)
            {
                world.GetComponent <StateComponent>(item).state = StateDefine.Readying;
                world.Get <Entity>(item).AddComponent <InputComponenet>();
            }
            world.GetBehavior <Notify>().Run(map.players, message);
            map.entity.AddComponent <WaitCounterComponent>();
            map.entity.AddComponent <FrameComponent>();
        }