add quest journal (QuestJournal + split UI view)
This commit is contained in:
1 parent
dbf0af2cb2
commit
d78286a9c2
13 files changed
+1148
-32
No files matched your search
@@ -28,47 +28,72 @@
|
||||
"name": "inventory_items_panel",
|
||||
"x": 50.0,
|
||||
"y": 150.0,
|
||||
"width": 250.0,
|
||||
"height": 300.0,
|
||||
"width": 320.0,
|
||||
"height": 420.0,
|
||||
"children": [
|
||||
{
|
||||
"type": "StaticImage",
|
||||
"name": "panel_background",
|
||||
"width": 200,
|
||||
"height": 400,
|
||||
"x": 0.0,
|
||||
"y": 0.0,
|
||||
"width": 320.0,
|
||||
"height": 420.0,
|
||||
"texture": "resources/w/red.png"
|
||||
},
|
||||
{
|
||||
"type": "TextView",
|
||||
"name": "inventory_title_text",
|
||||
"x": 20.0,
|
||||
"y": 18.0,
|
||||
"width": 230.0,
|
||||
"height": 34.0,
|
||||
"text": "Inventory",
|
||||
"fontSize": 24,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"centered": false,
|
||||
"topAligned": true,
|
||||
"paddingX": 0.0,
|
||||
"paddingY": 0.0,
|
||||
"color": [1.0, 1.0, 1.0, 1.0]
|
||||
},
|
||||
{
|
||||
"type": "TextView",
|
||||
"name": "inventory_items_text",
|
||||
"x": -100.0,
|
||||
"y": -100.0,
|
||||
"width": 250.0,
|
||||
"height": 300.0,
|
||||
"x": 20.0,
|
||||
"y": 70.0,
|
||||
"width": 280.0,
|
||||
"height": 320.0,
|
||||
"text": "Inventory (Empty)",
|
||||
"fontSize": 18,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"centered": false,
|
||||
"topAligned": true,
|
||||
"wrap": true,
|
||||
"paddingX": 0.0,
|
||||
"paddingY": 0.0,
|
||||
"maxLines": 14,
|
||||
"color": [1.0, 1.0, 1.0, 1.0]
|
||||
},
|
||||
{
|
||||
"type": "TextButton",
|
||||
"name": "close_inventory_button",
|
||||
"x": 165.0,
|
||||
"y": 0.0,
|
||||
"width": 40.0,
|
||||
"height": 40.0,
|
||||
"text": "X",
|
||||
"fontSize": 20,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"textCentered": true,
|
||||
"color": [1.0, 1.0, 1.0, 1.0],
|
||||
"textures": {
|
||||
"normal": "resources/w/blue.png"
|
||||
}
|
||||
"name": "close_inventory_button",
|
||||
"x": 266.0,
|
||||
"y": 16.0,
|
||||
"width": 40.0,
|
||||
"height": 40.0,
|
||||
"text": "X",
|
||||
"fontSize": 20,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"textCentered": true,
|
||||
"color": [1.0, 1.0, 1.0, 1.0],
|
||||
"textures": {
|
||||
"normal": "resources/w/blue.png",
|
||||
"hover": "resources/w/blue.png",
|
||||
"pressed": "resources/w/blue.png"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,353 @@
|
||||
{
|
||||
"root": {
|
||||
"type": "FrameLayout",
|
||||
"name": "quest_journal_root",
|
||||
"width": "match_parent",
|
||||
"height": "match_parent",
|
||||
"children": [
|
||||
{
|
||||
"type": "TextButton",
|
||||
"name": "quest_journal_button",
|
||||
"x": 220.0,
|
||||
"y": 50.0,
|
||||
"width": 170.0,
|
||||
"height": 60.0,
|
||||
"text": "Quests",
|
||||
"fontSize": 24,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"textCentered": true,
|
||||
"color": [1.0, 1.0, 1.0, 1.0],
|
||||
"textures": {
|
||||
"normal": "resources/w/red.png",
|
||||
"hover": "resources/w/red.png",
|
||||
"pressed": "resources/w/red.png"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "FrameLayout",
|
||||
"name": "quest_journal_panel",
|
||||
"x": 55.0,
|
||||
"y": 85.0,
|
||||
"width": 1170.0,
|
||||
"height": 590.0,
|
||||
"children": [
|
||||
{
|
||||
"type": "StaticImage",
|
||||
"name": "quest_panel_background",
|
||||
"x": 0.0,
|
||||
"y": 0.0,
|
||||
"width": 1170.0,
|
||||
"height": 590.0,
|
||||
"texture": "resources/black.png"
|
||||
},
|
||||
{
|
||||
"type": "TextView",
|
||||
"name": "quest_journal_title_text",
|
||||
"x": 0.0,
|
||||
"y": 18.0,
|
||||
"width": 1170.0,
|
||||
"height": 44.0,
|
||||
"text": "QUESTS",
|
||||
"fontSize": 32,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"centered": true,
|
||||
"topAligned": true,
|
||||
"paddingY": 2.0,
|
||||
"color": [1.0, 1.0, 1.0, 1.0]
|
||||
},
|
||||
{
|
||||
"type": "TextButton",
|
||||
"name": "quest_close_button",
|
||||
"x": 1110.0,
|
||||
"y": 20.0,
|
||||
"width": 38.0,
|
||||
"height": 38.0,
|
||||
"text": "X",
|
||||
"fontSize": 20,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"textCentered": true,
|
||||
"color": [1.0, 1.0, 1.0, 1.0],
|
||||
"textures": {
|
||||
"normal": "resources/w/blue.png",
|
||||
"hover": "resources/w/blue.png",
|
||||
"pressed": "resources/w/blue.png"
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "StaticImage",
|
||||
"name": "quest_separator_left",
|
||||
"x": 390.0,
|
||||
"y": 88.0,
|
||||
"width": 2.0,
|
||||
"height": 470.0,
|
||||
"texture": "resources/w/red.png"
|
||||
},
|
||||
{
|
||||
"type": "StaticImage",
|
||||
"name": "quest_separator_right",
|
||||
"x": 770.0,
|
||||
"y": 88.0,
|
||||
"width": 2.0,
|
||||
"height": 470.0,
|
||||
"texture": "resources/w/red.png"
|
||||
},
|
||||
{
|
||||
"type": "TextView",
|
||||
"name": "quest_list_header_text",
|
||||
"x": 35.0,
|
||||
"y": 90.0,
|
||||
"width": 330.0,
|
||||
"height": 32.0,
|
||||
"text": "ЗАДАНИЯ",
|
||||
"fontSize": 22,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"centered": false,
|
||||
"topAligned": true,
|
||||
"paddingX": 4.0,
|
||||
"paddingY": 0.0,
|
||||
"color": [1.0, 0.88, 0.45, 1.0]
|
||||
},
|
||||
{
|
||||
"type": "TextButton",
|
||||
"name": "quest_slot_0",
|
||||
"x": 35.0,
|
||||
"y": 130.0,
|
||||
"width": 330.0,
|
||||
"height": 42.0,
|
||||
"text": "",
|
||||
"fontSize": 18,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"textCentered": false,
|
||||
"textPaddingX": 12.0,
|
||||
"color": [1.0, 1.0, 1.0, 1.0],
|
||||
"textures": { "normal": "resources/transparent.png", "hover": "resources/w/blue.png", "pressed": "resources/w/blue.png" }
|
||||
},
|
||||
{
|
||||
"type": "TextButton",
|
||||
"name": "quest_slot_1",
|
||||
"x": 35.0,
|
||||
"y": 178.0,
|
||||
"width": 330.0,
|
||||
"height": 42.0,
|
||||
"text": "",
|
||||
"fontSize": 18,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"textCentered": false,
|
||||
"textPaddingX": 12.0,
|
||||
"color": [1.0, 1.0, 1.0, 1.0],
|
||||
"textures": { "normal": "resources/transparent.png", "hover": "resources/w/blue.png", "pressed": "resources/w/blue.png" }
|
||||
},
|
||||
{
|
||||
"type": "TextButton",
|
||||
"name": "quest_slot_2",
|
||||
"x": 35.0,
|
||||
"y": 226.0,
|
||||
"width": 330.0,
|
||||
"height": 42.0,
|
||||
"text": "",
|
||||
"fontSize": 18,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"textCentered": false,
|
||||
"textPaddingX": 12.0,
|
||||
"color": [1.0, 1.0, 1.0, 1.0],
|
||||
"textures": { "normal": "resources/transparent.png", "hover": "resources/w/blue.png", "pressed": "resources/w/blue.png" }
|
||||
},
|
||||
{
|
||||
"type": "TextButton",
|
||||
"name": "quest_slot_3",
|
||||
"x": 35.0,
|
||||
"y": 274.0,
|
||||
"width": 330.0,
|
||||
"height": 42.0,
|
||||
"text": "",
|
||||
"fontSize": 18,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"textCentered": false,
|
||||
"textPaddingX": 12.0,
|
||||
"color": [1.0, 1.0, 1.0, 1.0],
|
||||
"textures": { "normal": "resources/transparent.png", "hover": "resources/w/blue.png", "pressed": "resources/w/blue.png" }
|
||||
},
|
||||
{
|
||||
"type": "TextButton",
|
||||
"name": "quest_slot_4",
|
||||
"x": 35.0,
|
||||
"y": 322.0,
|
||||
"width": 330.0,
|
||||
"height": 42.0,
|
||||
"text": "",
|
||||
"fontSize": 18,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"textCentered": false,
|
||||
"textPaddingX": 12.0,
|
||||
"color": [1.0, 1.0, 1.0, 1.0],
|
||||
"textures": { "normal": "resources/transparent.png", "hover": "resources/w/blue.png", "pressed": "resources/w/blue.png" }
|
||||
},
|
||||
{
|
||||
"type": "TextButton",
|
||||
"name": "quest_slot_5",
|
||||
"x": 35.0,
|
||||
"y": 370.0,
|
||||
"width": 330.0,
|
||||
"height": 42.0,
|
||||
"text": "",
|
||||
"fontSize": 18,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"textCentered": false,
|
||||
"textPaddingX": 12.0,
|
||||
"color": [1.0, 1.0, 1.0, 1.0],
|
||||
"textures": { "normal": "resources/transparent.png", "hover": "resources/w/blue.png", "pressed": "resources/w/blue.png" }
|
||||
},
|
||||
{
|
||||
"type": "TextButton",
|
||||
"name": "quest_slot_6",
|
||||
"x": 35.0,
|
||||
"y": 418.0,
|
||||
"width": 330.0,
|
||||
"height": 42.0,
|
||||
"text": "",
|
||||
"fontSize": 18,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"textCentered": false,
|
||||
"textPaddingX": 12.0,
|
||||
"color": [1.0, 1.0, 1.0, 1.0],
|
||||
"textures": { "normal": "resources/transparent.png", "hover": "resources/w/blue.png", "pressed": "resources/w/blue.png" }
|
||||
},
|
||||
{
|
||||
"type": "TextButton",
|
||||
"name": "quest_slot_7",
|
||||
"x": 35.0,
|
||||
"y": 466.0,
|
||||
"width": 330.0,
|
||||
"height": 42.0,
|
||||
"text": "",
|
||||
"fontSize": 18,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"textCentered": false,
|
||||
"textPaddingX": 12.0,
|
||||
"color": [1.0, 1.0, 1.0, 1.0],
|
||||
"textures": { "normal": "resources/transparent.png", "hover": "resources/w/blue.png", "pressed": "resources/w/blue.png" }
|
||||
},
|
||||
{
|
||||
"type": "TextButton",
|
||||
"name": "quest_slot_8",
|
||||
"x": 35.0,
|
||||
"y": 514.0,
|
||||
"width": 330.0,
|
||||
"height": 42.0,
|
||||
"text": "",
|
||||
"fontSize": 18,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"textCentered": false,
|
||||
"textPaddingX": 12.0,
|
||||
"color": [1.0, 1.0, 1.0, 1.0],
|
||||
"textures": { "normal": "resources/transparent.png", "hover": "resources/w/blue.png", "pressed": "resources/w/blue.png" }
|
||||
},
|
||||
{
|
||||
"type": "TextView",
|
||||
"name": "quest_middle_title_text",
|
||||
"x": 415.0,
|
||||
"y": 94.0,
|
||||
"width": 330.0,
|
||||
"height": 72.0,
|
||||
"text": "Выберите задание",
|
||||
"fontSize": 22,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"centered": false,
|
||||
"topAligned": true,
|
||||
"wrap": true,
|
||||
"paddingX": 8.0,
|
||||
"paddingY": 4.0,
|
||||
"maxLines": 2,
|
||||
"color": [1.0, 0.88, 0.45, 1.0]
|
||||
},
|
||||
{
|
||||
"type": "TextView",
|
||||
"name": "quest_meta_text",
|
||||
"x": 415.0,
|
||||
"y": 168.0,
|
||||
"width": 330.0,
|
||||
"height": 48.0,
|
||||
"text": "",
|
||||
"fontSize": 16,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"centered": false,
|
||||
"topAligned": true,
|
||||
"wrap": true,
|
||||
"paddingX": 8.0,
|
||||
"paddingY": 2.0,
|
||||
"maxLines": 2,
|
||||
"color": [0.72, 0.72, 0.72, 1.0]
|
||||
},
|
||||
{
|
||||
"type": "TextView",
|
||||
"name": "quest_objectives_header_text",
|
||||
"x": 415.0,
|
||||
"y": 232.0,
|
||||
"width": 330.0,
|
||||
"height": 32.0,
|
||||
"text": "ЦЕЛИ",
|
||||
"fontSize": 20,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"centered": false,
|
||||
"topAligned": true,
|
||||
"paddingX": 8.0,
|
||||
"paddingY": 0.0,
|
||||
"color": [1.0, 0.88, 0.45, 1.0]
|
||||
},
|
||||
{
|
||||
"type": "TextView",
|
||||
"name": "quest_objectives_text",
|
||||
"x": 415.0,
|
||||
"y": 272.0,
|
||||
"width": 330.0,
|
||||
"height": 285.0,
|
||||
"text": "",
|
||||
"fontSize": 17,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"centered": false,
|
||||
"topAligned": true,
|
||||
"wrap": true,
|
||||
"paddingX": 8.0,
|
||||
"paddingY": 4.0,
|
||||
"maxLines": 10,
|
||||
"color": [0.88, 0.88, 0.88, 1.0]
|
||||
},
|
||||
{
|
||||
"type": "TextView",
|
||||
"name": "quest_lore_title_text",
|
||||
"x": 795.0,
|
||||
"y": 94.0,
|
||||
"width": 330.0,
|
||||
"height": 38.0,
|
||||
"text": "Описание задания",
|
||||
"fontSize": 22,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"centered": false,
|
||||
"topAligned": true,
|
||||
"paddingX": 8.0,
|
||||
"paddingY": 0.0,
|
||||
"color": [1.0, 0.88, 0.45, 1.0]
|
||||
},
|
||||
{
|
||||
"type": "TextView",
|
||||
"name": "quest_description_text",
|
||||
"x": 795.0,
|
||||
"y": 145.0,
|
||||
"width": 330.0,
|
||||
"height": 410.0,
|
||||
"text": "",
|
||||
"fontSize": 18,
|
||||
"fontPath": "resources/fonts/DroidSans.ttf",
|
||||
"centered": false,
|
||||
"topAligned": true,
|
||||
"wrap": true,
|
||||
"paddingX": 8.0,
|
||||
"paddingY": 6.0,
|
||||
"maxLines": 15,
|
||||
"color": [0.92, 0.92, 0.92, 1.0]
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,90 @@
|
||||
{
|
||||
"quests": [
|
||||
{
|
||||
"id": "tutorial_open_journal",
|
||||
"title": "Журнал заданий",
|
||||
"category": "Tutorial",
|
||||
"status": "Completed",
|
||||
"recommendedLevel": 0,
|
||||
"description": "Теперь у героя есть журнал заданий. В нём можно просматривать текущие поручения, цели и подробные записи о событиях, которые уже произошли в мире игры.",
|
||||
"objectives": [
|
||||
{ "id": "open_journal", "text": "Открыть журнал заданий", "completed": true }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "side_lost_bag",
|
||||
"title": "Потерянная сумка",
|
||||
"category": "Side",
|
||||
"status": "Completed",
|
||||
"recommendedLevel": 1,
|
||||
"description": "Путник потерял сумку недалеко от лесной тропы. Внутри оказались вещи, важные для его дальнейшего пути. Возвращение сумки укрепило доверие местных жителей к герою.",
|
||||
"objectives": [
|
||||
{ "id": "find_bag", "text": "Найти сумку у лесной тропы", "completed": true },
|
||||
{ "id": "bring_bag", "text": "Вернуть сумку путнику", "completed": true }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "failed_missing_courier",
|
||||
"title": "След курьера",
|
||||
"category": "Side",
|
||||
"status": "Failed",
|
||||
"recommendedLevel": 2,
|
||||
"description": "Курьер исчез до того, как герой смог выйти на его след. Местные говорят, что на дороге остались только следы копыт и обрывок ремня. Возможность узнать, кто забрал посылку, была упущена.",
|
||||
"objectives": [
|
||||
{ "id": "ask_innkeeper", "text": "Расспросить трактирщика", "completed": true },
|
||||
{ "id": "find_courier", "text": "Найти курьера до наступления ночи", "completed": false }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "contract_old_well",
|
||||
"title": "Старый колодец",
|
||||
"category": "Contract",
|
||||
"status": "Active",
|
||||
"recommendedLevel": 2,
|
||||
"description": "На окраине деревни стоит старый колодец. Ночью из него слышны голоса, а утром вокруг находят мокрые следы. Местные боятся подходить к нему, но староста считает, что причина происходящего связана с давним проклятием.",
|
||||
"objectives": [
|
||||
{ "id": "inspect_well", "text": "Осмотреть старый колодец", "completed": false },
|
||||
{ "id": "search_tracks", "text": "Найти следы возле каменной ограды", "completed": false },
|
||||
{ "id": "report_elder", "text": "Вернуться к старосте", "completed": false }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "main_find_ghost",
|
||||
"title": "Следы призрака",
|
||||
"category": "Main",
|
||||
"status": "Active",
|
||||
"recommendedLevel": 1,
|
||||
"description": "В заброшенной части деревни появился странный призрак. Местные жители говорят, что он появляется только ночью и исчезает возле старого колодца. Похоже, дух пытается привести кого-то к месту, где много лет назад случилась трагедия.",
|
||||
"objectives": [
|
||||
{ "id": "talk_to_ghost", "text": "Поговорить с призраком возле старого дома", "completed": false },
|
||||
{ "id": "inspect_well", "text": "Осмотреть старый колодец", "completed": false },
|
||||
{ "id": "return_to_elder", "text": "Вернуться к старосте", "completed": false }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "main_black_letter",
|
||||
"title": "Письмо с чёрной печатью",
|
||||
"category": "Main",
|
||||
"status": "Active",
|
||||
"recommendedLevel": 3,
|
||||
"description": "В руки героя попало письмо с чёрной восковой печатью. Имя отправителя стёрто, но на бумаге остался запах дыма и дорогих трав. Письмо упоминает встречу у северных ворот и человека, который знает правду о призраке.",
|
||||
"objectives": [
|
||||
{ "id": "read_letter", "text": "Прочитать письмо", "completed": true },
|
||||
{ "id": "go_north_gate", "text": "Добраться до северных ворот", "completed": false },
|
||||
{ "id": "find_contact", "text": "Найти человека с серебряным кольцом", "completed": false }
|
||||
]
|
||||
},
|
||||
{
|
||||
"id": "side_herbalist_help",
|
||||
"title": "Травы для лекаря",
|
||||
"category": "Side",
|
||||
"status": "Available",
|
||||
"recommendedLevel": 1,
|
||||
"description": "Лекарю нужны редкие болотные травы, чтобы приготовить настой для больных детей. Он предупредил, что растение раскрывается только на рассвете, а рядом часто появляются дикие звери.",
|
||||
"objectives": [
|
||||
{ "id": "collect_herbs", "text": "Собрать болотные травы на рассвете", "completed": false },
|
||||
{ "id": "bring_herbs", "text": "Отнести травы лекарю", "completed": false }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user