Subversion Repository Public Repository

fonline_sdk

This repository has no backups
This repository's network speed is throttled to 100KB/sec

Changeset 429

Committed by cvet on Sat 21 Jun, 2014 20:34:17 +0000

Commit Message:

С данной ревизии сдк начинается перевод хардкод гуи в скрипты.
На данный момент создана базовая архитектура новой системы, которая состоит из
- редактора интерфейса Tools/InterfaceEditor;
- gui.fos - ядро системы, которое осуществляет работу интерфейса;
- gui_h.fos - базовые классы и пользовательский функционал для работы с интерфейсом;
- gui_screens.fos - автоматически сгенерированный скрипт в InterfaceEditor, где находится логика работы окон.
- gui_screens_stuff.fos - скрипт, который включается в gui_screens.fos, для внесения функционала вручную, который будет там использоваться.
Постепенно интерфейс будет замещаться, а по окончании хардкод будет исключен из клиента.
Соответственно произошли правки в скриптах, связанные с удалением старой системы и вводом новой.
Еще раз подчеркну, что текущая версия только начало работы над новым гуи, и в течении нескольких месяцев система и редактор будут дорабатываться.

API нового гуи находится в начале скрипта gui_h.fos.
Примеры использования новой системы находятся в обновленных скриптах client_screen_test.fos и radio.fos. А так же в автоматически сгенерированном скрипте gui_screens.fos.
Несколько советов:
- помечайте колбеки событий объектов гуи (начинаются с ‘On’) как override, на случай, если допустите ошибку в имени или параметрах, что бы компилятор вас предупредил об этом;
- не используйте методы и параметры начинающиеся с подчеркивания в базовых классах gui, они для внутренней работы системы и их поведение может меняться со временем.

Редактор интерфейса состоит из программы InterfaceEditor.exe и файлов для хранения информации о интерфейсе.
Расширение .fogui - отдельное окно;
Расширение .foguischeme - схема набора окон, нужно будет для моддинга стандартного интерфейса.
На данный момент взаимодействие с гуи осуществляется посредством контекстного меню вызываемого правой кнопкой мыши на панели GUI.

В этой ревизии уже замещен экран логина в игру.
Перемещено рисование информации по F1 в скрипты.

AngelScript обновлен до ревизии 1959, версия 2.29.0.
По скриптам произошло много правок, в связи с новыми ворнингами при компиляции.
В скрипты включен аддон AngelScript weakref.

Для обработки хардкод ввода добавлены функции
void HandleHardcodedScreenMouse(int screen, int button, bool down, bool move)
void HandleHardcodedScreenKey(int screen, uint8 key, string@ text, bool down)
они будут использоваться для работы с хардкод гуи на время его переноса.

На время миграции интерфейса в скрипты добавлена функция
string@ CustomCall(string& command, string& separator = “ ”)
нужна для работы с движком, вызова некоторых его функций, которые не нужно выносить в скрипты, но необходимость в вызове существует.

Добавлена глобальная функция
void CloneObject(?&in, ?&out, bool copy)
с помощью которой можно создавать копии объектов не

Переработаны функции DrawSprite, теперь они имеют следующие сигнатуры
void DrawSprite(uint sprId, int frameIndex, int x, int y, uint color = 0, bool applyOffsets = false)
void DrawSprite(uint sprId, int frameIndex, int x, int y, int w, int h, bool zoom = false, uint color = 0, bool applyOffsets = false)
void DrawSpritePattern(uint sprId, int frameIndex, int x, int y, int w, int h, int sprWidth, int sprHeight, uint color = 0)
bool zoom - если true, то изображение сохраняет пропорции, если false, то растягивается.

