//initialize player data (this happens after login) private void InitPlayerDataRequest(int connectionID, int recHostID, Net_InitPlayerDataRequest msg) { //fetch player from DB by token DB_Player player = mdb.FetchPlayerByToken(msg.token); if (player == null) { Debug.Log(string.Format("[Sector Server]: invalid token from connection id {0} on host {1}.", connectionID, recHostID)); //TODO: force update this connection's token (be careful how you do this) return; } //fetch model_workers by player and convert to message_this_workers List <Message_This_Worker> messageThisWorkers = new List <Message_This_Worker>(); List <DB_Worker> modelWorkers = mdb.FetchWorkersByPlayer(player); foreach (DB_Worker worker in modelWorkers) { switch (worker.location.CollectionName) { case COLLECTIONS.SHIPS: messageThisWorkers.Add(new Message_This_Worker(mdb.FetchShipByID(worker.location.Id.AsObjectId).shipName, worker.workerName, worker.activity)); break; default: Debug.Log(string.Format("[Sector Server]: Unexpected worker location collection fetch ({0}).", worker.location.CollectionName)); return; } } //send messsage_player SendClient(connectionID, recHostID, new Net_OnInitPlayerDataRequest(player.CreatedOn.ToString(), messageThisWorkers, player.ActiveWorkerIndex)); //update player's connection id player.ActiveConnectionID = connectionID; player.ActiveHostID = recHostID; mdb.updatePlayer(player); //update account's connection id DB_Account account = mdb.FetchAccountByToken(msg.token); account.ActiveConnectionID = connectionID; account.ActiveHostID = recHostID; mdb.updateAccount(account); }