private static void GetInternalUserDataCallback(ServerModels.GetUserDataResult result) { string playFabId = result.PlayFabId; foreach (var eachUserEntry in result.Data) PfSharedModelEx.serverUsers[playFabId].userInternalData[eachUserEntry.Key] = eachUserEntry.Value.Value; PfSharedControllerEx.PostEventMessage(PfSharedControllerEx.EventType.OnUserDataLoaded, null, null, PfSharedControllerEx.Api.Server, false); }
private static void GetUserVcCallback(ServerModels.GetUserInventoryResult getResult) { string playFabId = ((ServerModels.GetUserInventoryRequest)getResult.Request).PlayFabId; UserModel userModel; if (PfSharedModelEx.serverUsers.TryGetValue(playFabId, out userModel)) userModel.userVC = getResult.VirtualCurrency; foreach (var pair in getResult.VirtualCurrency) PfSharedModelEx.virutalCurrencyTypes.Add(pair.Key); }
private static void SetTitleDataCallback(ServerModels.SetTitleDataResult result) { string dataKey = ((ServerModels.SetTitleDataRequest)result.Request).Key; string dataValue = ((ServerModels.SetTitleDataRequest)result.Request).Value; if (string.IsNullOrEmpty(dataValue)) { PfSharedModelEx.titleData.Remove(dataKey); } else { PfSharedModelEx.titleData[dataKey] = dataValue; } PfSharedControllerEx.PostEventMessage(PfSharedControllerEx.EventType.OnTitleDataChanged, null, null, PfSharedControllerEx.Api.Server, false); }
private static void GetCatalogCallback(ServerModels.GetCatalogItemsResult catalogResult) { PfSharedModelEx.serverCatalog.Clear(); foreach (var catalogItem in catalogResult.Catalog) PfSharedModelEx.serverCatalog[catalogItem.ItemId] = catalogItem; PfSharedModelEx.consumableItemIds.Clear(); PfSharedModelEx.containerItemIds.Clear(); foreach (var each in catalogResult.Catalog) { if (each.Container != null) PfSharedModelEx.containerItemIds.Add(each.ItemId); else if (each.Consumable != null && each.Consumable.UsageCount > 0) PfSharedModelEx.consumableItemIds.Add(each.ItemId); } PfSharedControllerEx.PostEventMessage(PfSharedControllerEx.EventType.OnCatalogLoaded, null, null, PfSharedControllerEx.Api.Server, false); }
public static void ServerCharCallBack(ServerModels.ListUsersCharactersResult charResult) { string playFabId = ((ServerModels.ListUsersCharactersRequest)charResult.Request).PlayFabId; UserModel userModel; if (!PfSharedModelEx.serverUsers.TryGetValue(playFabId, out userModel)) return; CharacterModel temp; foreach (var character in charResult.Characters) { if (!userModel.serverCharacterModels.TryGetValue(character.CharacterId, out temp)) userModel.serverCharacterModels[character.CharacterId] = new Server.PfInvServerChar(playFabId, character.CharacterId, character.CharacterName); userModel.serverCharacterModels[character.CharacterId] = new PfInvServerChar(playFabId, character.CharacterId, character.CharacterName); PfSharedControllerEx.PostEventMessage(PfSharedControllerEx.EventType.OnUserCharactersLoaded, playFabId, character.CharacterId, PfSharedControllerEx.Api.Server, false); } }
private static void GetInternalTitleDataCallback(ServerModels.GetTitleDataResult result) { foreach (var eachTitleEntry in result.Data) PfSharedModelEx.titleInternalData[eachTitleEntry.Key] = eachTitleEntry.Value; PfSharedControllerEx.PostEventMessage(PfSharedControllerEx.EventType.OnTitleDataLoaded, null, null, PfSharedControllerEx.Api.Server, false); }
public void MoveToUserCallback(ServerModels.MoveItemToUserFromCharacterResult moveResult) { string playFabId = ((ServerModels.MoveItemToUserFromCharacterRequest)moveResult.Request).PlayFabId; string characterId = ((ServerModels.MoveItemToUserFromCharacterRequest)moveResult.Request).CharacterId; string movedItemInstanceId = ((ServerModels.MoveItemToUserFromCharacterRequest)moveResult.Request).ItemInstanceId; UserModel userModel; if (PfSharedModelEx.serverUsers.TryGetValue(playFabId, out userModel)) { var movedItem = userModel.GetServerItem(characterId, movedItemInstanceId); if (movedItem != null) { userModel.RemoveItems(characterId, new HashSet<string>() { movedItemInstanceId }); userModel.serverUserItems.Add(movedItem); } } PfSharedControllerEx.PostEventMessage(PfSharedControllerEx.EventType.OnInventoryChanged, playFabId, null, PfSharedControllerEx.Api.Server, false); PfSharedControllerEx.PostEventMessage(PfSharedControllerEx.EventType.OnInventoryChanged, playFabId, characterId, PfSharedControllerEx.Api.Server, false); }
public void GetInventoryCallback(ServerModels.GetCharacterInventoryResult getResult) { PfSharedControllerEx.sb.Length = 0; for (int i = 0; i < getResult.Inventory.Count; i++) { if (i != 0) PfSharedControllerEx.sb.Append(", "); PfSharedControllerEx.sb.Append(getResult.Inventory[i].DisplayName); } inventoryDisplay = PfSharedControllerEx.sb.ToString(); inventory = getResult.Inventory; }
public void GrantCharacterItemCallback(ServerModels.GrantItemsToCharacterResult grantResult) { // Merge the items we received with the items we know we have //UserModel userModel; //if (PfSharedModelEx.serverUsers.TryGetValue(playFabId, out userModel)) // userModel.serverUserItems.AddRange(grantResult.ItemGrantResults); // TODO: Type mismatch makes this too complicated for now PfSharedControllerEx.PostEventMessage(PfSharedControllerEx.EventType.OnInventoryChanged, playFabId, characterId, PfSharedControllerEx.Api.Server, true); }
private void GetServerLbCallback(ServerModels.GetLeaderboardResult result) { if (result.Leaderboard.Count > 0) lastReceivedMessage = "Get Server Leaderboard Successful"; else lastReceivedMessage = "Get Server Leaderboard, empty"; }
private static void UpdateUserDataCallback(ServerModels.UpdateUserDataResult result) { string playFabId = ((ServerModels.UpdateUserDataRequest)result.Request).PlayFabId; Dictionary<string, string> dataUpdated = ((ServerModels.UpdateUserDataRequest)result.Request).Data; foreach (var dataPair in dataUpdated) { if (string.IsNullOrEmpty(dataPair.Value)) PfSharedModelEx.serverUsers[playFabId].userData.Remove(dataPair.Key); else PfSharedModelEx.serverUsers[playFabId].userData[dataPair.Key] = dataPair.Value; } PfSharedControllerEx.PostEventMessage(PfSharedControllerEx.EventType.OnUserDataChanged, playFabId, null, PfSharedControllerEx.Api.Server, false); }
public EngineServerHost(IEngine engine, ILogger logger, IBridge gameBridge) { _engine = engine ?? throw new ArgumentNullException(nameof(engine)); _logger = logger ?? throw new ArgumentNullException(nameof(logger)); CommandContext = _engine.CommandSystem.CreateContext("ServerContext"); _ipname = CommandContext.RegisterVariable(new VariableInfo("ip") .WithHelpInfo("The IP address to use for server hosts") .WithValue(NetConstants.LocalHost)); _hostport = CommandContext.RegisterVariable(new VariableInfo("hostport") .WithHelpInfo("The port to use for server hosts") .WithValue(0)); _defport = CommandContext.RegisterVariable(new VariableInfo("port") .WithHelpInfo("The default port to use for server hosts") .WithValue(NetConstants.DefaultServerPort)); _sv_timeout = CommandContext.RegisterVariable(new VariableInfo("sv_timeout") .WithHelpInfo("Maximum time to wait before timing out client connections") .WithValue(60)); _net_sv_log_messages = CommandContext.RegisterVariable(new VariableInfo("net_sv_log_messages") .WithHelpInfo("Whether to log received client-to-server network messages") .WithValue(false) .WithBooleanFilter() .WithChangeHandler((ref VariableChangeEvent @event) => { if (_netServer != null) { _netServer.TraceMessageLogging = @event.Boolean; } })); _maxPlayers = CommandContext.RegisterVariable(new VariableInfo("maxplayers") .WithHelpInfo("The maximum number of players that can connect to this server") .WithValue(_engine.IsDedicatedServer ? 6 : NetConstants.MinClients) .WithDelegateFilter((ref string _, ref float __) => { if (Active) { _logger.Information("maxplayers cannot be changed while a server is running."); } return(!Active); }) .WithNumberFilter() .WithMinMaxFilter(NetConstants.MinClients, NetConstants.MaxClients)); if (_engine.CommandLine.TryGetValue("-port", out var portValue)) { _hostport.String = portValue; } if (_engine.CommandLine.TryGetValue("-maxplayers", out var maxPlayersValue)) { _maxPlayers.String = maxPlayersValue; } _serverModels = new ServerModels(_engine.ModelManager, Framework.FallbackModelName); LoadGameServer(gameBridge); var objectListTypeRegistryBuilder = new TypeRegistryBuilder(); _serverNetworking.RegisterObjectListTypes(objectListTypeRegistryBuilder); _objectListTypeRegistry = objectListTypeRegistryBuilder.BuildRegistry(); var dataSetBuilder = new BinaryDataSetBuilder(); RegisterNetworkBinaryData(dataSetBuilder); _binaryDataDescriptorSet = dataSetBuilder.BuildTransmissionSet(); }
private static void SubtractCharVcCallback(ServerModels.ModifyCharacterVirtualCurrencyResult modifyResult) { string playFabId = ((ServerModels.SubtractCharacterVirtualCurrencyRequest)modifyResult.Request).PlayFabId; string characterId = ((ServerModels.SubtractCharacterVirtualCurrencyRequest)modifyResult.Request).CharacterId; UserModel userModel; if (PfSharedModelEx.serverUsers.TryGetValue(playFabId, out userModel)) userModel.SetVcBalance(characterId, modifyResult.VirtualCurrency, modifyResult.Balance); PfSharedControllerEx.PostEventMessage(PfSharedControllerEx.EventType.OnVcChanged, playFabId, characterId, PfSharedControllerEx.Api.Client | PfSharedControllerEx.Api.Server, false); }
private static void ModifyUserVcCallback(ServerModels.ModifyUserVirtualCurrencyResult modifyResult) { UserModel userModel; if (PfSharedModelEx.serverUsers.TryGetValue(modifyResult.PlayFabId, out userModel)) userModel.SetVcBalance(null, modifyResult.VirtualCurrency, modifyResult.Balance); PfSharedControllerEx.PostEventMessage(PfSharedControllerEx.EventType.OnVcChanged, modifyResult.PlayFabId, null, PfSharedControllerEx.Api.Client | PfSharedControllerEx.Api.Server, false); }
private void GrantCharCallback(ServerModels.GrantCharacterToUserResult result) { lastReceivedMessage = "Grant Char Successful"; }
private void GetServerLbCallback(ServerModels.GetLeaderboardResult result) { var testContext = (UUnitTestContext)result.CustomData; testContext.True(result.Leaderboard.Count > 0, "Server leaderboard should not be empty"); testContext.EndTest(UUnitFinishState.PASSED, null); }
public static void GetUserItemsCallback(ServerModels.GetUserInventoryResult getResult) { string playFabId = ((ServerModels.GetUserInventoryRequest)getResult.Request).PlayFabId; PfSharedControllerEx.sb.Length = 0; for (int i = 0; i < getResult.Inventory.Count; i++) { if (i != 0) PfSharedControllerEx.sb.Append(", "); PfSharedControllerEx.sb.Append(getResult.Inventory[i].DisplayName); } UserModel userModel; if (PfSharedModelEx.serverUsers.TryGetValue(playFabId, out userModel)) { userModel.userInvDisplay = PfSharedControllerEx.sb.ToString(); userModel.serverUserItems = getResult.Inventory; } }
private void GetCharsCallback(ServerModels.ListUsersCharactersResult result) { lastReceivedMessage = "Get Chars Successful"; foreach (var eachCharacter in result.Characters) if (eachCharacter.CharacterName == CHAR_NAME) targetCharacter = eachCharacter; }