В функции GetTextInfo теперь вместо ссылки для текста используется указатель
void GetTextInfo(string& text...
void GetTextInfo(string@ text...
теперь при передаче null будет рассчитываться максимальное количество строк, которое может вместиться в заданную область.

В функцию HideScreen теперь не передаются какие-либо параметры, а в функцию ShowScreen теперь вместо int p0, p1, p2 можно опционально передать dictionary, который потом уже можно будет использовать в GUIObject::OnInit
void ShowScreen(int screen, dictionary@ params = null)

При передаче в функцию MouseClick значения -1 в параметр cursor, то смены курсора не будет.

Исправлена работа функции GetMonitorHex, когда не учитывались параметры x и y.

Для обработки пользовательского ввода создан скрипт input.fos.
Туда перемещена из движка обработка всех горячих клавиш.

Добавлены глобальные переменные
int __SoundVolume - регулировка громкости звуков (0..100);
int __MusicVolume - регулировка громкости музыки (0..100);
bool __DebugInfo - отладочная информация по F1.

Переделано обозначение версий сервера, клиента и маппера, теперь оно будет обозначать номер ревизии сдк.

Добавлена зарезервированная функция для скриптов клиента и маппера
void finish()
которая вызывается в момент выхода из программы.
Нужно учитывать, что функция может не вызваться, если произошло падение клиента или он был закрыт по Alt+F4. ????

Добавлена зарезервированная функция для скриптов клиента, которая вызывается при добавлении игрового сообщения
void message_box( string& messageText, int messageType, bool scriptCall )
string& messageText - текст сообщения, можно модифицировать для движка;
int messageType - тип сообщения;
bool scriptCall - был ли вызов инициирован со скриптов функцией Message или движком.

Изменены сигнатуры функций mouse_down, mouse_up, mouse_move, key_down, key_up.

Для работы с кешем на строне клиента добавлены функции
void SetCacheData(const string& name, const uint8[]& data)
void SetCacheData(const string& name, const uint8[]& data, uint dataSize)
bool GetCacheData(const string& name, uint8[]& data)
void SetCacheDataStr(const string& name, const string& data)
string@ GetCacheDataStr(const string& name)
bool IsCacheData(const string& name)
void EraseCacheData(const string& name)
const string& name - имя данных;
const uint8[]& data - данные;
uint dataSize - длинна данных;
const string& data - данные.
Теперь класс serializator.fos может работать и в клиенте.

Исправлен баг с перегенерацией клиентских скриптов, баг с 428 ревизии.

Вычисление смещение текстуры в аталсе теперь происходит в шейдере
TexCoord.x = ( InTexCoord.x * ColorMapAtlasOffset.z ) + ColorMapAtlasOffset.x;
TexCoord.y = ( InTexCoord.y * ColorMapAtlasOffset.w ) + ColorMapAtlasOffset.y;
соответсвенно добавлена переменная ColorMapAtlasOffset.
Вместо атрибута InTexCoordBase теперь передается вторая текстурная координата TexCoord2.
См. файл Client/data/effects/ReadMe.txt

В статистике памяти сервера добавлен учет памяти массивов.

Для строк добавлены методы
bool startsWith(const string &in) const - начинается ли строка с переданной;
bool endsWith(const string &in) const - кончается ли строка переданной.
Так же все глоабльные функции для работы со строками получили соответствующие методы в самом классе
string@ substring(int start, int count = -1)
int findFirst(const string &in, int start = 0)
int findLast(const string &in, int start = 0)
int findFirstOf(const string &in, int start = 0)
int findFirstNotOf(const string &in, int start = 0)
int findLastOf(const string &in, int start = 0)
int findLastNotOf(const string &in, int start = 0)
array<string@>@ split(const string &in)
string@ toLower()
string@ toUpper()

Changes

Added /Server/scripts/gui.fos

Added /Server/scripts/gui_h.fos

Added /Server/scripts/gui_screens.fos

Added /Server/scripts/gui_screens_stuff.fos

Added /Server/scripts/input.fos

Added /Tools/InterfaceEditor

Added /Tools/InterfaceEditor/InterfaceEditor.cfg

Added /Tools/InterfaceEditor/InterfaceEditor.exe

Added /Tools/InterfaceEditor/Newtonsoft.Json.dll

Added /Tools/InterfaceEditor/gui

Added /Tools/InterfaceEditor/gui/default

Added /Tools/InterfaceEditor/gui/default/login.fogui

Added /Tools/InterfaceEditor/gui/default.foguischeme

Removed /Server/scripts/client_gui.fos

Removed /Server/scripts/client_gui_h.fos

Modified /Client/FOnline Diff

Modified /Client/FOnline.exe Diff

Modified /Client/FOnline.pdb Diff

Modified /Client/data/effects/3D_Skinned.glsl Diff

Modified /Client/data/effects/ReadMe.txt Diff

Modified /Server/FOnlineServer Diff

Modified /Server/FOnlineServer.exe Diff

Modified /Server/FOnlineServer.pdb Diff

Modified /Server/FOnlineServerDaemon Diff

Modified /Server/scripts/AngelScript/angelscript.h Diff

Modified /Server/scripts/AngelScript/scriptstring.h Diff

Modified /Server/scripts/_client_defines.fos Diff

Modified /Server/scripts/_colors.fos Diff

Modified /Server/scripts/_mapper_defines.fos Diff

Modified /Server/scripts/_math.fos Diff

Modified /Server/scripts/_msgstr.fos Diff

Modified /Server/scripts/chosen_tabs.fos Diff

Modified /Server/scripts/client_3d_cha_reg.fos Diff

Modified /Server/scripts/client_main.fos Diff

Modified /Server/scripts/client_screen_test.fos Diff

Modified /Server/scripts/fonline.h Diff

Modified /Server/scripts/fonline_test.dll Diff

Modified /Server/scripts/fonline_test.so Diff

Modified /Server/scripts/fonline_test_client.dll Diff

Modified /Server/scripts/fonline_test_client.so Diff

Modified /Server/scripts/fonline_tla.dll Diff

Modified /Server/scripts/fonline_tla_client.dll Diff

Modified /Server/scripts/mapper_main.fos Diff

Modified /Server/scripts/parameters.fos Diff

Modified /Server/scripts/radio.fos Diff

Modified /Server/scripts/scripts.cfg Diff

Modified /Server/scripts/serializator.fos Diff

Modified /Server/scripts/sprite.fos Diff

Modified /Tools/ASCompiler/ASCompiler Diff

Modified /Tools/ASCompiler/ASCompiler.exe Diff

Modified /Tools/Mapper/Mapper Diff

Modified /Tools/Mapper/Mapper.exe Diff

Modified /Tools/Mapper/Mapper.pdb Diff