Esempio n. 1
0
        protected AssignmentAI(ILivingObject worker, byte aiID)
        {
            m_id = aiID;

            this.Worker = worker;
            trace = new MyTraceSource("Dwarrowdelf.AssignmentAI", String.Format("AI {0}", this.Worker));
        }
Esempio n. 2
0
        /// <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();
            }
        }
Esempio n. 3
0
        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
        }
Esempio n. 4
0
        /// <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
            }
        }
Esempio n. 5
0
        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));
        }
Esempio n. 6
0
        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");
        }
Esempio n. 7
0
        /// <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);
        }
Esempio n. 8
0
        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));
        }
Esempio n. 9
0
        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
        }
Esempio n. 10
0
        /// <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
                }
            }
        }
Esempio n. 11
0
 void OnPostDeserialization()
 {
     trace = new MyTraceSource("Dwarrowdelf.AssignmentAI", String.Format("AI {0}", this.Worker));
 }