Слайд 2Универсальный редактор для нескольких проектов
Мельников Михаил
Бинарные данные:
Картинки
Модели
Анимации
Звуки
Музыка
Ролики
Другие данные
![Универсальный редактор для нескольких проектов Мельников Михаил Бинарные данные: Картинки Модели Анимации](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/414243/slide-1.jpg)
Слайд 3Универсальный редактор для нескольких проектов
Мельников Михаил
Табличные данные:
RPG система
Всевозможные настройки вынесенные программистами из
![Универсальный редактор для нескольких проектов Мельников Михаил Табличные данные: RPG система Всевозможные](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/414243/slide-2.jpg)
кода
Игровые локации (карты)
Скрипты
Обвязки вокруг бинарных данных
Данные для ELK (тексты и комментарии к ним)
Другие данные
Слайд 4Универсальный редактор для нескольких проектов
Универсальный редактор для нескольких проектов
Мельников Михаил
Дуализм хранения данных
![Универсальный редактор для нескольких проектов Универсальный редактор для нескольких проектов Мельников Михаил](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/414243/slide-3.jpg)
на этапе разработки:
Слайд 5Универсальный редактор для нескольких проектов
Мельников Михаил
Требования к механизму работы с табличными данными:
Целостность
![Универсальный редактор для нескольких проектов Мельников Михаил Требования к механизму работы с](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/414243/slide-4.jpg)
данных на всем этапе разработки
Возможность работать с данными вручную
Массовая обработка данных
Быстрота работы с данными
Независимость от конкретных типов данных
Слайд 6Универсальный редактор для нескольких проектов
Мельников Михаил
Пример структуры данных из кода игры “Блицкриг”
struct
![Универсальный редактор для нескольких проектов Мельников Михаил Пример структуры данных из кода](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/414243/slide-5.jpg)
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 );
}
};
Слайд 7Универсальный редактор для нескольких проектов
Мельников Михаил
Схема создания типов данных в игре “Блицкриг
![Универсальный редактор для нескольких проектов Мельников Михаил Схема создания типов данных в игре “Блицкриг II”](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/414243/slide-6.jpg)
II”
Слайд 8Универсальный редактор для нескольких проектов
Мельников Михаил
Интерфейс IManipulator
interface IManipulator : public CObjectBase
{
virtual
![Универсальный редактор для нескольких проектов Мельников Михаил Интерфейс IManipulator interface IManipulator :](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/414243/slide-7.jpg)
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;
};
Слайд 9Универсальный редактор для нескольких проектов
Мельников Михаил
Броузер данных и универсальный Property Control
![Универсальный редактор для нескольких проектов Мельников Михаил Броузер данных и универсальный Property Control](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/414243/slide-8.jpg)
Слайд 10Универсальный редактор для нескольких проектов
Мельников Михаил
Схема работы с данными в редакторе (MCV)
![Универсальный редактор для нескольких проектов Мельников Михаил Схема работы с данными в редакторе (MCV)](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/414243/slide-9.jpg)
Слайд 11Универсальный редактор для нескольких проектов
Мельников Михаил
Схема вызова экпортеров в редактрое
![Универсальный редактор для нескольких проектов Мельников Михаил Схема вызова экпортеров в редактрое](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/414243/slide-10.jpg)
Слайд 12Универсальный редактор для нескольких проектов
Мельников Михаил
Создание, удаление и копирование объектов
![Универсальный редактор для нескольких проектов Мельников Михаил Создание, удаление и копирование объектов](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/414243/slide-11.jpg)
Слайд 13Универсальный редактор для нескольких проектов
Мельников Михаил
Схема вызова редакторов и обработки сообщений
![Универсальный редактор для нескольких проектов Мельников Михаил Схема вызова редакторов и обработки сообщений](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/414243/slide-12.jpg)
Слайд 14Универсальный редактор для нескольких проектов
Мельников Михаил
Интерфейс IInputState
interface IInputState
{
virtual void Enter()
![Универсальный редактор для нескольких проектов Мельников Михаил Интерфейс IInputState interface IInputState {](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/414243/slide-13.jpg)
= 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;
…
};
Слайд 15Универсальный редактор для нескольких проектов
Мельников Михаил
Общая часть редактора:
Система обработки XSD, генерация исходников,
![Универсальный редактор для нескольких проектов Мельников Михаил Общая часть редактора: Система обработки](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/414243/slide-14.jpg)
система считывания бинарных данных, система трансляции данных из внешнего формата во внутренний формат, представление данных в виде IManipulator
Общий Frame редактора с несколькими заготовленными окнами визуального редактирования транслирующие сообщения от дизайнера в интерфейс IInputState
Возможности по созданию дополнительных окон, меню, панелей инструментов Легкая работа со строкой статуса
Броузер общего списка объектов редактирования, система навигации по списку
Универсальный Property Control позволяющий редактировать любые данные представленные интерфейсом IManipulator
Механизм иерархического запуска экспортеров
Механизм вызова дополнительной функциональности при создании объектов, их копировании и удалении
Механизм запуска редакторов IEditor
Слайд 16Универсальный редактор для нескольких проектов
Мельников Михаил
Внешние части редактора:
Набор XSD файлов
Экспортеры. IExporter
Билдеры. IBuilder
Редакторы.
![Универсальный редактор для нескольких проектов Мельников Михаил Внешние части редактора: Набор XSD](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/414243/slide-15.jpg)
IEditor + IInputState