コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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;
        }
コード例 #3
0
        /// <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));
            }
        }
コード例 #4
0
        public void Stop()
        {
            timer.Stop();
            timeline = null;

            ActGlobals.oFormActMain.OnLogLineRead -= act_OnLogLineRead;
        }
コード例 #5
0
        /*--- 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);
        }
コード例 #6
0
        /// <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;
        }
コード例 #7
0
        /// <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);
        }
コード例 #8
0
        /// <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);
            }
        }
コード例 #9
0
        /// <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();
            }
        }
コード例 #10
0
        static public void LoadFromFile(TimelineObjectModel pTimelineOM, string path)
        {
            string text = File.ReadAllText(path, System.Text.Encoding.UTF8);

            LoadFromText(pTimelineOM, Path.GetFileName(path), text);
        }