/// <summary> タイマー処理を開始します。 /// </summary> public void TimerStart(CommonDataModel pCommonDM, TimelineObjectModel pTimelineOM) { switch (pCommonDM.AppStatusData.CurrentCombatTimerStatus) { case TimerStatus.Init: case TimerStatus.Stop: case TimerStatus.Pause: break; case TimerStatus.Run: return; } var artList = pTimelineOM.AlertList.Where(a => a.TimeFromStart >= pTimelineOM.TimerData.CurrentCombatTime); foreach (var art in artList) { art.Processed = false; } this.CurrentCombatRelativeClock.CurrentTime = pTimelineOM.TimerData.CurrentCombatTime; this.CurrentCombatTimer.Start(); pCommonDM.AppStatusData.CurrentCombatTimerStatus = TimerStatus.Run; this.TimerFunctionEnabledChange(pCommonDM); }
static public void LoadFromText(TimelineObjectModel pTimelineOM, string name, string text) { TimelineConfig config = TimelineConfigParser.TimelineConfig.Parse(text); foreach (AlertAll alertAll in config.AlertAlls) { foreach (TimelineActivityData matchingActivity in config.Items.FindAll(activity => activity.Name == alertAll.ActivityName)) { var alert = new TimelineAlertObjectModel { Activity = matchingActivity, ReminderTimeOffset = alertAll.ReminderTime, AlertSoundData = alertAll.AlertSound, TtsSpeaker = alertAll.TtsSpeaker, TtsSentence = alertAll.TtsSentence }; config.Alerts.Add(alert); } } foreach (string activityName in config.HideAlls) { //foreach (TimelineActivityData matchingActivity in config.Items.FindAll(activity => activity.Name == activityName)) //{ // matchingActivity.Hidden = true; //} } pTimelineOM.SetTimelineData(name, config.Items, config.Anchors, config.Alerts, config.AlertSoundAssets); //config = null; }
/// <summary> 戦闘時間が進む時の処理を実行します。 /// </summary> /// <param name="pTimerDataModel"></param> /// <param name="pTimelineDataModel"></param> public void CombatTimeTick(CommonDataModel pCommonDM, TimelineObjectModel pTimelineOM) { if (pCommonDM.AppStatusData.CurrentCombatTimerStatus != TimerStatus.Run) { return; } pTimelineOM.TimerData.CurrentCombatTime = this.CurrentCombatRelativeClock.CurrentTime; // アラート再生 var pendingAlerts = pTimelineOM.PendingAlertsAt(pTimelineOM.TimerData.CurrentCombatTime, AppConst.TooOldThreshold); foreach (var pendingAlert in pendingAlerts) { if (pendingAlert.AlertSoundData != null) { pendingAlert.Processed = soundPlayProcess.PlayAlert(pendingAlert, pCommonDM.PluginSettingsData.PlaySoundByACT); pCommonDM.TimelineLogCollection.Add( Globals.TimelineLogger.WriteSystemLog.Success.INFO.Write(string.Format("PendingAlerts: {0}", pendingAlert.AlertSoundData.Filename), Globals.ProjectName)); } else { pendingAlert.Processed = pendingAlert.TtsSpeaker.Synthesizer.SpeakAsync(pendingAlert.TtsSentence); //pCommonDM.TimelineLogCollection.Add( // Globals.TimelineLogger.WriteSystemLog.Success.INFO.Write(string.Format("PendingAlerts: {0}", pendingAlert.TtsSentenc), Globals.ProjectName)); } //pCommonDM.TimelineLogCollection.Add( // Globals.TimelineLogger.WriteSystemLog.Success.INFO.Write(string.Format("PendingAlerts: {0}", pendingAlert.AlertSoundData.Filename), Globals.ProjectName)); } }
public void Stop() { timer.Stop(); timeline = null; ActGlobals.oFormActMain.OnLogLineRead -= act_OnLogLineRead; }
/*--- Method: public ------------------------------------------------------------------------------------------------------------------------------------------*/ /// <summary> タイムラインデータモデルを生成します。 /// </summary> /// <param name="pCommonDM"> 共通データモデル </param> /// <param name="pTimelineDM"> 作成データを格納するタイムラインデータモデル </param> /// <param name="pTimerDM"> タイマーデータモデル </param> //public void CreateTimelineDataModel(CommonDataModel pCommonDM, TimelineDataModel pTimelineDM, TimerDataModel pTimerDM) public void CreateTimelineDataModel(CommonDataModel pCommonDM, TimelineObjectModel pTimelineOM) { switch (pCommonDM.AppStatusData.TimelineLoadStatus) { case TimelineLoadStatus.NowLoading: return; } this.TimelineDataClear(pCommonDM, pTimelineOM); pCommonDM.AppStatusData.TimelineLoadStatus = TimelineLoadStatus.NowLoading; this.TimelineFunctionEnabledChange(pCommonDM); Globals.SoundFilesRoot = pCommonDM.PluginSettingsData.SoundResourceDirectory; if (pCommonDM.SelectedTimelineFileData == null) { pCommonDM.AppStatusData.TimelineLoadStatus = TimelineLoadStatus.Failure; this.TimelineFunctionEnabledChange(pCommonDM); return; } try { TimelineLoader.LoadFromFile(pTimelineOM, pCommonDM.SelectedTimelineFileData.TimelineFileFullPath); } catch (Exception e) { pCommonDM.LogDataCollection.Add(Globals.SysLogger.WriteSystemLog.Failure.ERROR.Write(e.Message, Globals.ProjectName)); Globals.ErrLogger.WriteStackTrace(e); pCommonDM.AppCommonData.TimelineLoadErrorMsg = "LoadError: " + e.Message; pCommonDM.AppStatusData.TimelineLoadStatus = TimelineLoadStatus.Failure; this.TimelineFunctionEnabledChange(pCommonDM); pCommonDM.SelectedTimelineFileData.TimelineFileName = string.Empty; pCommonDM.SelectedTimelineFileData.TimelineFileFullPath = string.Empty; return; } finally { } // タイムラインアイテムコレクションの生成 foreach (var data in pTimelineOM.ActivityCollection) { // タイムラインタイプとジョブを設定 this.timelineItemAnalyzProcess.SetTimelineType(data); this.timelineItemAnalyzProcess.SetTimelineJob(data); } // 最終ロードファイルの変更 pCommonDM.PluginSettingsData.LastLoadTimelineFileName = pCommonDM.SelectedTimelineFileData.TimelineFileName; pCommonDM.PluginSettingsData.LastLoadTimelineFullPath = pCommonDM.SelectedTimelineFileData.TimelineFileFullPath; pCommonDM.ViewRefresh(); pCommonDM.AppStatusData.TimelineLoadStatus = TimelineLoadStatus.Success; this.TimelineFunctionEnabledChange(pCommonDM); }
/// <summary> タイムラインデータのクリアを実行し、ステータスを変更します。 /// </summary> /// <param name="pCommonDM"></param> /// <param name="pTimelineDM"></param> public void TimelineDataClear(CommonDataModel pCommonDM, TimelineObjectModel pTimelineOM) { pTimelineOM.TimerData.Clear(); pTimelineOM.Clear(); pCommonDM.AppStatusData.TimelineLoadStatus = TimelineLoadStatus.NonLoad; this.TimelineFunctionEnabledChange(pCommonDM); pCommonDM.ViewRefresh(); return; }
/// <summary> タイマーをリブートします。 /// </summary> public void TimerReboot(CommonDataModel pCommonDM, TimelineObjectModel pTimelineOM) { switch (pCommonDM.AppStatusData.CurrentCombatTimerStatus) { case TimerStatus.Init: case TimerStatus.Stop: case TimerStatus.Pause: case TimerStatus.Run: break; } this.TimerStop(pCommonDM, pTimelineOM); this.TimerStart(pCommonDM, pTimelineOM); }
/// <summary> タイマーを0に巻き戻し、ステータスがRunの場合は再スタートさせます。 /// </summary> public void TimerRewind(CommonDataModel pCommonDM, TimelineObjectModel pTimelineOM) { switch (pCommonDM.AppStatusData.CurrentCombatTimerStatus) { case TimerStatus.Init: case TimerStatus.Stop: case TimerStatus.Pause: case TimerStatus.Run: break; } var status = pCommonDM.AppStatusData.CurrentCombatTimerStatus; this.TimerStop(pCommonDM, pTimelineOM); if (status == TimerStatus.Run) { this.TimerStart(pCommonDM, pTimelineOM); } }
/// <summary> タイマー処理を停止します。 /// </summary> public void TimerStop(CommonDataModel pCommonDM, TimelineObjectModel pTimelineOM) { switch (pCommonDM.AppStatusData.CurrentCombatTimerStatus) { case TimerStatus.Init: case TimerStatus.Stop: case TimerStatus.Pause: case TimerStatus.Run: break; } pCommonDM.AppStatusData.CurrentCombatTimerStatus = TimerStatus.Stop; this.TimerFunctionEnabledChange(pCommonDM); this.CurrentCombatTimer.Stop(); this.CurrentCombatRelativeClock.CurrentTime = 0; pTimelineOM.TimerData.CurrentCombatTime = pTimelineOM.TimerData.CurrentCombatStartTime; foreach (var item in pTimelineOM.ActivityCollection) { item.ViewRefresh(); } }
static public void LoadFromFile(TimelineObjectModel pTimelineOM, string path) { string text = File.ReadAllText(path, System.Text.Encoding.UTF8); LoadFromText(pTimelineOM, Path.GetFileName(path), text); }