private async Task OnActivityDisabledAsync(ActivityContainer activity) { try { IMessageChannel channel = await _client.GetChannelAsync(activity.ChannelID) as IMessageChannel; await channel.DeleteMessageAsync(activity.ActivityID); } catch { } if (activity.PlannedDate > DateTime.UtcNow) { var builder = ParseActivityContainer(activity); foreach (var userID in activity.Users.Take(Activity.GetFireteamSize(activity.ActivityType)).Skip(1)) { try { var user = await _client.Rest.GetUserAsync(userID); await user.SendMessageAsync($"Ґардіане, вашу активність було скасовано.", embed : builder.Build()); } catch { } } } }
/// <summary> /// /// </summary> /// <param name="message"></param> /// <returns></returns> public static void Serialize(ActivityContainer container, string path) { using (Stream savestream = new FileStream(path, FileMode.Create)) { XmlSerializer serializer = new XmlSerializer(typeof(ActivityContainer)); serializer.Serialize(savestream, container); } }
/* ------------------------------------ */ /* General Functions */ /* ------------------------------------ */ // Use this for initialization void Start() { activityPos[0] = new Vector3(0, 0.10415f, 0); activityPos[1] = new Vector3(0, 0.0749f, 0); activityPos[2] = new Vector3(0, 0.04565f, 0); activityPos[3] = new Vector3(0, 0.0164f, 0); activityPos[4] = new Vector3(0, -0.01285f, 0); // load if (Application.isEditor) { container = ActivityContainer.Load(Path.Combine(Application.dataPath, "ActivityList.xml")); } else { container = ActivityContainer.Load(Path.Combine(Application.persistentDataPath, "ActivityList.xml")); } if (container == null) { container = new ActivityContainer(); } foreach (Activity a in container.activities) { a.reInitializer(); } UpdatePageAmount(storedAct); keywords.Add("return", () => { this.GetComponent <AudioSource>().PlayOneShot(tap); Voice_Return(); }); keywords.Add("previous", () => { this.GetComponent <AudioSource>().PlayOneShot(tap); isVoice = true; Voice_Previous(); }); keywords.Add("next", () => { this.GetComponent <AudioSource>().PlayOneShot(tap); isVoice = true; Voice_Next(); }); keywords.Add("repeat", () => { Voice_Repeat(); }); keywordRecognizer = new KeywordRecognizer(keywords.Keys.ToArray()); keywordRecognizer.OnPhraseRecognized += KeywordRecognizer_OnPhraseRecognized; keywordRecognizer.Start(); }
public FixedActivityManageViewModel AssembleFixedActivityManageViewModel(EditDetails details) { bool? optional = null; FixedActivity fixedActivity; using (var container = new ActivityContainer()) { if (details.CalledFromEditor) { optional = details.IsOptional; if (details.IsOptional) { fixedActivity = container.ActivitySelectedByUserForOptional .FirstOrDefault(a => a.Id == details.ActivityId && a.ActivityType == ActivityType.FixedActivity) as FixedActivity; } else { fixedActivity = container.ActivitySelectedByUserForSure .FirstOrDefault(a => a.Id == details.ActivityId && a.ActivityType == ActivityType.FixedActivity) as FixedActivity; } } else { fixedActivity = _unitOfWork.FixedActivityRepository.Get(null, null, a => a.Category, a => a.Labels) .FirstOrDefault(a => a.Id == details.ActivityId && a.CreationType == CreationType.ManuallyCreated); } } var fixedActivityViewModel = new FixedActivityManageViewModel() { Id = details.ActivityId.ToString(), Category = fixedActivity.Category?.ToString(), CategorySourceCollection = details.Categories, Color = fixedActivity.Color.ToString(), ColorSourceCollection = details.Colors, Description = fixedActivity.Description, EndTime = fixedActivity.End, LabelSourceCollection = details.Labels, Labels = fixedActivity.Labels.Select(l => l.Name), Name = fixedActivity.Name, Priority = fixedActivity.Priority, StartTime = fixedActivity.Start.GetValueOrDefault(), RepeatTypeSourceCollection = details.RepeatTypes, EnableRepeatChange = details.CalledFromEditor, RepeatType = fixedActivity.Repeat?.RepeatPeriod.ToString(), RepeatEndDate = fixedActivity.Repeat?.EndDate ?? DateTime.Today.AddDays(7), IsOptional = optional }; return(fixedActivityViewModel); }
/// <summary> /// /// </summary> /// <param name="xml"></param> /// <returns></returns> public static ActivityContainer Deserialize(string path) { ActivityContainer files = null; using (Stream loadstream = new FileStream(path, FileMode.Open)) { XmlSerializer serializer = new XmlSerializer(typeof(ActivityContainer)); files = (ActivityContainer)serializer.Deserialize(loadstream); } return(files); }
private EmbedBuilder ParseActivityContainer(ActivityContainer container) { (var icon, var activityName) = Activity .GetActivityInfo(container.ActivityType, container.ActivityName); var ftSize = Activity.GetFireteamSize(container.ActivityType); var users = new List <EmbedFieldBuilder>(); if (container.Users.Count() > 0) { var leader = container.Users.FirstOrDefault(); users.Add(new EmbedFieldBuilder { IsInline = false, Name = "Організатор збору", Value = $"<@{leader}>" }); var fireteam = container.Users.Skip(1).Take(ftSize - 1); if (fireteam.Count() > 0) { users.Add(new EmbedFieldBuilder { IsInline = false, Name = "Бойова група", Value = string.Join("\n", fireteam.Select(x => $"<@{x}>")) }); } var reserve = container.Users.Skip(ftSize); if (reserve.Count() > 0) { users.Add(new EmbedFieldBuilder { IsInline = false, Name = "Лава запасних", Value = string.Join("\n", reserve.Select(x => $"<@{x}>")) }); } } return(new EmbedBuilder() .WithColor(new Color(0xFFFFFF)) .WithThumbnailUrl(Emote.Parse(icon).Url) .WithTitle($"{activityName} @ {container.PlannedDate.ToLocalTime().ToString("dd.MM.yyyy HH:mm")}") .WithDescription(container.Description) .WithFields(users)); }
private async Task OnActivityRescheduledAsync(ActivityContainer activity) { var builder = ParseActivityContainer(activity); foreach (var userID in activity.Users.Take(Activity.GetFireteamSize(activity.ActivityType)).Skip(1)) { try { var user = await _client.Rest.GetUserAsync(userID); await user.SendMessageAsync($"Ґардіане, вашу активність було перенесено.", embed : builder.Build()); } catch { } } }
private async Task OnActivityUpdatedAsync(ActivityContainer activity) { IMessageChannel channel = _client.GetChannel(activity.ChannelID) as IMessageChannel; var builder = ParseActivityContainer(activity); var componentBuilder = new ComponentBuilder() .WithButton(customId: "ActivitierSubscribe", style: ButtonStyle.Primary, emote: new Emoji("\U00002795")); await channel.ModifyMessageAsync(activity.ActivityID, msg => { msg.Content = string.Join(", ", _destinyRoleIDs.Select(x => $"<@&{x}>")); msg.Embed = builder.Build(); msg.Components = componentBuilder.Build(); }); }
private async Task InitActivityAsync(ActivityContainer container) { var builder = new EmbedBuilder() .WithColor(0xFFFFFF) .WithTitle(CommonData.DiscordEmoji.Emoji.Loading) .WithDescription("Зачекайте, ініціалізую збір…"); IMessageChannel channel = _client.GetChannel(container.ChannelID) as IMessageChannel; var message = await channel.SendMessageAsync(embed : builder.Build()); container.ActivityID = message.Id; container.PlannedDate = container.PlannedDate.ToUniversalTime(); await _activityManager.AddActivityAsync(container); }
public PlatformClient(Uri plusBaseUrl, Uri talkBaseUrl, System.Net.CookieContainer cookie, IApiAccessor accessor, ICacheDictionary<string, ProfileCache, ProfileData> profileCacheStorage, CacheDictionary<string, ActivityCache, ActivityData> activityCacheStorage) { var handler = new System.Net.Http.HttpClientHandler() { CookieContainer = cookie }; Cookies = cookie; ServiceApi = accessor; PlusBaseUrl = plusBaseUrl; TalkBaseUrl = talkBaseUrl; NormalHttpClient = new System.Net.Http.HttpClient(handler); NormalHttpClient.DefaultRequestHeaders.Add("user-agent", ApiAccessorUtility.UserAgent); StreamHttpClient = new System.Net.Http.HttpClient(handler); StreamHttpClient.Timeout = TimeSpan.FromMinutes(15); StreamHttpClient.DefaultRequestHeaders.Add("user-agent", ApiAccessorUtility.UserAgent); People = new PeopleContainer(this, profileCacheStorage); Activity = new ActivityContainer(this, activityCacheStorage); Notification = new NotificationContainer(this); }
public DeadlineActivityManageViewModel AssembleDeadlineActivityViewModel(EditDetails details) { DeadlineActivity deadlineActivity; var milestoneStringBuilder = new StringBuilder(); using (var container = new ActivityContainer()) { if (details.CalledFromEditor) { deadlineActivity = container.ActivitySelectedByUserForSure .FirstOrDefault(a => a.Id == details.ActivityId && a.ActivityType == ActivityType.DeadlineActivity) as DeadlineActivity; } else { deadlineActivity = _unitOfWork.DeadlineActivityRepository.Get(null, null, a => a.Milestones) .FirstOrDefault(a => a.Id == details.ActivityId && a.CreationType == CreationType.ManuallyCreated); } foreach (var milestone in deadlineActivity.Milestones) { milestoneStringBuilder.Append($"{milestone.Name};{milestone.Time}|"); } } var deadlineActivityViewModel = new DeadlineActivityManageViewModel() { Id = details.ActivityId.ToString(), Description = deadlineActivity.Description, Name = deadlineActivity.Name, EndDate = deadlineActivity.End.Date, StartDate = deadlineActivity.Start.Date, EndTime = deadlineActivity.End, StartTime = deadlineActivity.Start, Milestones = milestoneStringBuilder.ToString(), CalledFromEditor = details.CalledFromEditor }; return(deadlineActivityViewModel); }
/// <summary> /// 在应用程序由最终用户正常启动时进行调用。 /// 将在启动应用程序以打开特定文件等情况下使用。 /// </summary> /// <param name="e">有关启动请求和过程的详细信息。</param> protected override void OnLaunched(LaunchActivatedEventArgs e) { // 不要在窗口已包含内容时重复应用程序初始化, // 只需确保窗口处于活动状态 if (!(Window.Current.Content is ActivityContainer rootFrame)) { // 创建要充当导航上下文的框架,并导航到第一页 rootFrame = new ActivityContainer { ActivityTransition = new AlphaAnimation() }; rootFrame.Navigated += RootFrameOnNavigated; SystemNavigationManager.GetForCurrentView().BackRequested += (sender, args) => rootFrame.GoBack(); //rootFrame.NavigationFailed += OnNavigationFailed; if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) { //TODO: 从之前挂起的应用程序加载状态 } // 将框架放在当前窗口中 Window.Current.Content = rootFrame; } if (e.PrelaunchActivated == false) { if (rootFrame.Content == null) { // 当导航堆栈尚未还原时,导航到第一页, // 并通过将所需信息作为导航参数传入来配置 // 参数 rootFrame.Navigate(typeof(MainPage), e.Arguments); } // 确保当前窗口处于活动状态 Window.Current.Activate(); } }
public UndefinedActivityManageViewModel AssembleUndefinedActivityViewModel(EditDetails details) { UndefinedActivity undefinedActivity; using (var container = new ActivityContainer()) { if (details.CalledFromEditor) { undefinedActivity = container.ActivitySelectedByUserForOptional .FirstOrDefault(a => a.Id == details.ActivityId && a.ActivityType == ActivityType.UndefinedActivity) as UndefinedActivity; } else { undefinedActivity = _unitOfWork.UndefinedActivityRepository.Get(null, null, a => a.Category, a => a.Labels) .FirstOrDefault(a => a.Id == details.ActivityId && a.CreationType == CreationType.ManuallyCreated); } } var undefinedActivityViewModel = new UndefinedActivityManageViewModel() { Id = details.ActivityId.ToString(), Category = undefinedActivity.Category?.ToString(), CategorySourceCollection = details.Categories, Color = undefinedActivity.Color.ToString(), ColorSourceCollection = details.Colors, Description = undefinedActivity.Description, LabelSourceCollection = details.Labels, Labels = undefinedActivity.Labels.Select(x => x.Name), Name = undefinedActivity.Name, CalledFromEditor = details.CalledFromEditor, MaximumTime = undefinedActivity.MaximumTime, MinimumTime = undefinedActivity.MinimumTime }; return(undefinedActivityViewModel); }
private async Task OnActivityNotificationAsync(ActivityContainer activity) { var builder = ParseActivityContainer(activity); var ftSize = Activity.GetFireteamSize(activity.ActivityType); string notes = "!"; if (ftSize > activity.Users.Count()) { notes = ", але необхідна кількість ґардіанів не назбиралася!"; } foreach (var userID in activity.Users.Take(ftSize)) { try { var user = await _client.Rest.GetUserAsync(userID); await user.SendMessageAsync($"Ґардіане, незабаром у вас розпочнеться активність{notes}", embed : builder.Build()); } catch { } } }
/// <summary> /// Invoked when the application is launched normally by the end user. Other entry points /// will be used such as when the application is launched to open a specific file. /// </summary> /// <param name="e">Details about the launch request and process.</param> protected override void OnLaunched(LaunchActivatedEventArgs e) { var rootFrame = Window.Current.Content as ActivityContainer; // Do not repeat app initialization when the Window already has content, // just ensure that the window is active if (rootFrame == null) { // Create a Frame to act as the navigation context and navigate to the first page rootFrame = new ActivityContainer(); //rootFrame.NavigationFailed k+= OnNavigationFailed; rootFrame.Navigated += RootFrameOnNavigated; SystemNavigationManager.GetForCurrentView().BackRequested += OnBackRequested; if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) { //TODO: Load state from previously suspended application } // Place the frame in the current Window Window.Current.Content = rootFrame; } if (e.PrelaunchActivated == false) { if (rootFrame.Content == null) { // When the navigation stack isn't restored navigate to the first page, // configuring the new page by passing required information as a navigation // parameter rootFrame.Navigate(typeof(StorageActivity)); } // Ensure the current window is active Window.Current.Activate(); } }
private void InitActivityContainer() { activityContainer = new ActivityContainer(this, "Mario"); }
public void Save(ActivityContainer container) { Serialize(container, _filePath); }
public ActivityContainer GetContainer() { ActivityContainer container = Deserialize(_filePath); return(container); }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); _rootActivityContainer = new ActivityContainer(this); SetContentView(_rootActivityContainer); }
private async Task ActivitySelectMenuExecutedAsync(SocketMessageComponent component) { switch (component.Data.CustomId) { case "QuickActivitySelector": { var builder = new EmbedBuilder() .WithColor(new Color(0xFFFFFF)) .WithDescription("Оберіть зручний час"); var menuBuilder = new SelectMenuBuilder() .WithPlaceholder("Оберіть час") .WithCustomId(string.Join(',', component.Data.Values)) .WithMinValues(1).WithMaxValues(1); var startDate = DateTime.Now; var endDate = startDate.AddHours(12); var tmpDate = startDate.AddMinutes(30); while (tmpDate < endDate) { menuBuilder = menuBuilder.AddOption(tmpDate.ToString("dd.MM HH:mm"), tmpDate.ToString("dd.MM_HH:mm")); tmpDate = tmpDate.AddMinutes(30); } var componentBuilder = new ComponentBuilder() .WithSelectMenu(menuBuilder); await component.RespondAsync(embed : builder.Build(), components : componentBuilder.Build(), ephemeral : true); } break; case string c when c.StartsWith("QuickActivity_"): { var raid = new ActivityContainer() { ChannelID = component.Channel.Id, ActivityType = Enum.Parse <BungieSharper.Entities.Destiny.HistoricalStats.Definitions.DestinyActivityModeType>(c.Split('_')[1]), PlannedDate = DateTime.ParseExact(string.Join(',', component.Data.Values), "dd.MM_HH:mm", CultureInfo.CurrentCulture), ActivityName = null, Description = null, Users = new ulong[] { component.User.Id } }; await component.DeferAsync(); await InitActivityAsync(raid); } break; case string c when c.StartsWith("QuickRaid_"): { var raid = new ActivityContainer() { ChannelID = component.Channel.Id, ActivityType = BungieSharper.Entities.Destiny.HistoricalStats.Definitions.DestinyActivityModeType.Raid, PlannedDate = DateTime.ParseExact(string.Join(',', component.Data.Values), "dd.MM_HH:mm", CultureInfo.CurrentCulture), ActivityName = c.Split('_')[1], Description = null, Users = new ulong[] { component.User.Id } }; await component.DeferAsync(); await InitActivityAsync(raid); } break; default: break; } }
public void SetContainer(ActivityContainer activityContainer) { this.container = activityContainer; }
// Update is called once per frame private void InitActivityContainer() { activityContainer = new ActivityContainer(this, "Enemy"); }
/// <summary> /// 在应用程序由最终用户正常启动时进行调用。 /// 将在启动应用程序以打开特定文件等情况下使用。 /// </summary> /// <param name="e">有关启动请求和过程的详细信息。</param> protected override async void OnLaunched(LaunchActivatedEventArgs e) { var titleBar = ApplicationView.GetForCurrentView().TitleBar; titleBar.BackgroundColor = Color.FromArgb(255, 63, 81, 181); titleBar.InactiveBackgroundColor = Color.FromArgb(255, 63, 81, 181); titleBar.ButtonForegroundColor = Colors.White; titleBar.ButtonBackgroundColor = Color.FromArgb(255, 63, 81, 181); titleBar.ButtonInactiveBackgroundColor = Color.FromArgb(255, 63, 81, 181); titleBar.ForegroundColor = Colors.White; ImageCache.Instance.CacheDuration = TimeSpan.FromDays(7); ImageCache.Instance.InitializeAsync(ApplicationData.Current.TemporaryFolder, "CachePics").Wait(); var localSettings = ApplicationData.Current.LocalSettings; if (localSettings.Values["Cookies"] != null) { var cookiesHeader = (string)localSettings.Values["Cookies"]; var container = ApiClient.Handler.CookieContainer; foreach (var item in Regex.Split(cookiesHeader, "; ")) { var index = item.IndexOf('='); if (index < 0) { continue; } var name = item.Substring(0, index); var value = item.Substring(index + 1); container.Add(new Uri("https://www.v2ex.com"), new Cookie(name, value)); } } var rootFrame = Window.Current.Content as ActivityContainer; // 不要在窗口已包含内容时重复应用程序初始化, // 只需确保窗口处于活动状态 if (rootFrame == null) { // 创建要充当导航上下文的框架,并导航到第一页 rootFrame = new ActivityContainer(); if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) { //TODO: 从之前挂起的应用程序加载状态 } // 将框架放在当前窗口中 Window.Current.Content = rootFrame; } if (e.PrelaunchActivated == false) { if (rootFrame.Content == null) { // 当导航堆栈尚未还原时,导航到第一页, // 并通过将所需信息作为导航参数传入来配置 // 参数 try { var html = await ApiClient.GetMainPage(); var r = new HtmlParser().ParseDocument(html).GetElementById("Top").TextContent.Contains("登出"); rootFrame.Navigate(r ? typeof(MainPage) : typeof(UserLoginView)); } catch { rootFrame.Navigate(typeof(UserLoginView)); } } // 确保当前窗口处于活动状态 Window.Current.Activate(); } }