Example #1
0
        /// <summary>
        /// Print the object's XML to the XmlWriter.
        /// </summary>
        /// <param name="objWriter">XmlTextWriter to write with.</param>
        /// <param name="objCulture">Culture in which to print.</param>
        /// <param name="strLanguageToPrint">Language in which to print</param>
        public void Print(XmlTextWriter objWriter, CultureInfo objCulture, string strLanguageToPrint)
        {
            if (!AllowPrint)
            {
                return;
            }
            objWriter.WriteStartElement("quality");
            objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint));
            objWriter.WriteElementString("fullname", DisplayName(strLanguageToPrint));
            objWriter.WriteElementString("formattedname", FormattedDisplayName(objCulture, strLanguageToPrint));
            objWriter.WriteElementString("extra", LanguageManager.TranslateExtra(Extra, strLanguageToPrint));
            objWriter.WriteElementString("lp", LP.ToString(objCulture));
            objWriter.WriteElementString("cost", Cost.ToString(_objCharacter.Options.NuyenFormat, objCulture));
            string strLifestyleQualityType = Type.ToString();

            if (strLanguageToPrint != GlobalOptions.DefaultLanguage)
            {
                XmlNode objNode = XmlManager.Load("lifestyles.xml", strLanguageToPrint).SelectSingleNode("/chummer/categories/category[. = \"" + strLifestyleQualityType + "\"]");
                strLifestyleQualityType = objNode?.Attributes?["translate"]?.InnerText ?? strLifestyleQualityType;
            }
            objWriter.WriteElementString("lifestylequalitytype", strLifestyleQualityType);
            objWriter.WriteElementString("lifestylequalitytype_english", Type.ToString());
            objWriter.WriteElementString("lifestylequalitysource", OriginSource.ToString());
            objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(Source, strLanguageToPrint));
            objWriter.WriteElementString("page", Page(strLanguageToPrint));
            if (_objCharacter.Options.PrintNotes)
            {
                objWriter.WriteElementString("notes", Notes);
            }
            objWriter.WriteEndElement();
        }
Example #2
0
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            Microsoft.Win32.OpenFileDialog d = new Microsoft.Win32.OpenFileDialog
            {
                Filter = "Bitmap Image Files (*.bmp)|*.bmp"
            };
            if ((bool)d.ShowDialog())
            {
                System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(d.FileName);
                if (bmp.PixelFormat != System.Drawing.Imaging.PixelFormat.Format8bppIndexed)
                {
                }
                else
                {
                    m_CurrentBitmap = bmp;
                    var data = bmp.LockBits(new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat);

                    OriginSource = BitmapSource.Create(data.Width, data.Height, bmp.HorizontalResolution, bmp.VerticalResolution, PixelFormats.Gray8, null, data.Scan0, data.Stride * data.Height, data.Stride);
                    OriginSource.Freeze();
                    bmp.UnlockBits(data);
                }

                uc.Visibility = Visibility.Visible;
            }
        }
Example #3
0
        //---------------アクション情報取得系-------------------

        //ハンドルから入力元デバイスの情報を取得する
        //また入力ソースハンドルを逆引きしてpathにまで戻す。
        public OriginSource GetOriginSourceFromInternalHandle(ulong Handle)
        {
            ReadyCheck(); //実行可能な状態かチェック

            EVRInputError inputError = EVRInputError.None;

            //デバイス情報を取得
            InputOriginInfo_t originInfo = new InputOriginInfo_t();
            var size = (uint)System.Runtime.InteropServices.Marshal.SizeOf(typeof(InputOriginInfo_t));

            inputError = vrinput.GetOriginTrackedDeviceInfo(Handle, ref originInfo, size);
            if (inputError != EVRInputError.None)
            {
                return(null); //情報なし
            }

            //デバイス情報を作成
            OriginSource origin = new OriginSource(originInfo, Handle);

            //デバイスハンドルから探索して見つかれば格納
            foreach (KeyValuePair <string, ulong> p in InputSourceHandles)
            {
                if (p.Value == originInfo.devicePath)
                {
                    origin.DevicePath = p.Key;
                }
            }

            return(origin);
        }
