Тема у меня такая:
https://gamedev.ru/flame/forum/?id=265228
всё хорошо - документации по урхо море.
хм, и я в нём тону ...
задача вроде простая и она такая:
нужно тупо загрузить своего формата(пусть текстовый) ВЕСЬ файл в строку.
задача чуть сложнее:
что-то типа такого:
File file("my.txt"); Vector<char> mystr[ТУТ_РАЗМЕР_ФАЙЛА_КАК?]; file.Read(mystr.data(), ТУТ_РАЗМЕР_ФАЙЛА_КАК?); Vector< String > map = mystr.Split('\n');
Как это записать на Angelscript правильно, чтобы работало?
Мне кажется тут вряд-ли кто ответит. Попробуй спросить в discourse.
GLoom
уже за ваш отзыв вам спасибо)
вроде сама задача проще не придумаешь...
xlat-code
Все так, но angelscript....
Вообще плохо понимаю зачем вытаскивать этот нафталин 2012 годов
если есть хорошие движки с хорошими скриптованными языками
DanQuimby
> плохо понимаю зачем вытаскивать этот нафталин 2012 годов
самый последний(1.7.1) релиз Urho3D в 2019 году,
но на гитхабе лежит версия с последним коммитом 8 дней назад.
которую без проблем можно собрать под что хочешь...
сам AngelScript:
Current version: AngelScript 2.35.1 (September 27th, 2021)
плохо понимаю - о чём вы?
GLoom
> discourse
по ходу пойду зарегюсь,
но это не честно - как же тогда наш форум?
урхо тема тогда тут еле живая окончательно, вежливо говоря, уснёт. )
xlat-code
Есть еще вариант спросить в телеге: Urho3D
Вот рабочий пример:
#include "Scripts/Utilities/Sample.as" void Start() { Print("//////////////////"); File@ f = File("/home/s/test.txt", FILE_READ); Print("file size: " + String(f.get_size())); //Print(String(ReadInt)); Print(f.ReadLine()); Print("current position: " + String(f.get_position())); Print(f.ReadString()); f.Close(); engine.Exit(); } String patchInstructions = "";
Названия функций в AngelScript чуток отличаются от доков, их можно подсмотреть в исходниках к примеру тут по файлам
IPcorp
> Есть еще вариант спросить в телеге: Urho3D
спасибо.
Tarzeron
> Вот рабочий пример:
это для консольного окна?
у меня оно не открывается.
Делаю следующее:
в примере 01_HelloWorld.as
вешаю на helloText.text =
String test() { File@ f = File("test.txt", FILE_READ); if(f.IsOpen()) /// ERROR: No matching signatures 'File::IsOpen' { String str = f.ReadString(); f.Close (); return str; } return "no file"; }
Выскакивает ошибка, см. выше.
Tarzeron
> Доки по чтению файла
метод IsOpen() имеется
Tarzeron
> тут по файлам
прошёл поиском IsOpen - отсутствует
чо делать? как проверить на открытие файла?
юзаю Urho3D-1.7.1-MinGW-SHARED.zip
Tarzeron, что касается самой загрузки файла, то файл отлично грузиться.
спасибо за наводку.
StepEver
> Сцена хранится в xml. Можно посмотреть в исходники
попробовал грибов(из SDK) и нахожусь под их впечатлением.
В примерах показана процедурная генерация сцены,
есть одна(или не одна) моделька и они процедурно расставляются.
это 1.
2:
я не собираюсь хранить всю сцену,
я хочу хранить логику(схему) для генератора сцены.
3:
я не профи, поэтому я хочу сейчас научиться делать простые - очень простые вещи.
Согласитесь, как то странно это, ворочать целыми сценами и не уметь загрузить простейшие(char,int) файловые данные...
С IsOpen ошибка потому что имя функций в as отличается от плюсов и их доки, нужно использовать get_open
Tarzeron
> get_open()
+100
спасибо, заработало!
блин, сам бы я никогда не догадался...
вы меня воодушевили:
жмакаю Scripting API
затем жму File
и вот оно на тарелочке:
Properties: ... bool open // readonly ...
И так тоже работает:
String test() { File@ f = File("test.txt", FILE_READ); if(f.open) /// It's work! { String str = f.ReadString(); f.Close (); return str; } return "no file"; }
Tarzeron, ещё раз спасибо!
Urho3D/AngelScript/IOAPI.cpp#L322
> engine->RegisterObjectMethod("File", "bool get_open()", asMETHOD(File, IsOpen), asCALL_THISCALL);
и всё же "на душе скребут кошки":
какого дога имена в скрипте ДОЛЖНЫ отличаться от имен методов в С++?!
из чего исходили авторы движка, чтобы такое придумать?
откопал в сети прогу Архивариус 3000 для быстрого поиска инфы в файлах, теперь, надеюсь, что найдётся всё ...
xlat-code
> какого дога имена в скрипте ДОЛЖНЫ отличаться от имен методов в С++?!
Похоже в скриптах есть свой заморочки, фишки, зарезервированные слова и решили придерживаться их. Меня другое имя не смущает, в моей игре тоже будет большая разница между именами в плюсах и в lua.
xlat-code
> ещё раз спасибо!
пожалуйста)
StepEver
Tarzeron,
мои текущие заморочки щас далеки от самой игры:
1.
нашёл наконец то этот лог-файл,
версия Urho3D 1.3 кладёт его рядом с урхо плеером,
блин, но неугомонные разрабы в версии 1.7 решили, что тут лучше:
C:\Users\Admin\AppData\Roaming\urho3d\logs
Вопрос, кто их попросил об этом?!
Только теперь мне стало ясно, как работает Print
2.
Не могу найти в урхо спровайденные
void throw(const string &in exception)
и
string getExceptionInfo()
в доке написано что эксепшены возможны...
Вопрос:
Urho поддерживает исключения для Angelscript?
ёксельмок, гугол молчит, как партизан ...
xlat-code
>
> Urho поддерживает исключения для Angelscript?
думаю да, вот пример обработки в самом скрипте
а вот отловленная ошибка самим плеером
xlat-code
> Не могу найти в урхо спровайденные
> void throw(const string &in exception)
> и
> string getExceptionInfo()
этого в плеере нет, если нужно обработать ошибку которая известна заранее ее можно обработать средствами as с использованием try/catch, в catch можно сделать принт и выход, в любом другом случае плеер либо выбьет без обработки ошибки либо покажет ее в консоли и диалоге
ну если сильно нужно ничего не мешает добавить подобное самостоятельно и выводить к примеру тот же диалог и принт, но думаю ради этого начинать кастомизировать плеер нет смысла
Тема в архиве.