|
Опубликовано 09.11.2012 04:17 (12 лет назад) # |
Не понимаю зачем выдумывать свой формат? На работе пользуемся YAML для описания всех обьектов на сцене, выглядит как-то так:
---
class: SEMovingObject
name: obj3_3
settings:
spriteName: hillObject3_3.png
position: {x: 180, y: 168}
anchorPoint: {x: 0.5, y: 0.5}
scale: 1.0
finalScale: 1.0
z0rder: 1
---
class: SEObjectsHolder
name: holder
settings:
zOrder: 2
target: viewContainer.node
spriteName: objectsHolderHorizontal.png
anchorPoint: {x: 0.5, y: 0.0}
position: {x: 0, y: 0, alignX: center}
hideposition: {x: 0, y: -400, alignX: center}
continueSignal: showerSignal
holderEndSignal: winSignal
nextScene: winterBoyVictoryArena
groups:
-
settings: {waitForSignal: true}
places:
- {x: 480, y: 88, alignY: up, z0rder: -2}
objects:
- obj1_1
- obj1_2
- obj1_3
-
settings: {}
places:
- {x: 190, y: 250, alignY: up, z0rder: -2}
objects:
- obj3_1
- obj3_2
- obj3_3
-
settings: {}
places:
- {x: 480, y: 290, alignY: up}
objects:
- obj2_1
- obj2_2
- obj2_3
что ещё нужно? |
|
|
|
Опубликовано 09.11.2012 14:37 (12 лет назад) # |
JKot написал:
Не понимаю зачем выдумывать свой формат? На работе пользуемся YAML для описания всех обьектов на сцене...
что ещё нужно?
Что-то, что позволит ЭТО использовать в программе на Делфи :) Без тонны дополнительных ДЛЛ, многометровых библиотек и пр.
Есть солюшн? Давай, чего ждать :) |
|
|
|
Опубликовано 09.11.2012 17:00 (12 лет назад) # |
http://www.webdelphi.ru/2011/10/rabota-s-json-v-delphi-2010-xe2/ |
|
|
|
Опубликовано 09.11.2012 19:38 (12 лет назад) # |
Это всё-таки ЯЗОН, и основной материал идёт по Делфи 2009+, а я пользую v6.
Ладно, суть понятна - ложки нет. Мне будет проще свой парсер написать, который будет удовлетворять ровно моим требования. |
|
|
|
Опубликовано 10.11.2012 19:59 (12 лет назад) # |
Могу предоставить свой разработанный формат с иерархией, парсер к нему и экспортер в этот формат из ini-файла, как я писал выше. Юнит очень функционален, позволяет получить child текущего элемента, значения элементов в любом формате, например:
SomeUnit
FileName = as/script.js
Function = somefunc
Args
text = lol
count = 15
Экспортируется в файл .db, который обрабатывается кодом очень легко:
var db: TDataBase;
args: TDBRecord;
begin
db := TDataBase.Create('file.db');
if db.IsLoadedWith('SomeUnit') then begin
a := db.Root.ChildByName['FileName'].AsString; // as/script.js
b := db.Root.ChildByName['Function'].AsString; // somefunc
args := db.Root.ChildByName['Args'];
c := args.ChildByName['text'].AsString; // lol
d := args.ChildByName['count'].AsInteger; // 15
end;
db.free;
И тд, умеет сохраняться, автоматически создает ноды, есть обращаться к несуществующим, можно обращаться и так:
db.Root.ChildByName['FileName.Args.count'].AsFloat; // будет переконвертировано из int в float |
|
|
|
Опубликовано 12.11.2012 09:54 (12 лет назад) # |
Dj_smart написал:
Могу предоставить свой разработанный формат с иерархией, парсер к нему и экспортер в этот формат из ini-файла
А кстати, это ж идея.
В Delphi есть встроенный TIniFile - для работы с ini файлами. Просто поменять названия секций - и вуаля!
Имеем:
Player
__Name = John
__HP = 50
__Weapons
____Pistol = 100
____Bazooka = 4
Получаем в обычном ini-файле:
[Player]
Name=John
HP=50
[PlayerWeapons]
Pistol=100
Bazooka=4
P.S. НЕ смотрите на _ (это у меня почему-то пробелы не вставляются в сообщение) |
|
|
|
Опубликовано 12.11.2012 11:16 (12 лет назад) # |
0nni написал:
Doj, хехе я тоже на один из конкурсов писал свой простенький интерпретатор, в результате карты как-то так выглядели:
4 "blood" 4 1 insert
4 "blood" 4 4 insert
4 "blood" 5 1 insert
4 "blood" 5 4 insert
"" "3 \"blood\" 4 1 insert
3 \"blood\" 4 4 insert
3 \"blood\" 5 1 insert
3 \"blood\" 5 4 insert" 0 1 timer
"" "2 \"blood\" 4 1 insert
2 \"blood\" 4 4 insert
2 \"blood\" 5 1 insert
2 \"blood\" 5 4 insert" 0 2 timer
"Вот тебе в награду четыре помошницы" msg
1 4 do
dup !a
"fangirl" "" "\"Похоже твою напарницу убили.\" msg" 0 @a InsertEx 1 !Team
loop
2 "MapZombiesCount" !Global
"zombie" "" "onDie" 2 2 insertEx drop
"zombie" "" "onDie" 2 3 insertEx drop
3 2 solid
3 3 solid
1 2 solid
1 3 solid
3 5 clear
3 0 clear
Постфиксная нотация, лови респект \m/
редакция от Doj, 12.11.2012 11:16 |
|
|
|
Опубликовано 12.11.2012 14:59 (12 лет назад) # |
RichDad написал:
В Delphi есть встроенный TIniFile - для работы с ini файлами. Просто поменять названия секций - и вуаля!
Вторая строка стартового сообщения:
Что-то посложнее Key=Value
С этого самого "вуаля" я начинал и текущая версия использует именно его, но требуется что-нибудь по-мощнее и по-гибче. |
|
|
|
Опубликовано 12.11.2012 15:45 (12 лет назад) # |
Чисто из спортивного интереса могу набросать С# yaml->bin аппликуху. И из дельфы потом читать все это счастье.
Только каждый раз после редактирования придется запускать тулзу для конверта. Впрочем эт просто. |
|
|
|
Опубликовано 12.11.2012 15:47 (12 лет назад) # |
Да не нужно, всё уже прояснилось и решение принялось, спасибо |
|
|