Example #4
0
        /// <summary>
        ///     Print the object's XML to the XmlWriter.
        /// </summary>
        /// <param name="objWriter">XmlTextWriter to write with.</param>
        /// <param name="objCulture">Culture in which to print.</param>
        /// <param name="strLanguageToPrint">Language in which to print</param>
        public void Print(XmlTextWriter objWriter, CultureInfo objCulture, string strLanguageToPrint)
        {
            if (!AllowPrint || objWriter == null)
            {
                return;
            }
            objWriter.WriteStartElement("quality");
            objWriter.WriteElementString("guid", InternalId);
            objWriter.WriteElementString("sourceid", SourceIDString);
            objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint));
            objWriter.WriteElementString("fullname", DisplayName(strLanguageToPrint));
            objWriter.WriteElementString("formattedname", FormattedDisplayName(objCulture, strLanguageToPrint));
            objWriter.WriteElementString("extra", _objCharacter.TranslateExtra(Extra, strLanguageToPrint));
            objWriter.WriteElementString("lp", LP.ToString(objCulture));
            objWriter.WriteElementString("cost", Cost.ToString(_objCharacter.Options.NuyenFormat, objCulture));
            var strLifestyleQualityType = Type.ToString();

            if (strLanguageToPrint != GlobalOptions.DefaultLanguage)
            {
                XPathNavigator objNode = _objCharacter.LoadDataXPath("lifestyles.xml", strLanguageToPrint)
                                         .SelectSingleNode("/chummer/categories/category[. = " + strLifestyleQualityType.CleanXPath() + "]");
                strLifestyleQualityType = objNode?.SelectSingleNode("@translate")?.Value ?? strLifestyleQualityType;
            }

            objWriter.WriteElementString("lifestylequalitytype", strLifestyleQualityType);
            objWriter.WriteElementString("lifestylequalitytype_english", Type.ToString());
            objWriter.WriteElementString("lifestylequalitysource", OriginSource.ToString());
            objWriter.WriteElementString("source", _objCharacter.LanguageBookShort(Source, strLanguageToPrint));
            objWriter.WriteElementString("page", DisplayPage(strLanguageToPrint));
            if (GlobalOptions.PrintNotes)
            {
                objWriter.WriteElementString("notes", Notes);
            }
            objWriter.WriteEndElement();
        }
Example #5
0
 // 이미지 불러오는 콜백
 private void LoadImageBtn_Click(object sender, RoutedEventArgs e)
 {
     Microsoft.Win32.OpenFileDialog d = new Microsoft.Win32.OpenFileDialog
     {
         Filter = "Bitmap Image Files (*.bmp)|*.bmp"
     };
     if ((bool)d.ShowDialog())
     {
         System.Drawing.Bitmap bmp = new System.Drawing.Bitmap(d.FileName);
         if (bmp.PixelFormat != System.Drawing.Imaging.PixelFormat.Format8bppIndexed)
         {
             MessageBox.Show("It support only Format8bppIndexed.");
         }
         else
         {
             //현재 이미지에 넣고,
             m_CurrentBitmap = bmp;
             var data = bmp.LockBits(new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height), System.Drawing.Imaging.ImageLockMode.ReadOnly, bmp.PixelFormat);
             //화면에 출력
             OriginSource = BitmapSource.Create(data.Width, data.Height, bmp.HorizontalResolution, bmp.VerticalResolution, PixelFormats.Gray8, null, data.Scan0, data.Stride * data.Height, data.Stride);
             OriginSource.Freeze();
             bmp.UnlockBits(data);
             //기존 입력이미지는 비우고
             if (m_Tool.InputImage != null)
             {
                 m_Tool.InputImage.Dispose();
             }
             //현재 이미지를 입력이미지로
             m_Tool.InputImage = m_CurrentBitmap;
         }
     }
     //메세지 업데이트
     this.RaisePropertyChanged(nameof(Overlay));
     this.RaisePropertyChanged(nameof(Message));
 }
Example #6
0
            public ActionTransform transform = null;  //姿勢

            public PoseAction(InputPoseActionData_t Data, OriginSource OriginInfo)
            {
                Available = Data.bActive;
                Origin    = OriginInfo;

                TrackedDevicePose_t Pose = Data.pose;

                SteamVR_Utils.RigidTransform trans = new SteamVR_Utils.RigidTransform(Pose.mDeviceToAbsoluteTracking);
                transform = new ActionTransform();

                if (OriginInfo != null)
                {
                    transform.deviceid = OriginInfo.DeviceIndex;
                }
                else
                {
                    transform.deviceid = InvalidDeviceIndex;
                }

                //右手系・左手系の変換をした
                transform.velocity[0]        = Pose.vVelocity.v0;
                transform.velocity[1]        = Pose.vVelocity.v1;
                transform.velocity[2]        = -Pose.vVelocity.v2;
                transform.angularVelocity[0] = -Pose.vAngularVelocity.v0;
                transform.angularVelocity[1] = -Pose.vAngularVelocity.v1;
                transform.angularVelocity[2] = Pose.vAngularVelocity.v2;

                transform.position = trans.pos;
                transform.rotation = trans.rot;
            }
 private bool PindahkanValidate(object obj)
 {
     if (OriginSource.Where(O => O.Selected).Count() > 0)
     {
         return(true);
     }
     return(false);
 }
