Skip to content

Commit 3696012

Browse files
authored
Merge pull request #540 from pacampbell/fix_quest_bugs
refactor: Replace VariantId with QuestScheduleId
2 parents 235f6ba + 6d22055 commit 3696012

57 files changed

Lines changed: 932 additions & 1087 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Arrowgene.Ddon.Database/Arrowgene.Ddon.Database.csproj

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,18 @@
3333
</ContentWithTargetPath>
3434
</ItemGroup>
3535

36+
<ItemGroup>
37+
<ContentWithTargetPath Remove="files\database\script\migration_quest_variant_refactor.sql" />
38+
</ItemGroup>
39+
3640
<ItemGroup>
3741
<ProjectReference Include="..\Arrowgene.Ddon.Shared\Arrowgene.Ddon.Shared.csproj" />
3842
</ItemGroup>
3943

44+
<ItemGroup>
45+
<None Update="Files\Database\Script\migration_quest_variant_refactor.sql">
46+
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
47+
</None>
48+
</ItemGroup>
49+
4050
</Project>

Arrowgene.Ddon.Database/DdonDatabaseBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public static class DdonDatabaseBuilder
1414
private static readonly ILogger Logger = LogProvider.Logger<Logger>(typeof(DdonDatabaseBuilder));
1515
private const string DefaultSchemaFile = "Script/schema_sqlite.sql";
1616

17-
public const uint Version = 20;
17+
public const uint Version = 21;
1818

