private void UpdateBindableData() { var AmIPresent = CurrentMembers.Where(cm => cm.PlayerName == GameClient.PlayerProfile.Username).FirstOrDefault() != null; var AmINeutralTeam = GameClient.PlayerProfile.Team == TeamColor.Neutral; var HasSpace = CurrentGym.GymLevel > CurrentMembers.Count; var IsTeamOk = CurrentGym.OwnedByTeam == TeamColor.Neutral ? true : CurrentGym.OwnedByTeam == GameClient.PlayerProfile.Team; NotLvl5Yet = GameClient.PlayerStats?.Level < 5; CanDeploy = !AmINeutralTeam && IsTeamOk && HasSpace && !AmIPresent; NotInRange = CurrentGym.FortDataStatus == Utils.Game.FortDataStatus.Closed; IsEnabled = !NotInRange && !NotLvl5Yet; if (CurrentGym.OwnedByTeam == TeamColor.Neutral) { AtckType = AttackType.None; } else if (CurrentGym.OwnedByTeam == GameClient.PlayerProfile.Team) { AtckType = AttackType.Train; } else { AtckType = AttackType.Attack; } DeployPokemon.RaiseCanExecuteChanged(); StartBattle.RaiseCanExecuteChanged(); }
public Guid AddMember(Guid member) { ChannelMember newMember = new ChannelMember(Guid.NewGuid(), member); CurrentMembers.Add(newMember); return(newMember.ID); }
private void RemoveMemberExecuted(object obj) { var box = obj as ListBox; var member = box.SelectedItem as Member; CurrentMembers.Remove(member); if (NewMembers.Contains(member)) { NewMembers.Remove(member); } }
private void AddMemberExecuted(object obj) { if (SelectedMember != null) { CurrentMembers.Add(SelectedMember); } else { using (var db = new HIF3bkaiserEntities()) { var member = new Member { Name = TextMember }; NewMembers.Add(member); CurrentMembers.Add(member); } } }
private async Task CalculateGymData(FortDataWrapper currentGym) { // Navigating from game page, so we need to actually load the Gym Busy.SetBusy(true, "Loading Gym"); var response = await GameClient.GetGymDetails(currentGym.Id, currentGym.Latitude, currentGym.Longitude); Logger.Write($"Entering {response.Name} [ID = {CurrentGym.Id}]"); Busy.SetBusy(false); switch (response.Result) { case GetGymDetailsResponse.Types.Result.Unset: Logger.Write("Entering Gym Unset", LogLevel.Warning); ReturnToGameScreen.Execute(); break; case GetGymDetailsResponse.Types.Result.Success: // Success, we play the animation and update inventory Logger.Write("Entering Gym success"); CurrentGym = new FortDataWrapper(response.GymState.FortData); CurrentGymInfo = response; await GameClient.UpdateInventory(); CurrentMembers = GetCurrentMembers(CurrentGymInfo); SelectedMember = CurrentMembers.FirstOrDefault(); Logger.Write(string.Join("\n", CurrentMembers.Select(m => $"player:{m.PlayerName} level:{m.PlayerLevel} pokemon:{m.PokemonId} cp:{m.PokemonCp}"))); UpdateBindableData(); break; case GetGymDetailsResponse.Types.Result.ErrorNotInRange: Logger.Write("Entering Gym out of range"); var dialog2 = new MessageDialog("Gym is completely out of range"); await dialog2.ShowAsync(); ReturnToGameScreen.Execute(); break; default: throw new ArgumentOutOfRangeException(nameof(response.Result), "GetGymDetails result enum had something undefined"); } }
/// <summary> /// </summary> /// <param name="parameter">FortData containing the Gym that we're visiting</param> /// <param name="mode"></param> /// <param name="suspensionState"></param> /// <returns></returns> public override async Task OnNavigatedToAsync(object parameter, NavigationMode mode, IDictionary <string, object> suspensionState) { if (suspensionState.Any()) { // Recovering the state CurrentGym = JsonConvert.DeserializeObject <FortDataWrapper>((string)suspensionState[nameof(CurrentGym)]); CurrentGymInfo = JsonConvert.DeserializeObject <GetGymDetailsResponse>((string)suspensionState[nameof(CurrentGymInfo)]); CurrentMembers = GetCurrentMembers(CurrentGymInfo); SelectedMember = CurrentMembers.FirstOrDefault(); UpdateBindableData(); } else { CurrentGym = (FortDataWrapper)NavigationHelper.NavigationState[nameof(CurrentGym)]; NavigationHelper.NavigationState.Remove(nameof(CurrentGym)); await CalculateGymData(CurrentGym); CheckPlayerTeamSelection(); } }
public Guid RemoveMember(Guid member) { ChannelMember removedMember = CurrentMembers.FirstOrDefault(c => c.Member == member); if (removedMember != null) { if (CurrentMembers.Remove(removedMember)) { if (RemovedMembers == null) { RemovedMembers = new List <ChannelMember>(); } RemovedMembers.Add(removedMember); return(removedMember.Member); } else { throw new Exception($"Member {removedMember.Member} could not be removed from the channel {Name}"); } } return(Guid.Empty); }
void AddOrDeleteGroupMembersTask_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e) { ProductGroupItem productGroup = Planner.Instance.CurrentProductGroup; if (productGroup != null) { List <string> currentMemberAliases = productGroup.MemberAliases; Dictionary <string, MemberDescriptor> newMemberDescriptors = DiscoverProductGroupMemberDescriptors(ProductGroupToUpdate); NewMemberAliases = GetAliases(newMemberDescriptors); CurrentMembers.Clear(); AddedAliases.Clear(); NewMembers.Clear(); foreach (KeyValuePair <string, MemberDescriptor> kvp in newMemberDescriptors) { MemberDescriptor member = kvp.Value; CurrentMembers.Enqueue(member); GroupMemberItem groupMemberItem = Planner.Instance.ItemRepository.GetMemberByAlias(member.Member.Alias); if (!currentMemberAliases.Contains(member.Member.Alias) || groupMemberItem == null) { NewMembers.Enqueue(member); AddedAliases.Add(member.Member.Alias); } } DeletedAliases.Clear(); foreach (string alias in currentMemberAliases) { if (!NewMemberAliases.Contains(alias)) { DeletedAliases.Add(alias); } } } }
private bool AddMemberCanExecute(object obj) => (SelectedMember != null && !CurrentMembers.Select(m => m.Id).Contains(SelectedMember.Id)) || (SelectedMember == null && TextMember.Length > 0 && !NewMembers.Select(m => m.Name).Contains(TextMember));
void Handle_UpdateUI() { if (UpdateStage == UpdateStages.DetectingMembersToAddOrDeleteComplete) { if (NewMembers.Count > 0) { MemberDescriptor newMember = NewMembers.Dequeue(); UserInformation uiMember = newMember.Member; if (!GroupMemberExists(uiMember.Alias)) { GroupMemberItem newMemberItem = ScheduleStore.Instance.CreateStoreItem <GroupMemberItem>(ItemTypeID.GroupMember); newMemberItem.BeginSaveImmediate(); newMemberItem.Alias = uiMember.Alias; newMemberItem.Discipline = newMember.Discipline; newMemberItem.CapacityPerDay = Constants.AvgCapacityPerDay; newMemberItem.InitializeWithUserInformation(uiMember); newMemberItem.SaveImmediate(); } } else { UpdateStage = UpdateStages.AddingMembersComplete; } } else if (UpdateStage == UpdateStages.AddingMembersComplete) { ProductGroupItem productGroup = Planner.Instance.CurrentProductGroup; if (AddedAliases.Count > 0 || DeletedAliases.Count > 0) { if (productGroup != null && NewMemberAliases != null && NewMemberAliases.Count > 0) { productGroup.BeginSaveImmediate(); productGroup.MemberAliases = NewMemberAliases; productGroup.SaveImmediate(); } } productGroup.MembersLastUpdated = DateTime.Today; UpdateStage = UpdateStages.UpdatingProductGroupItemComplete; } else if (UpdateStage == UpdateStages.UpdatingProductGroupItemComplete) { if (CurrentMembers.Count > 0) { MemberDescriptor currentMember = CurrentMembers.Dequeue(); GroupMemberItem memberItem = Planner.Instance.ItemRepository.GetMemberByAlias(currentMember.Member.Alias); if (memberItem != null) { Planner.Instance.WriteToEventLog("Updating GroupMemberItem information: " + memberItem.DisplayName); memberItem.BeginSaveImmediate(); memberItem.InitializeWithUserInformation(currentMember.Member); memberItem.SaveImmediate(); } } else { UpdateStage = UpdateStages.UpdatingGroupMemberInformationComplete; } } else if (UpdateStage == UpdateStages.UpdatingGroupMemberInformationComplete) { Planner.Instance.WriteToEventLog("UpdatingGroupMemberInformationComplete"); UpdateStage = UpdateStages.UpdateCycleComplete; } }