Example #8
0
            public float UpdateTime    = float.NaN; //変化時間

            public DigitalAction(InputDigitalActionData_t Data, OriginSource OriginInfo)
            {
                Available  = Data.bActive;
                Origin     = OriginInfo;
                State      = Data.bState;
                Changed    = Data.bChanged;
                UpdateTime = Data.fUpdateTime;
            }
        public async void RefreshAll()
        {
            await Task.Delay(200);

            DestinationView.Refresh();
            OriginView.Refresh();
            TotalDestination = DestinationSource.Sum(O => O.Pcs * O.Weight);
            TOtalOrigin      = OriginSource.Sum(O => O.Pcs * O.Weight);
        }
        private async void LoadData(SMU SMUSelected)
        {
            var datas = await context.GetSMUDetail(SMUSelected.Id);

            foreach (var item in datas)
            {
                OriginSource.Add(item);
            }
            RefreshAll();
        }
        private void KembaliAction(object obj)
        {
            foreach (var item in DestinationSource.Where(O => O.Selected).ToList())
            {
                var newItem = item.GetClone();
                newItem.Selected = false;
                OriginSource.Add(newItem);
                DestinationSource.Remove(item);
            }

            RefreshAll();
        }
Example #12
0
            public float UpdateTime = float.NaN; //変化時間

            public AnalogAction(InputAnalogActionData_t Data, OriginSource OriginInfo)
            {
                Available = Data.bActive;
                Origin    = OriginInfo;

                x = Data.x;
                y = Data.y;
                z = Data.z;

                deltaX = Data.deltaX;
                deltaY = Data.deltaY;
                deltaZ = Data.deltaZ;

                UpdateTime = Data.fUpdateTime;
            }
Example #13
0
        /// <summary>
        ///     Save the object's XML to the XmlWriter.
        /// </summary>
        /// <param name="objWriter">XmlTextWriter to write with.</param>
        public void Save(XmlTextWriter objWriter)
        {
            if (objWriter == null)
            {
                return;
            }
            objWriter.WriteStartElement("lifestylequality");
            objWriter.WriteElementString("sourceid", SourceIDString);
            objWriter.WriteElementString("guid", InternalId);
            objWriter.WriteElementString("name", _strName);
            objWriter.WriteElementString("category", _strCategory);
            objWriter.WriteElementString("extra", _strExtra);
            objWriter.WriteElementString("cost", _strCost);
            objWriter.WriteElementString("multiplier", _intMultiplier.ToString(GlobalOptions.InvariantCultureInfo));
            objWriter.WriteElementString("basemultiplier",
                                         _intBaseMultiplier.ToString(GlobalOptions.InvariantCultureInfo));
            objWriter.WriteElementString("lp", _intLP.ToString(GlobalOptions.InvariantCultureInfo));
            objWriter.WriteElementString("areamaximum", _intAreaMaximum.ToString(GlobalOptions.InvariantCultureInfo));
            objWriter.WriteElementString("comfortsmaximum", _intComfortMaximum.ToString(GlobalOptions.InvariantCultureInfo));
            objWriter.WriteElementString("securitymaximum", _intSecurityMaximum.ToString(GlobalOptions.InvariantCultureInfo));
            objWriter.WriteElementString("area", _intArea.ToString(GlobalOptions.InvariantCultureInfo));
            objWriter.WriteElementString("comforts", _intComfort.ToString(GlobalOptions.InvariantCultureInfo));
            objWriter.WriteElementString("security", _intSecurity.ToString(GlobalOptions.InvariantCultureInfo));
            objWriter.WriteElementString("contributetolimit", _blnContributeToLP.ToString(GlobalOptions.InvariantCultureInfo));
            objWriter.WriteElementString("print", _blnPrint.ToString(GlobalOptions.InvariantCultureInfo));
            objWriter.WriteElementString("lifestylequalitytype", Type.ToString());
            objWriter.WriteElementString("lifestylequalitysource", OriginSource.ToString());
            objWriter.WriteElementString("source", _strSource);
            objWriter.WriteElementString("page", _strPage);
            objWriter.WriteElementString("allowed", _lstAllowedFreeLifestyles?.Length > 0
                ? string.Join(",", _lstAllowedFreeLifestyles)
                : string.Empty);
            if (Bonus != null)
            {
                objWriter.WriteRaw("<bonus>" + Bonus.InnerXml + "</bonus>");
            }
            else
            {
                objWriter.WriteElementString("bonus", string.Empty);
            }
            objWriter.WriteElementString("notes", System.Text.RegularExpressions.Regex.Replace(_strNotes, @"[\u0000-\u0008\u000B\u000C\u000E-\u001F]", ""));
            objWriter.WriteEndElement();

            if (OriginSource != QualitySource.BuiltIn)
            {
                _objCharacter.SourceProcess(_strSource);
            }
        }
        private void PindahkanAction(object obj)
        {
            try
            {
                foreach (var item in OriginSource.Where(O => O.Selected).ToList())
                {
                    var newItem = item.GetClone();
                    newItem.Selected = false;
                    DestinationSource.Add(newItem);
                    OriginSource.Remove(item);
                }

                RefreshAll();
            }
            catch (Exception ex)
            {
                Helpers.ShowErrorMessage(ex.Message);
            }
        }