1919
public static IDatabase Build(DatabaseSetting settings)
2020
{
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
ALTER TABLE "ddon_priority_quests"
2+
RENAME COLUMN "quest_id" to "quest_schedule_id";
3+
4+
ALTER TABLE "ddon_reward_box"
5+
RENAME COLUMN "quest_id" to "quest_schedule_id";
6+
7+
ALTER TABLE "ddon_reward_box"
8+
DROP "variant_quest_id";
9+
10+
ALTER TABLE "ddon_quest_progress"
11+
RENAME COLUMN "quest_id" to "quest_schedule_id";
12+
13+
ALTER TABLE "ddon_quest_progress"
14+
DROP "variant_quest_id";

Arrowgene.Ddon.Database/Files/Database/Script/schema_sqlite.sql

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -536,23 +536,21 @@ CREATE TABLE IF NOT EXISTS "ddon_reward_box"
536536
(
537537
"uniq_reward_id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
538538
"character_common_id" INTEGER NOT NULL,
539-
"quest_id" INTEGER NOT NULL,
539+
"quest_schedule_id" INTEGER NOT NULL,
540540
"num_random_rewards" INTEGER NOT NULL,
541541
"random_reward0_index" INTEGER NOT NULL,
542542
"random_reward1_index" INTEGER NOT NULL,
543543
"random_reward2_index" INTEGER NOT NULL,
544544
"random_reward3_index" INTEGER NOT NULL,
545-
"variant_quest_id" INTEGER NOT NULL DEFAULT 0,
546545
CONSTRAINT "fk_ddon_reward_box_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE
547546
);
548547

549548
CREATE TABLE IF NOT EXISTS "ddon_quest_progress"
550549
(
551550
"character_common_id" INTEGER NOT NULL,
552551
"quest_type" INTEGER NOT NULL,
553-
"quest_id" INTEGER NOT NULL,
552+
"quest_schedule_id" INTEGER NOT NULL,
554553
"step" INTEGER NOT NULL,
555-
"variant_quest_id" INTEGER NOT NULL,
556554
CONSTRAINT "fk_ddon_quest_progress_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE
557555
);
558556

@@ -568,7 +566,7 @@ CREATE TABLE IF NOT EXISTS "ddon_completed_quests"
568566
CREATE TABLE IF NOT EXISTS "ddon_priority_quests"
569567
(
570568
"character_common_id" INTEGER NOT NULL,
571-
"quest_id" INTEGER NOT NULL,
569+
"quest_schedule_id" INTEGER NOT NULL,
572570
CONSTRAINT "fk_ddon_priority_quests_character_common_id" FOREIGN KEY ("character_common_id") REFERENCES "ddon_character_common" ("character_common_id") ON DELETE CASCADE
573571
);
574572

Arrowgene.Ddon.Database/IDatabase.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -433,16 +433,16 @@ bool ReplaceCompletedQuest(
433433
);
434434

435435
// Quest Progress
436-
bool InsertQuestProgress(uint characterCommonId, QuestId questId, QuestType questType, uint step, uint variantId=0);
437-
bool UpdateQuestProgress(uint characterCommonId, QuestId questId, QuestType questType, uint step);
438-
bool RemoveQuestProgress(uint characterCommonId, QuestId questId, QuestType questType);
436+
bool InsertQuestProgress(uint characterCommonId, uint questScheduleId, QuestType questType, uint step);
437+
bool UpdateQuestProgress(uint characterCommonId, uint questScheduleId, QuestType questType, uint step);
438+
bool RemoveQuestProgress(uint characterCommonId, uint questScheduleId, QuestType questType);
439439
List<QuestProgress> GetQuestProgressByType(uint characterCommonId, QuestType questType);
440-
QuestProgress GetQuestProgressById(uint characterCommonId, QuestId questId);
440+
QuestProgress GetQuestProgressById(uint characterCommonId, uint questScheduleId);
441441

442442
// Quest Priority
443-
bool InsertPriorityQuest(uint characterCommonId, QuestId questId);
444-
List<QuestId> GetPriorityQuests(uint characterCommonId);
445-
bool DeletePriorityQuest(uint characterCommonId, QuestId questId);
443+
bool InsertPriorityQuest(uint characterCommonId, uint questScheduleId);
444+
List<uint> GetPriorityQuestScheduleIds(uint characterCommonId);
445+
bool DeletePriorityQuest(uint characterCommonId, uint questScheduleId);
446446

447447
// System mail
448448
long InsertSystemMailAttachment(SystemMailAttachment attachment);

Arrowgene.Ddon.Database/Sql/Core/DdonSqlDbQuestReward.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public abstract partial class DdonSqlDb<TCon, TCom, TReader> : SqlDb<TCon, TCom,
1919
private readonly int MAX_RANDOM_REWARDS = 4;
2020
protected static readonly string[] RewardBoxFields = new string[]
2121
{
22-
/* uniq_reward_id */ "character_common_id", "quest_id", "num_random_rewards", "random_reward0_index", "random_reward1_index", "random_reward2_index", "random_reward3_index", "variant_quest_id"
22+
/* uniq_reward_id */ "character_common_id", "quest_schedule_id", "num_random_rewards", "random_reward0_index", "random_reward1_index", "random_reward2_index", "random_reward3_index"
2323
};
2424

2525
private readonly string SqlInsertRewardBoxItems = $"INSERT INTO \"ddon_reward_box\" ({BuildQueryField(RewardBoxFields)}) VALUES ({BuildQueryInsert(RewardBoxFields)});";
@@ -37,9 +37,8 @@ public bool InsertBoxRewardItems(TCon conn, uint commonId, QuestBoxRewards rewar
3737
return ExecuteNonQuery(conn, SqlInsertRewardBoxItems, command =>
3838
{
3939
AddParameter(command, "character_common_id", commonId);
40-
AddParameter(command, "quest_id", (uint) rewards.QuestId);
40+
AddParameter(command, "quest_schedule_id", rewards.QuestScheduleId);
4141
AddParameter(command, "num_random_rewards", rewards.NumRandomRewards);
42-
AddParameter(command, "variant_quest_id", rewards.VariantId);
4342

4443
int i;
4544
for(i = 0; i < rewards.NumRandomRewards; i++)
@@ -101,9 +100,8 @@ private QuestBoxRewards ReadDatabaseQuestBoxReward(TReader reader)
101100
QuestBoxRewards obj = new QuestBoxRewards();
102101
obj.UniqRewardId = GetUInt32(reader, "uniq_reward_id");
103102
obj.CharacterCommonId = GetUInt32(reader, "character_common_id");
104-
obj.QuestId = (QuestId) GetUInt32(reader, "quest_id");
105103
obj.NumRandomRewards = GetInt32(reader, "num_random_rewards");
106-
obj.VariantId = GetUInt32(reader, "variant_quest_id");
104+
obj.QuestScheduleId = GetUInt32(reader, "quest_schedule_id");
107105

108106
for (int i = 0; i < obj.NumRandomRewards; i++)
109107
{

Arrowgene.Ddon.Database/Sql/Core/DdonSqlPriorityQuests.cs

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,38 +20,38 @@ public abstract partial class DdonSqlDb<TCon, TCom, TReader> : SqlDb<TCon, TCom,
2020
/* ddon_completed_quests */
2121
protected static readonly string[] PriorityQuestFields = new string[]
2222
{
23-
"character_common_id", "quest_id"
23+
"character_common_id", "quest_schedule_id"
2424
};
2525

2626
private readonly string SqlInsertIfNotExistPriorityQuestId = $"INSERT INTO \"ddon_priority_quests\" ({BuildQueryField(PriorityQuestFields)}) SELECT " +
2727
$"{BuildQueryInsert(PriorityQuestFields)} WHERE NOT EXISTS (SELECT 1 FROM \"ddon_priority_quests\" WHERE " +
28-
$"\"character_common_id\" = @character_common_id AND \"quest_id\" = @quest_id);";
28+
$"\"character_common_id\" = @character_common_id AND \"quest_schedule_id\" = @quest_schedule_id);";
2929
private readonly string SqlSelectPriorityQuests = $"SELECT {BuildQueryField(PriorityQuestFields)} FROM \"ddon_priority_quests\" WHERE \"character_common_id\" = @character_common_id;";
30-
private readonly string SqlDeletePriorityQuest = $"DELETE FROM \"ddon_priority_quests\" WHERE \"character_common_id\" = @character_common_id AND \"quest_id\" = @quest_id;";
30+
private readonly string SqlDeletePriorityQuest = $"DELETE FROM \"ddon_priority_quests\" WHERE \"character_common_id\" = @character_common_id AND \"quest_schedule_id\" = @quest_schedule_id;";
3131

32-
public bool InsertPriorityQuest(uint characterCommonId, QuestId questId)
32+
public bool InsertPriorityQuest(uint characterCommonId, uint questScheduleId)
3333
{
3434
using TCon connection = OpenNewConnection();
35-
return InsertPriorityQuest(connection, characterCommonId, questId);
35+
return InsertPriorityQuest(connection, characterCommonId, questScheduleId);
3636
}
3737

38-
public bool InsertPriorityQuest(TCon connection, uint characterCommonId, QuestId questId)
38+
public bool InsertPriorityQuest(TCon connection, uint characterCommonId, uint questScheduleId)
3939
{
4040
return ExecuteNonQuery(connection, SqlInsertIfNotExistPriorityQuestId, command =>
4141
{
4242
AddParameter(command, "character_common_id", characterCommonId);
43-
AddParameter(command, "quest_id", (uint)questId);
43+
AddParameter(command, "quest_schedule_id", questScheduleId);
4444
}) == 1;
4545
}
4646

47-
public List<QuestId> GetPriorityQuests(uint characterCommonId)
47+
public List<uint> GetPriorityQuestScheduleIds(uint characterCommonId)
4848
{
4949
using TCon connection = OpenNewConnection();
5050
return GetPriorityQuests(connection, characterCommonId);
5151
}
52-
public List<QuestId> GetPriorityQuests(TCon connection, uint characterCommonId)
52+
public List<uint> GetPriorityQuests(TCon connection, uint characterCommonId)
5353
{
54-
List<QuestId> results = new List<QuestId>();
54+
List<uint> results = new List<uint>();
5555
ExecuteInTransaction(conn =>
5656
{
5757
ExecuteReader(conn, SqlSelectPriorityQuests,
@@ -60,25 +60,25 @@ public List<QuestId> GetPriorityQuests(TCon connection, uint characterCommonId)
6060
}, reader => {
6161
while (reader.Read())
6262
{
63-
results.Add((QuestId)GetUInt32(reader, "quest_id"));
63+
results.Add(GetUInt32(reader, "quest_schedule_id"));
6464
}
6565
});
6666
});
6767
return results;
6868
}
6969

70-
public bool DeletePriorityQuest(uint characterCommonId, QuestId questId)
70+
public bool DeletePriorityQuest(uint characterCommonId, uint questScheduleId)
7171
{
7272
using TCon connection = OpenNewConnection();
73-
return DeletePriorityQuest(connection, characterCommonId, questId);
73+
return DeletePriorityQuest(connection, characterCommonId, questScheduleId);
7474
}
7575

76-
public bool DeletePriorityQuest(TCon connection, uint characterCommonId, QuestId questId)
76+
public bool DeletePriorityQuest(TCon connection, uint characterCommonId, uint questScheduleId)
7777
{
7878
return ExecuteNonQuery(connection, SqlDeletePriorityQuest, command =>
7979
{
8080
AddParameter(command, "@character_common_id", characterCommonId);
81-
AddParameter(command, "quest_id", (uint)questId);
81+
AddParameter(command, "quest_schedule_id", questScheduleId);
8282
}) == 1;
8383
}
8484
}

0 commit comments

Comments
 (0)