Универсальный редактор для нескольких проектов Мельников Михаил
Универсальный редактор для нескольких проектов Мельников Михаил Бинарные данные: Картинки Модели Анимации Звуки Музыка Ролики Другие данные
Универсальный редактор для нескольких проектов Мельников Михаил Табличные данные: RPG система Всевозможные настройки вынесенные программистами из кода Игровые локации (карты) Скрипты Обвязки вокруг бинарных данных Данные для ELK (тексты и комментарии к ним) Другие данные
Универсальный редактор для нескольких проектов Мельников Михаил Дуализм хранения данных на этапе разработки:
Универсальный редактор для нескольких проектов Мельников Михаил Требования к механизму работы с табличными данными: Целостность данных на всем этапе разработки Возможность работать с данными вручную Массовая обработка данных Быстрота работы с данными Независимость от конкретных типов данных
Универсальный редактор для нескольких проектов Мельников Михаил Пример структуры данных из кода игры Блицкриг struct SRMPatch { int nSize; string szName; //constructors SRMPatch() {} // serializing... virtual int operator&( IStructureSaver &ss ) { saver.Add( 1, &nSize ); saver.Add( 2, &szName ); } virtual int operator&( IDataTree &ss ) { saver.Add( Size, &nSize ); saver.Add( Name, &szName ); } };
Универсальный редактор для нескольких проектов Мельников Михаил Схема создания типов данных в игре Блицкриг II
Универсальный редактор для нескольких проектов Мельников Михаил Интерфейс IManipulator interface IManipulator : public CObjectBase { virtual IManipulatorIterator* Iterate( bool bShowHidden, ECacheType eCache ) = 0; virtual const SIteratorDesc* GetDesc( const string &rszName ) const = 0; virtual bool GetType( const string &rszName, string *pszType ) const = 0; virtual bool GetName( UINT nID, string *pszName ) const = 0; virtual bool InsertNode( const string &rszName, int nNodeIndex = ADD ) = 0; virtual bool RemoveNode( const string &rszName, int nNodeIndex = REMOVE_ALL ) = 0; virtual bool GetValue( const string &rszName, CVariant *pValue ) const = 0; virtual bool SetValue( const string &rszName, const CVariant &rValue ) = 0; virtual bool CheckValue( const string &rszName, const CVariant &rValue, bool *pRes ) = 0; virtual bool IsNameExists( const string &rszName ) const = 0; };
Универсальный редактор для нескольких проектов Мельников Михаил Броузер данных и универсальный Property Control
Универсальный редактор для нескольких проектов Мельников Михаил Схема работы с данными в редакторе (MCV)
Универсальный редактор для нескольких проектов Мельников Михаил Схема вызова экпортеров в редактрое
Универсальный редактор для нескольких проектов Мельников Михаил Создание, удаление и копирование объектов
Универсальный редактор для нескольких проектов Мельников Михаил Схема вызова редакторов и обработки сообщений
Универсальный редактор для нескольких проектов Мельников Михаил Интерфейс IInputState interface IInputState { virtual void Enter() = 0; virtual void Leave() = 0; virtual void Draw( class CPaintDC *pDC ) = 0; virtual void OnSetFocus( class CWnd* pNewWnd ) = 0; virtual void OnKillFocus( class CWnd* pOldWnd ) = 0; virtual void OnMouseMove( UINT nFlags, const CTPoint &rMousePoint ) = 0; virtual bool OnMouseWheel( UINT nFlags, short zDelta, CTPoint &rMousePoint ) = 0; virtual void OnLButtonDown( UINT nFlags, const CTPoint &rMousePoint ) = 0; virtual void OnLButtonUp( UINT nFlags, const CTPoint &rMousePoint ) = 0; virtual void OnLButtonDblClk( UINT nFlags, const CTPoint &rMousePoint ) = 0; … };
Универсальный редактор для нескольких проектов Мельников Михаил Общая часть редактора: Система обработки XSD, генерация исходников, система считывания бинарных данных, система трансляции данных из внешнего формата во внутренний формат, представление данных в виде IManipulator Общий Frame редактора с несколькими заготовленными окнами визуального редактирования транслирующие сообщения от дизайнера в интерфейс IInputState Возможности по созданию дополнительных окон, меню, панелей инструментов Легкая работа со строкой статуса Броузер общего списка объектов редактирования, система навигации по списку Универсальный Property Control позволяющий редактировать любые данные представленные интерфейсом IManipulator Механизм иерархического запуска экспортеров Механизм вызова дополнительной функциональности при создании объектов, их копировании и удалении Механизм запуска редакторов IEditor
Универсальный редактор для нескольких проектов Мельников Михаил Внешние части редактора: Набор XSD файлов Экспортеры. IExporter Билдеры. IBuilder Редакторы. IEditor + IInputState
Универсальный редактор для нескольких проектов Мельников Михаил