Example #15
0
        //originを渡すと、そのコントローラのローカライズされた名前が出る(ゲーム内説明用)
        public string GetLocalizedButtonNameFromOriginSource(OriginSource origin)
        {
            ReadyCheck(); //実行可能な状態かチェック

            EVRInputError inputError = EVRInputError.None;

            //取得処理
            StringBuilder s = new StringBuilder();

            s.Length = 8192;

            inputError = vrinput.GetOriginLocalizedName(origin.DeviceInternalHandle, s, 8192);
            if (inputError != EVRInputError.None)
            {
                //致命的エラー
                throw new IOException(inputError.ToString());
            }

            return(s.ToString());
        }
Example #16
0
        //ActionセットとActionを指定すると、それが取得できる元のパスのListを返す
        public List <OriginSource> GetActionOriginsList(string ActionSetPath, string ActionPath)
        {
            ReadyCheck(); //実行可能な状態かチェック

            EVRInputError inputError = EVRInputError.None;
            ulong         sethandle  = GetActionSetHandle(ActionSetPath); //無効なハンドルならthrowされる
            ulong         handle     = GetActionHandle(ActionPath);       //無効なハンドルならthrowされる

            //取得処理
            ulong[] origins = new ulong[1024];
            inputError = vrinput.GetActionOrigins(sethandle, handle, origins);
            if (inputError == EVRInputError.WrongType)
            {
                //姿勢ではない
                throw new ArgumentException(inputError.ToString());
            }
            if (inputError != EVRInputError.None)
            {
                //致命的エラー
                throw new IOException(inputError.ToString());
            }

            List <OriginSource> list = new List <OriginSource>();

            for (int i = 0; i < 1024; i++)
            {
                if (origins[i] == OpenVR.k_ulInvalidInputValueHandle)
                {
                    break;
                }
                OriginSource origin = GetOriginSourceFromInternalHandle(origins[i]);
                if (origin != null)
                {
                    list.Add(origin);
                }
            }

            return(list);
        }
Example #17
0
 /// <summary>
 /// Print the object's XML to the XmlWriter.
 /// </summary>
 /// <param name="objWriter">XmlTextWriter to write with.</param>
 /// <param name="intRating">Pre-calculated rating of the quality for printing.</param>
 /// <param name="objCulture">Culture in which to print.</param>
 /// <param name="strLanguageToPrint">Language in which to print</param>
 public void Print(XmlTextWriter objWriter, int intRating, CultureInfo objCulture, string strLanguageToPrint)
 {
     if (AllowPrint)
     {
         string strSpaceCharacter = LanguageManager.GetString("String_Space", strLanguageToPrint);
         string strRatingString   = string.Empty;
         if (intRating > 1)
         {
             strRatingString = strSpaceCharacter + intRating.ToString(objCulture);
         }
         string strSourceName = string.Empty;
         if (!string.IsNullOrWhiteSpace(SourceName))
         {
             strSourceName = strSpaceCharacter + '(' + GetSourceName(strLanguageToPrint) + ')';
         }
         objWriter.WriteStartElement("quality");
         objWriter.WriteElementString("name", DisplayNameShort(strLanguageToPrint));
         objWriter.WriteElementString("name_english", Name + strRatingString);
         objWriter.WriteElementString("extra", LanguageManager.TranslateExtra(Extra, strLanguageToPrint) + strRatingString + strSourceName);
         objWriter.WriteElementString("bp", BP.ToString(objCulture));
         string strQualityType = Type.ToString();
         if (strLanguageToPrint != GlobalOptions.DefaultLanguage)
         {
             strQualityType = XmlManager.Load("qualities.xml", strLanguageToPrint).SelectSingleNode("/chummer/categories/category[. = \"" + strQualityType + "\"]/@translate")?.InnerText ?? strQualityType;
         }
         objWriter.WriteElementString("qualitytype", strQualityType);
         objWriter.WriteElementString("qualitytype_english", Type.ToString());
         objWriter.WriteElementString("qualitysource", OriginSource.ToString());
         objWriter.WriteElementString("source", CommonFunctions.LanguageBookShort(Source, strLanguageToPrint));
         objWriter.WriteElementString("page", DisplayPage(strLanguageToPrint));
         if (_objCharacter.Options.PrintNotes)
         {
             objWriter.WriteElementString("notes", Notes);
         }
         objWriter.WriteEndElement();
     }
 }
