Skip to content

Commit e90b512

Browse files
authored
features/patch 2 (#2)
* add interface for quest repo * add quest repo signals * Move away from brandonlamb dir
1 parent d9d0b27 commit e90b512

File tree

15 files changed

+134
-45
lines changed

15 files changed

+134
-45
lines changed

addons/com.brandonlamb.quest/domain/quest_system.gd

Lines changed: 0 additions & 7 deletions
This file was deleted.

addons/com.brandonlamb.quest/memory/quest_repository.gd

Lines changed: 0 additions & 26 deletions
This file was deleted.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
extends Reference
2+
3+
signal quest_created(quest)
4+
signal quest_deleted(quest)
5+
signal quest_saved(quest)
6+
signal quests_cleared()
7+
8+
"""
9+
Find quest by ID
10+
@param int id
11+
@return Quest
12+
"""
13+
func find_by_id(id): pass
14+
15+
"""
16+
Find all quests
17+
@return Quest[]
18+
"""
19+
func find_all(): pass
20+
21+
"""
22+
Clear all quests
23+
"""
24+
func clear(): pass
25+
26+
"""
27+
Save quest
28+
@param Quest quest
29+
"""
30+
func save(quest): pass
31+
32+
"""
33+
Delete quest
34+
@param Quest quest
35+
"""
36+
func delete(quest): pass
37+
38+
"""
39+
Delete quest by ID
40+
@param int id
41+
"""
42+
func delete_by_id(id): pass
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
extends Reference
2+
3+
const Goal = preload("res://addons/godot-quest-system/domain/goal.gd")
4+
const Quest = preload("res://addons/godot-quest-system/domain/quest.gd")
5+
const Requirement = preload("res://addons/godot-quest-system/domain/requirement.gd")
6+
const RequirementProcessor = preload("res://addons/godot-quest-system/domain/requirement_processor.gd")
7+
const Reward = preload("res://addons/godot-quest-system/domain/reward.gd")

addons/com.brandonlamb.quest/memory/quest_factory.gd renamed to addons/godot-quest-system/memory/quest_factory.gd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
extends Reference
22

3-
const Quest = preload("res://addons/com.brandonlamb.quest/domain/quest.gd")
3+
const Quest = preload("res://addons/godot-quest-system/domain/quest.gd")
44
const QuestStatus = Quest.Status
55

66
static func create_from_array(quests):
@@ -24,4 +24,4 @@ static func create_from_static():
2424
for q in data:
2525
quests.append(Quest.new(q[0], q[1], q[2]))
2626

27-
return quests
27+
return quests
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
extends "res://addons/godot-quest-system/domain/quest_repository.gd"
2+
3+
const Quest = preload("res://addons/godot-quest-system/domain/quest.gd")
4+
5+
const _quests = []
6+
const _questsMap = {}
7+
8+
"""
9+
Constructor - accepts an array of quests to initialize the repository with
10+
@param Quest[] quests
11+
"""
12+
func _init(quests):
13+
if typeof(quests) == TYPE_ARRAY:
14+
_load_from_array(quests)
15+
16+
"""
17+
Load quests from array of quests
18+
@param Quest[] quests
19+
"""
20+
func _load_from_array(quests):
21+
for i in quests:
22+
_quests.append(i)
23+
_questsMap[i.id] = i
24+
25+
"""
26+
@override
27+
"""
28+
func find_by_id(id):
29+
if _questsMap.has(id):
30+
return _questsMap[id]
31+
return Quest.new()
32+
33+
"""
34+
@override
35+
"""
36+
func find_all():
37+
return _quests
38+
39+
"""
40+
@override
41+
"""
42+
func clear():
43+
_quests = []
44+
_questsMap = {}
45+
46+
"""
47+
@override
48+
"""
49+
func save(quest):
50+
pass
51+
52+
"""
53+
@override
54+
"""
55+
func delete(quest):
56+
for i in range(0, _quests.size()):
57+
if _quests[i].id == quest.id:
58+
_quests.remove(i)
59+
60+
if _questsMap.has(quest.id):
61+
_questsMap.erase(quest.id)
62+
63+
"""
64+
@override
65+
"""
66+
func delete_by_id(id):
67+
for i in range(0, _quests.size()):
68+
if _quests[i].id == id:
69+
_quests.remove(i)
70+
71+
if _questsMap.has(id):
72+
_questsMap.erase(id)

addons/com.brandonlamb.quest/sqlite/test.gd renamed to addons/godot-quest-system/sqlite/test.gd

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
extends Node
22

3-
var SQLite = preload("res://addons/com.brandonlamb.quest/sqlite/sqlite.gdns")
3+
var SQLite = preload("res://addons/godot-quest-system/sqlite/sqlite.gdns")
44
var db = SQLite.new()
55

66
func _ready():

addons/com.brandonlamb.quest/sqlite/test.tscn renamed to addons/godot-quest-system/sqlite/test.tscn

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[gd_scene load_steps=2 format=2]
22

3-
[ext_resource path="res://addons/com.brandonlamb.quest/sqlite/test.gd" type="Script" id=1]
3+
[ext_resource path="res://addons/godot-quest-system/sqlite/test.gd" type="Script" id=1]
44

55
[node name="test" type="Control"]
66

example/main.gd

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
11
extends Node2D
22

33
const Quest = preload("res://addons/com.brandonlamb.quest/domain/quest.gd")
4-
const QuestStatus = Quest.Status
54
const QuestRepo = preload("res://addons/com.brandonlamb.quest/memory/quest_repository.gd")
65
const QuestFactory = preload("res://addons/com.brandonlamb.quest/memory/quest_factory.gd")
76

87
func _ready():
98
var questRepo = QuestRepo.new(QuestFactory.create_from_static())
9+
var quests = questRepo.find_all()
1010

11-
for i in questRepo.find_all():
11+
for i in quests:
1212
i.connect("started", self, "_on_quest_started")
1313
i.start()
14-
_debug_quest(i)
1514

1615
var quest = questRepo.find_by_id(1)
17-
quest.status = QuestStatus.FINISHED
18-
_debug_quest(quest)
16+
quest.status = "finished"
17+
print(quest.to_string())
1918
print("quest.to_string()=", quest.to_string())
2019

20+
quests[2].status = "started"
21+
22+
for i in quests:
23+
print(i.to_string())
24+
2125
func _on_quest_started(e):
2226
print("_on_quest_started: ", e.name)
23-
24-
func _debug_quest(q):
25-
print(q.to_string())

0 commit comments

Comments
 (0)