public static string GetSpriteFromJob(MultiGrfReader grf, Job job, PreviewHelper helper, string sprite, ViewIdTypes type) { switch (type) { case ViewIdTypes.Garment: return(GetSpritePathFromJob(grf, job, @"data\sprite\·Îºê\" + sprite + @"\" + helper.GenderString + "\\{0}_" + helper.GenderString, helper.Gender, null, sprite)); case ViewIdTypes.Shield: return(GetSpritePathFromJob(grf, job, @"data\sprite\¹æÆÐ\{0}\{0}_" + helper.GenderString + sprite, helper.Gender, "¹æÆÐ", sprite)); case ViewIdTypes.Weapon: return(GetSpritePathFromJob(grf, job, @"data\sprite\Àΰ£Á·\{0}\{0}_" + helper.GenderString + sprite, helper.Gender, "Àΰ£Á·", sprite)); case ViewIdTypes.Headgear: return(EncodingService.FromAnyToDisplayEncoding(@"data\sprite\¾Ç¼¼»ç¸®\" + helper.GenderString + "\\" + EncodingService.FromAnyToDisplayEncoding(helper.GenderString + "_") + helper.PreviewSprite)); case ViewIdTypes.Npc: if (helper.PreviewSprite != null && helper.PreviewSprite.EndsWith(".gr2", StringComparison.OrdinalIgnoreCase)) { return(EncodingService.FromAnyToDisplayEncoding(@"data\model\3dmob\" + helper.PreviewSprite)); } return(EncodingService.FromAnyToDisplayEncoding(@"data\sprite\npc\" + helper.PreviewSprite)); } return(null); }
public AccEditDialog(SdeDatabase gdb) : base("View IDs editor", "treeList.png", SizeToContent.WidthAndHeight, ResizeMode.NoResize) { _gdb = gdb; _multiGrf = gdb.MetaGrf; InitializeComponent(); WindowStartupLocation = WindowStartupLocation.CenterOwner; Owner = WpfUtilities.TopWindow; _async = new AsyncOperation(_progressBar); _obItems = new ObservableCollection <AccessoryItemView>(new List <AccessoryItemView>()); _dataGrid.ItemsSource = _obItems; _dataGrid.CanUserAddRows = true; _dataGrid.CanUserDeleteRows = true; _dataGrid.IsReadOnly = false; _dataGrid.CanUserReorderColumns = false; _dataGrid.CanUserResizeColumns = false; _dataGrid.CanUserSortColumns = true; _dataGrid.SelectionMode = Microsoft.Windows.Controls.DataGridSelectionMode.Extended; _dataGrid.SelectionUnit = Microsoft.Windows.Controls.DataGridSelectionUnit.CellOrRowHeader; _dataGrid.CanUserResizeRows = false; _dataGrid.KeyDown += new KeyEventHandler(_dataGrid_KeyDown); _loadData(); }
public TextViewItem(ListView listView, GetSetSetting setting, MultiGrfReader metaGrf) { _setting = setting; _metaGrf = metaGrf; ListView = listView; InitializeComponent(); _tblockDescription.PreviewMouseMove += (e, a) => OnMouseOver(e); _tbText.TextChanged += _tbText_TextChanged; _toolTip = new ToolTip(); _tRectangleOverlay.ToolTip = _toolTip; MouseEnter += new MouseEventHandler(_tkTreeViewItem_MouseEnter); MouseLeave += new MouseEventHandler(_tkTreeViewItem_MouseLeave); try { DefaultValue = ProjectConfiguration.ConfigAsker.RetrieveSetting(() => setting.Value).Default; } catch { DefaultValue = setting.Value; } _tbText.SavePathUniqueName = "Server database editor - TVI - " + DefaultValue; _tbText.Text = setting.Value; PreviewDragEnter += _dragOver; PreviewDragOver += _dragOver; PreviewDragLeave += _dragLeave; PreviewDrop += (e, a) => { _tbText.OnMainGridDrop(e, a); a.Handled = true; }; }
public void Read(ReadableTuple <int> tuple, GDbTab tab) { PreviewSprite = null; KeepPreviousPreviewPosition = true; RemoveJobs(); RemoveError(); List <Job> jobs; _lastTuple = tuple; _metaGrf = tab.ProjectDatabase.MetaGrf; _currentTab = tab; foreach (var preview in _previews) { if (preview.CanRead(tuple)) { if (_lastMatch != preview) { KeepPreviousPreviewPosition = false; } _lastMatch = preview; string job = tuple.GetValue <string>(ServerItemAttributes.ApplicableJob); jobs = JobList.GetJobsFromHex("0x" + ((job == "") ? "FFFFFFFF" : job), tuple.GetIntNoThrow(ServerItemAttributes.Upper)); preview.Read(tuple, this, jobs); break; } } if (_listView.Items.Count > 0) { _listView.SelectedItem = PreferredJob; if (_listView.SelectedItem == null) { if (_oldJob != null) { _listView.SelectedItem = _oldJob; } if (_listView.SelectedItem == null) { _listView.SelectedIndex = 0; } } } else { _updatePreview(SpriteDefault); } if (!KeepPreviousPreviewPosition) { _selector.SetAction(_lastMatch.SuggestedAction); } }
public MultiGrfExplorer(MultiGrfReader metaGrf, string explorerPath, string filter, string selected) : base("Meta GRF explorer", "cde.ico", SizeToContent.Manual, ResizeMode.CanResize) { InitializeComponent(); ShowInTaskbar = true; _explorerPath = explorerPath.ToLower(); _metaGrf = metaGrf; //metaGrf.Lock(); if (filter != "") { _entries.AddRange(metaGrf.FilesInDirectory(_explorerPath).Select(metaGrf.GetEntry).Where(p => p.RelativePath.IndexOf(filter, StringComparison.OrdinalIgnoreCase) > -1)); } else { _entries.AddRange(metaGrf.FilesInDirectory(_explorerPath).Select(metaGrf.GetEntry)); } _entriesAll.AddRange(_entries); foreach (FileEntry entry in _entries) { entry.DataImage = entry.DisplayRelativePath; } _loadEncoding(); ListViewDataTemplateHelper.GenerateListViewTemplateNew(_items, new ListViewDataTemplateHelper.GeneralColumnInfo[] { new ListViewDataTemplateHelper.RangeColumnInfo { Header = "File name", DisplayExpression = "DataImage", ToolTipBinding = "RelativePath", IsFill = true, MinWidth = 60, TextWrapping = TextWrapping.Wrap }, new ListViewDataTemplateHelper.GeneralColumnInfo { Header = "Type", DisplayExpression = "FileType", FixedWidth = 40, TextAlignment = TextAlignment.Right, ToolTipBinding = "FileType" }, new ListViewDataTemplateHelper.GeneralColumnInfo { Header = "Size", DisplayExpression = "DisplaySize", FixedWidth = 60, TextAlignment = TextAlignment.Right, ToolTipBinding = "DisplaySize" }, }, new MetaGrfSorter(), new string[] { }); _items.MouseDoubleClick += new MouseButtonEventHandler(_items_MouseDoubleClick); _items.ItemsSource = _entries; VirtualFileDataObject.SetDraggable(_imagePreview, _wrapper); ApplicationShortcut.Link(ApplicationShortcut.Copy, _copyItems, _items); ApplicationShortcut.Link(ApplicationShortcut.Confirm, () => _buttonSelect_Click(null, null), _items); this.Loaded += delegate { _items.SelectedItem = _entries.FirstOrDefault(p => String.CompareOrdinal(p.DisplayRelativePath, selected.ToDisplayEncoding(true) + ".bmp") == 0); _items.ScrollToCenterOfView(_items.SelectedItem); }; this.Owner = WpfUtilities.TopWindow; }
public void BackupClient(string file, MultiGrfReader mGrf) { if (!SdeAppConfiguration.BackupsManagerState || !IsStarted || _backupThread.IsCrashed) { return; } if (file == null) { throw new ArgumentNullException("file"); } BackupClient(file, mGrf.GetData(file)); }
public LuaTableDialog(SdeDatabase database) : base("Lua settings", "settings.png", SizeToContent.Height, ResizeMode.NoResize) { _multiGrf = database.MetaGrf; InitializeComponent(); Binder.Bind(_cbMobTables, () => ProjectConfiguration.SyncMobTables, _updateMobTables, true); Binder.Bind(_cbAccTables, () => ProjectConfiguration.HandleViewIds, _updateccTables, true); WpfUtils.AddMouseInOutEffectsBox(_cbMobTables, _cbAccTables); _database = database; _oldPath1 = ProjectConfiguration.SyncMobId; _oldPath2 = ProjectConfiguration.SyncMobName; _spMob.Children.Add(new TextViewItem(null, new GetSetSetting(v => ProjectConfiguration.SyncMobId = v, () => ProjectConfiguration.SyncMobId), _multiGrf) { Description = "npcidentity.lub" }); _spMob.Children.Add(new TextViewItem(null, new GetSetSetting(v => ProjectConfiguration.SyncMobName = v, () => ProjectConfiguration.SyncMobName), _multiGrf) { Description = "jobname.lub" }); _spAcc.Children.Add(new TextViewItem(null, new GetSetSetting(v => ProjectConfiguration.SyncAccId = v, () => ProjectConfiguration.SyncAccId), _multiGrf) { Description = "accessoryid.lub" }); _spAcc.Children.Add(new TextViewItem(null, new GetSetSetting(v => ProjectConfiguration.SyncAccName = v, () => ProjectConfiguration.SyncAccName), _multiGrf) { Description = "accname.lub" }); _spMob.SizeChanged += _grid_SizeChanged; _spAcc.SizeChanged += _grid_SizeChanged; Extensions.SetMinimalSize(this); this.Owner = WpfUtilities.TopWindow; }
public static string GetSpritePathFromJob(MultiGrfReader grf, Job job, string spriteFormat, GenderType gender, string folder, string sprite, int level = 0) { if (sprite == PreviewHelper.SpriteNone) { return(PreviewHelper.SpriteNone); } spriteFormat = EncodingService.FromAnyToDisplayEncoding(spriteFormat); var dico = _getJobToPath(folder, gender); string subPath; Job current = job; // Remove baby jobs if (JobGroup.Baby2.Is(current.Upper)) { current = Job.Get(current.Id, JobGroup.Normal2); } if (JobGroup.Baby3.Is(current.Upper)) { current = Job.Get(current.Id, JobGroup.Normal3); } if (!dico.ContainsKey(current)) { // Find the job by its parent while (current != null) { // Remove trans jobs if (JobGroup.Trans2.Is(current.Upper)) { current = Job.Get(current.Id, JobGroup.Normal2); } if (JobGroup.Trans3.Is(current.Upper)) { current = Job.Get(current.Id, JobGroup.Normal3); } if (dico.ContainsKey(current)) { break; } if (current.Parent != null && current.Parent.Id != JobList.Novice.Id) { current = current.Parent; } else { break; } } } if (current == null || !dico.ContainsKey(current)) { subPath = job.SpriteName; } else { subPath = dico[current]; } string path = String.Format(spriteFormat, subPath); if (level == 0 && (grf.GetData(path + ".act") == null && job.Parent != null)) { if (job.Parent.Id != JobList.Novice.Id) { path = GetSpritePathFromJob(grf, job.Parent, spriteFormat, gender, folder, sprite, level + 1); if (grf.GetData(path + ".act") == null && job.Parent.Parent != null) { if (job.Parent.Parent.Id != JobList.Novice.Id) { path = GetSpritePathFromJob(grf, job.Parent.Parent, spriteFormat, gender, folder, sprite, level + 2); } } } } //if (level == 0) { // if (grf.GetData(path + ".act") == null) { // return PreviewHelper.SpriteMissing; // } //} return(path); }
public SdeDatabase(MultiGrfReader metaGrf) { _metaGrf = metaGrf; Commands = new CommandsHolder(); }
public PreviewHelper(RangeListView listView, AbstractDb <int> db, CompactActIndexSelector selector, FrameViewer frameViewer, Border gridSpriteMissing, TextBox tbSpriteMissing ) { _listView = listView; _selector = selector; _frameViewer = frameViewer; _gridSpriteMissing = gridSpriteMissing; _tbSpriteMissing = tbSpriteMissing; _listView.ItemsSource = _jobs; if (db != null) { _metaGrf = db.ProjectDatabase.MetaGrf; } Db = db; _headReferenceDefault = new Act(ApplicationManager.GetResource("ref_head.act"), new Spr(ApplicationManager.GetResource("ref_head.spr"))); _bodyReferenceDefault = new Act(ApplicationManager.GetResource("ref_body.act"), new Spr(ApplicationManager.GetResource("ref_body.spr"))); _settings = new FrameViewerSettings(); _settings.Act = () => _act; _references = new List <ActReference>(); _references.Add(new ActReference { Act = DefaultBodyReference, Mode = ZMode.Back, Show = true }); _references.Add(new ActReference { Act = DefaultHeadReference, Mode = ZMode.Back, Show = true }); _settings.ReferencesGetter = () => _references; if (_selector != null) { _selector.Init(_frameViewer); _selector.Load(null); _selector.FrameChanged += (s, p) => _frameViewer.Update(); _selector.ActionChanged += (s, p) => _frameViewer.Update(); _selector.SpecialFrameChanged += (s, p) => _frameViewer.Update(); _settings.SelectedAction = () => _selector.SelectedAction; _settings.SelectedFrame = () => _selector.SelectedFrame; } for (int i = 0; i < 104; i++) { _emptyAct.AddAction(); } if (_frameViewer != null) { _frameViewer.InitComponent(_settings); } _listView.SelectionChanged += new SelectionChangedEventHandler(_jobChanged); _listView.PreviewMouseDown += _listView_PreviewMouseDown; _listView.PreviewMouseUp += _listView_PreviewMouseDown; _previews.Add(new HeadgearPreview()); _previews.Add(new ShieldPreview()); _previews.Add(new WeaponPreview()); _previews.Add(new GarmentPreview()); _previews.Add(new NpcPreview()); _previews.Add(new NullPreview()); }
public List <string> TestItem(ReadableTuple <int> tuple, MultiGrfReader grf, Type compare = null) { var result = new List <string>(); _metaGrf = grf; _lastTuple = tuple; foreach (var preview in _previews) { if (preview.CanRead(tuple) && !(preview is NullPreview) && (compare == null || preview.GetType() == compare)) { string jobt = tuple.GetValue <string>(ServerItemAttributes.ApplicableJob); var jobs = JobList.GetJobsFromHex("0x" + ((jobt == "") ? "FFFFFFFF" : jobt), tuple.GetIntNoThrow(ServerItemAttributes.Upper)); preview.Read(tuple, this, jobs); _jobs.Clear(); _jobs.AddRange(jobs); if (PreviewSprite == SpriteNone) { return(result); } var gender = _lastTuple.GetValue <GenderType>(ServerItemAttributes.Gender); foreach (var job in jobs) { _listView.SelectedItem = job; if (_listView.SelectedItem == null) { continue; } if (gender == GenderType.Undefined) { gender = GenderType.Both; } if (gender == GenderType.Both || gender == GenderType.Female) { _overrideGender = GenderType.Female; var act = preview.GetSpriteFromJob(tuple, this); var spr = act.ReplaceExtension(".spr"); result.Add(act); result.Add(spr); } if (gender == GenderType.Both || gender == GenderType.Male) { _overrideGender = GenderType.Male; var act = preview.GetSpriteFromJob(tuple, this); var spr = act.ReplaceExtension(".spr"); result.Add(act); result.Add(spr); } _overrideGender = null; } break; } } return(result); }