Example #18
0
        //Sync the chapter list to the origin source.
        public bool SyncToOrigin()
        {
            SetUpdateProgress(0, 0, UpdateStates.Syncing);
            if (OriginSource == null)
            {
                return(false);
            }
            ChapterSource[] menuItems = OriginSource.GetMenuURLs();
            if (!File.Exists(GetNovelCoverImageLocation()))
            {
                OriginSource.DownloadNovelCoverImage(GetNovelCoverImageLocation());
            }
            if (menuItems == null)
            {
                SetUpdateProgress(0, 0, UpdateStates.Error);
                return(false);
            }
            List <Chapter> chapterListing = new List <Chapter>();
            int            updateCount    = 0;

            for (int i = 0; i < menuItems.Length; i++)
            {
                try
                {
                    //add new chapter if url does not exist in database
                    if (!OriginSource.ChapterUrls.Where(originUrl => originUrl.Hash == menuItems[i].UrlHash).Any())
                    {
                        Chapter newChapter = new Chapter();
                        newChapter.ChapterTitle = menuItems[i].Title;
                        newChapter.NovelTitle   = NovelTitle;
                        newChapter.Read         = false;
                        newChapter.Index        = i;
                        newChapter.Novel        = this;
                        newChapter.Valid        = true;
                        newChapter.HashID       = menuItems[i].UrlHash.ToString("X");
                        NovelLibrary.libraryData.Chapters.InsertOnSubmit(newChapter);
                        NovelLibrary.libraryData.SubmitChanges();
                        //chapterList.Insert(i, newChapter);
                        chapterListing.Add(newChapter);
                        isDirty = true;
                        updateCount++;

                        ChapterUrl newChapterUrl = new ChapterUrl();
                        newChapterUrl.ChapterID = newChapter.ID;
                        newChapterUrl.Url       = menuItems[i].Url;
                        newChapterUrl.Hash      = menuItems[i].UrlHash;
                        newChapterUrl.Vip       = menuItems[i].Vip;
                        newChapterUrl.SourceID  = OriginSource.ID;
                        newChapterUrl.Source    = OriginSource;
                        newChapterUrl.Chapter   = newChapter;
                        NovelLibrary.libraryData.ChapterUrls.InsertOnSubmit(newChapterUrl);
                        NovelLibrary.libraryData.SubmitChanges();
                    }
                    //chapter already exist within database.
                    else
                    {
                        Chapter c = (from chapterUrl in OriginSource.ChapterUrls
                                     where chapterUrl.Url == menuItems[i].Url
                                     select chapterUrl.Chapter).First <Chapter>();
                        if (c.ChapterTitle != menuItems[i].Title)
                        {
                            c.ChapterTitle = menuItems[i].Title;
                        }
                        if (c.Index != i)
                        {
                            c.Index = i;
                        }
                        chapterListing.Add(c);
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    return(false);
                }
            }
            chapterList.SyncBindingToConstrain();
            //Remove chapter that no longer belong in the list.
            HashSet <int> includedID = new HashSet <int>(chapterListing.Select(c => c.ID));

            Chapter[] allChapters = Chapters.ToArray();
            for (int i = 0; i < allChapters.Count(); i++)
            {
                if (!includedID.Contains(allChapters[i].ID))
                {
                    Console.WriteLine("Deleting " + allChapters[i].ChapterTitle + " " + allChapters[i].ID);
                    DeleteChapter(allChapters[i], false, false);
                }
            }
            RefreshCacheData();
            if (updateCount == 0)
            {
                SetUpdateProgress(0, 0, UpdateStates.UpToDate);
            }
            else
            {
                SetUpdateProgress(updateCount, 0, UpdateStates.UpdateAvailable);
            }
            return(true);
        }