protected AssignmentAI(ILivingObject worker, byte aiID) { m_id = aiID; this.Worker = worker; trace = new MyTraceSource("Dwarrowdelf.AssignmentAI", String.Format("AI {0}", this.Worker)); }
/// <summary> /// サウンドの再生 /// </summary> public void PlayWaveSound(string filePath, int volume) { if (IsPlaying) { return; } IsPlaying = true; try { waveOut_ = new WaveOutEvent(); waveChannel_ = new WaveChannel32(new WaveFileReader(filePath)); waveChannel_.Volume = volume / 100.0f; waveChannel_.PadWithZeroes = false; waveOut_.Init(waveChannel_); waveOut_.PlaybackStopped += OnPlaybackStopped; waveOut_.Play(); } catch (Exception ex) { MyTraceSource.TraceEvent(TraceEventType.Error, ex); ClearAll(); } }
public virtual void Save() { #if DEBUG MyTraceSource.TraceEvent(TraceEventType.Information, new StringBuilder(40).Append("[").Append(FileName).Append("] ファイル保存開始").ToString()); #endif List <string> list; lock (lockobject_) list = favoriteStreamClassList_.Select(x => x.Owner).ToList(); while (true) { try { MySerializer.Serialize <List <string> >(list, FilePath); IsChanged = false; } catch (DirectoryNotFoundException) { #if DEBUG MyTraceSource.TraceEvent(TraceEventType.Error, new StringBuilder(40).Append("[").Append(FileName).Append("] Favoriteフォルダが見つかりません").ToString()); #endif Directory.CreateDirectory("favorite"); continue; } catch (Exception ex) { MyTraceSource.TraceEvent(TraceEventType.Error, ex); } break; } #if DEBUG MyTraceSource.TraceEvent(TraceEventType.Information, new StringBuilder(40).Append("[").Append(FileName).Append("] ファイル保存完了").ToString()); #endif }
/// <summary> /// 一覧データの更新 /// </summary> public virtual async Task <bool> RefreshLiveAsync() { if (IsRequest) { MyTraceSource.TraceEvent(TraceEventType.Error, new StringBuilder(40).Append("[").Append(Name).Append("] RefreshLiveが重複").ToString()); return(false); } IsRequest = true; #if DEBUG MyTraceSource.TraceEvent(TraceEventType.Information, new StringBuilder(40).Append("[").Append(Name).Append("] Httpリクエスト開始").ToString()); #endif try { List <StreamClass> list = await DownloadLiveAsync(); list = list.OrderByDescending(x => x.Listener).ToList(); lock (lockobject_) liveStreamClassList_ = list; return(true); } catch (Exception ex) { MyTraceSource.TraceEvent(TraceEventType.Error, ex); return(false); } finally { IsRequest = false; #if DEBUG MyTraceSource.TraceEvent(TraceEventType.Information, new StringBuilder(40).Append("[").Append(Name).Append("] Httpリクエスト完了").ToString()); #endif } }
protected override void Initialize(World world) { base.Initialize(world); world.AddLiving(this); world.TickEnding += OnTickEnding; world.TickStarted += OnTickStarted; this.Trace = new MyTraceSource("Server.LivingObject", String.Format("{0} ({1})", this.Name ?? this.LivingInfo.Name, this.ObjectID)); }
public LivingObject(World world, ObjectID objectID) : base(world, objectID) { this.IsLiving = true; // XXX Create only for dwarves m_enabledLabors = new BitArray(EnumHelpers.GetEnumMax <LaborID>() + 1); m_enabledLabors.SetAll(true); m_armorSlots = new ObservableCollection <Tuple <ArmorSlot, ItemObject> >(); this.ArmorSlots = new ReadOnlyObservableCollection <Tuple <ArmorSlot, ItemObject> >(m_armorSlots); this.Trace = new MyTraceSource("Client.LivingObject"); }
/// <summary> /// 配信一覧とお気に入り一覧を比較してお気に入り一覧を変更する /// </summary> /// <returns>新しく開始した配信のリスト</returns> public virtual List <StreamClass> CheckFavorite() { List <StreamClass> result = new List <StreamClass>(); #if DEBUG MyTraceSource.TraceEvent(TraceEventType.Information, new StringBuilder(40).Append("[").Append(Name).Append("] お気に入りチェック開始").ToString()); #endif lock (lockobject_) { if (liveStreamClassList_.Count > 0 && favoriteStreamClassList_.Count > 0) { //現在の登録チャンネルリストを取得 List <StreamClass> streamList = new List <StreamClass>(favoriteStreamClassList_); var statusList = streamList.Select(x => x.StreamStatus).ToList(); //配信情報を初期化 streamList = streamList.Select(x => new StreamClass(x.Owner)).ToList(); foreach (StreamClass st in GetLiveStreamClassList()) { //一致する配信者名があった場合indexを取得 int idx = streamList.FindIndex(item => item.Owner == st.Owner); if (idx >= 0) { //配信情報を上書き streamList[idx] = st; //新しく開始した配信なら通知スタックに追加 if (!statusList[idx]) { result.Add(st); statusList[idx] = true; } } } favoriteStreamClassList_ = streamList; } } #if DEBUG MyTraceSource.TraceEvent(TraceEventType.Information, new StringBuilder(40).Append("[").Append(Name).Append("] お気に入りチェック完了").ToString()); #endif //追加の通知スタックを返す return(result); }
LivingObject(SaveGameContext ctx) : base(ctx, ObjectType.Living) { this.World.TickEnding += OnTickEnding; this.World.TickStarted += OnTickStarted; var aai = m_ai as Dwarrowdelf.AI.AssignmentAI; if (aai != null) { aai.AssignmentChanged += OnAIAssignmentChanged; } // XXX inventory items are not present yet? RecalcArmorClass(); this.Trace = new MyTraceSource("Server.LivingObject", String.Format("{0} ({1})", this.Name ?? this.LivingInfo.Name, this.ObjectID)); }
public virtual void Load() { #if DEBUG MyTraceSource.TraceEvent(TraceEventType.Information, new StringBuilder(40).Append("[").Append(FileName).Append("] ファイル読み込み開始").ToString()); #endif try { List <string> list = MySerializer.Deserialize <List <string> >(FilePath); lock (lockobject_) favoriteStreamClassList_ = list.Select(x => new StreamClass(x)).ToList(); } catch (DirectoryNotFoundException) { #if DEBUG MyTraceSource.TraceEvent(TraceEventType.Error, new StringBuilder(40).Append("[").Append(FileName).Append("] Favoriteフォルダが見つかりません").ToString()); #endif Directory.CreateDirectory("favorite"); InitStreamClassList(); } catch (FileNotFoundException) { #if DEBUG MyTraceSource.TraceEvent(TraceEventType.Error, new StringBuilder(40).Append("[").Append(FileName).Append("] ファイルが見つかりません").ToString()); #endif InitStreamClassList(); } catch (Exception ex) { MyTraceSource.TraceEvent(TraceEventType.Error, ex); InitStreamClassList(); } if (favoriteStreamClassList_ == null) { InitStreamClassList(); } #if DEBUG MyTraceSource.TraceEvent(TraceEventType.Information, new StringBuilder(40).Append("[").Append(FileName).Append("] ファイル読み込み完了").ToString()); #endif }
/// <summary> /// スタートアップフォルダにショートカットを追加 /// https://www.osadasoft.com/c-%E3%82%B9%E3%82%BF%E3%83%BC%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E3%83%A1%E3%83%8B%E3%83%A5%E3%83%BC%E3%81%AB%E3%82%B7%E3%83%A7%E3%83%BC%E3%83%88%E3%82%AB%E3%83%83%E3%83%88%E3%82%92%E7%99%BB/ /// </summary> private void AddStartup(bool isEnable) { var startupPath = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Startup); var shortcutPath = startupPath + "\\" + ShortcutName; if (isEnable) { #if DEBUG MyTraceSource.TraceEvent(TraceEventType.Information, new StringBuilder(40).Append("[SettingWindow] ショートカットの作成を開始").ToString()); #endif var appPath = System.Reflection.Assembly.GetExecutingAssembly().Location; // 参考URL // https://stackoverflow.com/questions/234231/creating-application-shortcut-in-a-directory Type t = Type.GetTypeFromCLSID(new Guid("72C24DD5-D70A-438B-8A42-98424B88AFB8")); //Windows Script Host Shell Object dynamic shell = Activator.CreateInstance(t); try { var lnk = shell.CreateShortcut(shortcutPath); try { lnk.TargetPath = appPath; lnk.IconLocation = appPath + ", 0"; lnk.Save(); } finally { Marshal.FinalReleaseComObject(lnk); } } finally { Marshal.FinalReleaseComObject(shell); } #if DEBUG if (File.Exists(shortcutPath)) { MyTraceSource.TraceEvent(TraceEventType.Information, new StringBuilder(40).Append("[SettingWindow] ショートカット作成成功").ToString()); } else { MyTraceSource.TraceEvent(TraceEventType.Information, new StringBuilder(40).Append("[SettingWindow] ショートカット作成失敗").ToString()); } #endif } else { #if DEBUG MyTraceSource.TraceEvent(TraceEventType.Information, new StringBuilder(40).Append("[SettingWindow] ショートカットの削除を開始").ToString()); #endif if (File.Exists(shortcutPath)) { try { File.Delete(shortcutPath); } catch (IOException ex) { MyTraceSource.TraceEvent(TraceEventType.Error, ex); } #if DEBUG if (File.Exists(shortcutPath)) { MyTraceSource.TraceEvent(TraceEventType.Information, new StringBuilder(40).Append("[SettingWindow] ショートカット削除失敗").ToString()); } else { MyTraceSource.TraceEvent(TraceEventType.Information, new StringBuilder(40).Append("[SettingWindow] ショートカット削除成功").ToString()); } #endif } else { #if DEBUG MyTraceSource.TraceEvent(TraceEventType.Information, new StringBuilder(40).Append("[SettingWindow] ショートカットが既に存在しない").ToString()); #endif } } }
void OnPostDeserialization() { trace = new MyTraceSource("Dwarrowdelf.AssignmentAI", String.Format("AI {0}", this.Worker)); }