Коли я на 7-й день розповідав про збереження у грі, я мав на увазі саме візуальний інтерфейс. Те, що бачить користувач у себе на екрані. Я тоді ще не брався безпосередньо за збереження. Ну от, збереження повинні зберігатися локально, на пристрої з якого грає людина. У мене поки що немає потужностей для організації серверних сховищ збережень у хмарі, та й не хочеться чесно прив'язувати гравців до доступу в інтернет. Мій планшет, наприклад без Wi-Fi в інтернет не вийде, немає Sim-карти. Тому я ставлю за мету, щоб грати можна було скрізь і завжди.
Власне, що це означає? Мені потрібно, щоб гра зберігала якісь свої файли на пристрої. Я зазвичай намагаюся робити це там, де знаходиться і сама програма. Коли я писав програму для Windows і Mac OS, я знайшов функцію, яка спрацьовує однаково на обох системах:
ExtractFilePath(ParamStr(0))
Якщо ваша програма знаходиться на диску D в якійсь папці, то ця функція знаходить повний шлях до програми і використовується мною в моїх цілях. На Android ця функція повертає порожнечу. Найцікавіше, що саме порожнеча. Програма не видає помилку, вона продовжує працювати, але адресу папки я не можу отримати. Я знайшов іншу функцію, яка працює на Android ідеально:
TPath.GetPublicPath
Вона повністю повертає адресу папки, і я можу зберігати файли там де і лежить гра. Але ось, наприклад, на Windows ця функція завжди повертає ту саму адресу. Де б моя гра не знаходилася, у відповідь я отримую - C:\ProgramData.
І тут у мене виникає запитання - або я не знайшов універсальне рішення, яке однаково добре б працювало і на Windows і на Mac OS і на Android, або все ж таки написати один додаток під усі операційні системи не так просто. І це я ще не знаю, як ці ж функції будуть вести себе на iOS. У мене просто немає під рукою iPhon-а щоб перевірити.
Найцікавіше, що я знаю, як об'єднати ці дві функції в одній програмі, щоб вони не конфліктували і видавали потрібні результати залежно від операційної системи, але особисто я вважаю, і я маю таке відчуття, що я правий. Дане рішення, яке я знаю, це так зване "милиця" (боги, яке ж дивне слово). Це як перемотувати синьою ізолентою щось зламане...