Esempio n. 1
0
        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());
        }
Esempio n. 2
0
        private void _updatePreview(string sprite)
        {
            byte[] headActionData;
            byte[] headSpriteData;
            _act = _emptyAct;
            _references.RemoveRange(2, _references.Count - 2);

            // Sprite has 3 states :
            // correct path - may not be found
            // null - do not update and show error
            // none - do not update and do not show error
            if (sprite == null)
            {
                AddError("Resource error : couldn't find the specified sprite.");
            }
            else if (sprite == SpriteDefault)
            {
                _bodyReference = DefaultBodyReference;
            }
            else if (sprite == SpriteNone)
            {
            }
            else
            {
                if (sprite.GetExtension() != null)
                {
                    headActionData = Grf.GetData(sprite);
                    headSpriteData = Grf.GetData(sprite.ReplaceExtension(".spr"));

                    if (headActionData != null && headSpriteData != null)
                    {
                        _act = new Act(headActionData, new Spr(headSpriteData));
                    }

                    if (headActionData == null || headSpriteData == null)
                    {
                        SetError(String.Format("Resource error : sprite(s) not found \n{0} - {1}\n{2} - {3}",
                                               sprite, headActionData == null ? "#MISSING" : "#FOUND", sprite.ReplaceExtension(".spr"), headSpriteData == null ? "#MISSING" : "#FOUND"));
                    }

                    //sprite = sprite.ReplaceExtension(EncodingService.FromAnyToDisplayEncoding("_검광.act"));

                    //headActionData = Grf.GetData(sprite);
                    //headSpriteData = Grf.GetData(sprite.ReplaceExtension(".spr"));
                    //
                    //if (headActionData != null && headSpriteData != null) {
                    //	Act act = new Act(headActionData, new Spr(headSpriteData));
                    //	act.AnchoredTo = _bodyReference;
                    //	_references.Add(new ActReference { Act = act, Mode = ZMode.Front, Show = true });
                    //}
                }
            }

            _headReference.AnchoredTo = _bodyReference;
            _act.AnchoredTo           = _headReference;
            _selector.Load(_act);
            _frameViewer.SetGarmentMode(false);

            _headReference.Commands.UndoAll();
            _bodyReference.Commands.UndoAll();

            if (_act != null)
            {
                _act.Commands.UndoAll();
            }

            if (Job != null && Job.Name.StartsWith("Baby "))
            {
                _headReference.Commands.Backup(a => a.Magnify(0.75f, true));
                _bodyReference.Commands.Backup(a => a.Magnify(0.75f, true));

                if (_act != null)
                {
                    _act.Commands.Backup(a => a.Magnify(0.75f, true));
                }
            }

            if (_lastMatch is GarmentPreview)
            {
                _frameViewer.SetGarmentMode(true);
            }

            _frameViewer.Update();
        }