public abstract void Process( IIntegrityChecker integrityChecker, IGameData gameData, IPlayerInventoryProvider inventoryProvider, DataModels.GameSession session, Character character, DataModels.CharacterState state);
public static Models.CharacterState Map(DataModels.CharacterState data) { var state = DataMapper.Map <Models.CharacterState, DataModels.CharacterState>(data); if (state == null) { state = new Models.CharacterState(); if (data != null) { state.Id = data.Id; state.Task = data.Task; state.TaskArgument = data.TaskArgument; state.InRaid = data.InRaid; state.Island = data.Island; state.DuelOpponent = data.DuelOpponent; state.RestedTime = data.RestedTime ?? 0d; state.X = data.X; state.Y = data.Y; state.Z = data.Z; } } if (data != null) { state.InDungeon = data.InDungeon.GetValueOrDefault(); state.InOnsen = data.InOnsen.GetValueOrDefault(); state.RestedTime = data.RestedTime.GetValueOrDefault(); } return(state); }
private DataModels.CharacterState CreateCharacterState(CharacterStateUpdate update) { var state = new DataModels.CharacterState { Id = Guid.NewGuid(), DuelOpponent = update.DuelOpponent, Health = update.Health, InArena = update.InArena, InRaid = update.InRaid, Island = update.Island, Task = update.Task, TaskArgument = update.TaskArgument }; return(state); }
public static Models.CharacterState Map(DataModels.CharacterState data) { return(DataMapper.Map <Models.CharacterState, DataModels.CharacterState>(data)); }
public static Player Map( this User user, IGameData gameData, Character character, bool rejoin = false, bool inGame = false) { var playItems = gameData.GetAllPlayerItems(character.Id); if (inGame && character.UserIdLock != null) { var targetStreamUser = gameData.GetUser(character.UserIdLock.Value); // if we got streamer tokens, only send the ones for the appropriate streamer playItems = playItems.Where(x => x.Tag == null || x.Tag == targetStreamUser.UserId).ToList(); } var invItems = Map(playItems); if (user == null) { return(null); } var clanMembership = gameData.GetClanMembership(character.Id); var clan = clanMembership != null?Map(gameData, gameData.GetClan(clanMembership.ClanId)) : null; var clanRole = clanMembership != null?Map(gameData.GetClanRole(clanMembership.ClanRoleId), clanMembership) : null; var characterState = gameData.GetCharacterState(character.StateId); if (character.StateId == null || characterState == null) { characterState = new DataModels.CharacterState() { Id = Guid.NewGuid() }; character.StateId = characterState.Id; gameData.Add(characterState); } return(new Player { Id = character.Id, UserName = user.UserName, UserId = user.UserId, Name = character.Name, IsRejoin = rejoin, IsAdmin = user.IsAdmin.GetValueOrDefault(), IsModerator = user.IsModerator.GetValueOrDefault(), Appearance = Map(gameData.GetAppearance(character.SyntyAppearanceId)), Resources = Map(gameData.GetResources(character.ResourcesId)), Skills = Map(gameData.GetCharacterSkills(character.SkillsId)), State = Map(characterState), InventoryItems = invItems, Statistics = Map(gameData.GetStatistics(character.StatisticsId)), Clan = clan, ClanRole = clanRole, OriginUserId = character.OriginUserId, Revision = character.Revision.GetValueOrDefault(), Identifier = character.Identifier, CharacterIndex = character.CharacterIndex, PatreonTier = user.PatreonTier.GetValueOrDefault(), IsHiddenInHighscore = user.IsHiddenInHighscore.GetValueOrDefault() }); }
public abstract void Handle( IIntegrityChecker integrityChecker, IGameData gameData, DataModels.GameSession session, Character character, DataModels.CharacterState state);
private void UpdateSessionTasks(DateTime utcNow) { var session = gameData.GetSession(sessionToken.SessionId); if (session == null) { return; } // force keep a session alive if we are connected here session.Stopped = null; session.Status = (int)SessionStatus.Active; session.Updated = utcNow; var village = GetTaskProcessor(VillageProcessorName); if (village != null) { village.Process(integrityChecker, gameData, inventoryProvider, session, null, null); } var characters = gameData.GetSessionCharacters(session); if (characters.Count > 0) { var loyalty = GetTaskProcessor(LoyaltyProcessorName); var clan = GetTaskProcessor(ClanProcessorName); var rested = GetTaskProcessor(RestedProcessorName); foreach (var character in characters) { //if (character.CharacterIndex == 0) //{ // var inventory = inventoryProvider.Get(character.Id); // inventory.AddPatreonTierRewards(); //} var state = gameData.GetCharacterState(character.StateId); if (state == null) { state = new DataModels.CharacterState { Id = Guid.NewGuid() }; gameData.Add(state); character.StateId = state.Id; } rested.Process(integrityChecker, gameData, inventoryProvider, session, character, state); clan.Process(integrityChecker, gameData, inventoryProvider, session, character, state); loyalty.Process(integrityChecker, gameData, inventoryProvider, session, character, state); if (string.IsNullOrEmpty(state.Task) || (state.InOnsen ?? false) || (state.InDungeon ?? false) || state.InArena || state.InRaid || string.IsNullOrEmpty(state.Island) || state.Island == "War" || !string.IsNullOrEmpty(state.DuelOpponent)) { continue; } var task = GetTaskProcessor(state.Task); if (task != null) { task.Process(integrityChecker, gameData, inventoryProvider, session, character, state); } } } }