Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
147 changes: 147 additions & 0 deletions ElectronicObserver/Data/GimmickQuestData.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,147 @@
using ElectronicObserver.Window.Dialog.QuestTrackerManager.Enums;
using ElectronicObserver.Window.Dialog.QuestTrackerManager.Models;
using MessagePack;

namespace ElectronicObserver.Data;

/// <summary>
/// Custom quest made for event gimmicks
/// </summary>
[MessagePackObject]
public class GimmickQuestData : IQuestData
{
/// <summary>
/// ID of the area for this custom quest
/// </summary>
[Key("world")]
public int MapArea { get; set; }

/// <summary>
/// Number of the map for this custom quest
/// </summary>
[Key("map")]
public int MapNumber { get; set; }

/// <summary>
/// Gauge number for this requirement to be active
/// </summary>
[Key("gaugeNum")]
public int GaugeNumber { get; set; }

/// <summary>
/// Gimmick type
/// </summary>
[Key("type")]
public GimmickType GimmickType { get; set; }

/// <summary>
/// If multiple gimmick of same type on a map, this is the gimmick number of it
/// </summary>
[IgnoreMember]
public int GimmickNumber { get; set; }

/// <summary>
/// If multiple gimmick of same type on a map, this is the gimmick number of it
/// </summary>
[IgnoreMember]
public string DisplayGimmickNumber => GimmickNumber > 0 ? GimmickNumber.ToString() : string.Empty;

/// <summary>
/// Quest tracker
/// </summary>
[Key("tracker")]
public TrackerModel? Tracker { get; set; }

/// <summary>
/// Quest ID (need to be set manually)
/// </summary>
[IgnoreMember]
public int QuestID { get; set; }

/// <summary>
/// 任務カテゴリ
/// </summary>
[IgnoreMember]
public int Category => (int)QuestCategory.Sortie;

/// <summary>
/// 任務出現タイプ
/// 1=デイリー, 2=ウィークリー, 3=マンスリー, 4=単発, 5=他
/// </summary>
[IgnoreMember]
public int Type => (int)QuestResetType.Never;

/// <summary>
/// Not used for custom quests (always Sortie type)
/// </summary>
[IgnoreMember]
public int LabelType => (int)QuestResetType.Unknown;

/// <summary>
/// 遂行状態
/// 1=未受領, 2=遂行中, 3=達成
/// </summary>
[IgnoreMember]
public int State { get; set; }

/// <summary>
/// Quest code
/// </summary>
[IgnoreMember]
public string Code => $"{MapArea}{MapNumber}{GimmickType.ToString()[0]}{DisplayGimmickNumber}";

/// <summary>
/// Name (TODO : translate)
/// </summary>
[IgnoreMember]
public string Name => GimmickType switch
{
GimmickType.Other => "Gimmick",
GimmickType.Unlock => "Unlock",
GimmickType.Debuff => "Armor break",
_ => ""
} + $" - {(MapArea > 20 ? "E" : $"{MapArea}-")}{MapNumber}";

/// <summary>
/// Name in japanese (TODO : UNtranslate)
/// </summary>
[IgnoreMember]
public string NameJP => Name;

/// <summary>
/// Description (TODO : translate)
/// </summary>
[IgnoreMember]
public string Description => GimmickType switch
{
GimmickType.Other => "",
GimmickType.Unlock => "Unlock a new path after completing the quest requirements",
GimmickType.Debuff => "Break the enemy armor after completing the quest requirements",
_ => ""
};

/// <summary>
/// (TODO : UNtranslate)
/// </summary>
[IgnoreMember]
public string DescriptionJP => Description;

//undone:api_bonus_flag

/// <summary>
/// True if quest is translated
/// </summary>
[IgnoreMember]
public bool Translated => true;

/// <summary>
/// Quest progress (0 = use EO progress ?)
/// </summary>
[IgnoreMember]
public int Progress => 0;

[IgnoreMember]
public int ID => QuestID;

public override string ToString() => $"[{QuestID}] {Name}";
}
85 changes: 85 additions & 0 deletions ElectronicObserver/Data/IQuestData.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ElectronicObserver.Data.Translation;

namespace ElectronicObserver.Data;

/// <summary>
/// 任務のデータを保持します。
/// </summary>
public interface IQuestData : IIdentifiable
{
public int QuestID { get; }

/// <summary>
/// 任務カテゴリ
/// </summary>
public int Category { get; }

/// <summary>
/// 任務出現タイプ
/// 1=デイリー, 2=ウィークリー, 3=マンスリー, 4=単発, 5=他
/// </summary>
public int Type { get; }

/// <summary>
/// 周期アイコン種別
/// 1=単発, 2=デイリー, 3=ウィークリー, 6=マンスリー, 7=他(輸送5と空母3,クォータリー), 100+x=イヤーリー(x月-)
/// </summary>
public int LabelType { get; }

/// <summary>
/// 遂行状態
/// 1=未受領, 2=遂行中, 3=達成
/// </summary>
public int State { get; set; }

public string Code { get; }

/// <summary>
/// Name (Translated)
/// </summary>
public string Name { get; }

/// <summary>
/// 任務名
/// </summary>
public string NameJP { get; }

/// <summary>
/// Description (Translated)
/// </summary>
public string Description { get; }

/// <summary>
/// 説明
/// </summary>
public string DescriptionJP { get; }

//undone:api_bonus_flag

/// <summary>
/// True if quest is translated
/// </summary>
public bool Translated { get; }

/// <summary>
/// 進捗
/// </summary>
public int Progress { get; }

/// <summary>
/// The quest ID
/// </summary>
public int ID => QuestID;

/// <summary>
/// Implement override of ToString (needed ?)
/// </summary>
/// <returns></returns>
public string ToString();
}
4 changes: 2 additions & 2 deletions ElectronicObserver/Data/Quest/ProgressAGo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -127,7 +127,7 @@ private int bossWinCountTemp
#endregion


public ProgressAGo(QuestData quest)
public ProgressAGo(IQuestData quest)
: base(quest, 0)
{
}
Expand Down Expand Up @@ -159,7 +159,7 @@ public override void Decrement()
}


public override void CheckProgress(QuestData q)
public override void CheckProgress(IQuestData q)
{

if (TemporaryProgress != 0)
Expand Down
2 changes: 1 addition & 1 deletion ElectronicObserver/Data/Quest/ProgressBattle.cs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public class ProgressBattle : ProgressData
private bool IsBossOnly { get; set; }


public ProgressBattle(QuestData quest, int maxCount, string lowestRank, int[] targetArea, bool isBossOnly)
public ProgressBattle(IQuestData quest, int maxCount, string lowestRank, int[] targetArea, bool isBossOnly)
: base(quest, maxCount)
{

Expand Down
2 changes: 1 addition & 1 deletion ElectronicObserver/Data/Quest/ProgressConstruction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ namespace ElectronicObserver.Data.Quest;
public class ProgressConstruction : ProgressData
{

public ProgressConstruction(QuestData quest, int maxCount)
public ProgressConstruction(IQuestData quest, int maxCount)
: base(quest, maxCount)
{
}
Expand Down
6 changes: 3 additions & 3 deletions ElectronicObserver/Data/Quest/ProgressData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public abstract class ProgressData : IIdentifiable
public bool IsCleared => ProgressPercentage >= 1.0;


public ProgressData(QuestData quest, int maxCount)
public ProgressData(IQuestData quest, int maxCount)
{
QuestID = quest.QuestID;
ProgressMax = maxCount;
Expand Down Expand Up @@ -136,7 +136,7 @@ public virtual void Decrement()
/// 実際の進捗データから、進捗度を補正します。
/// </summary>
/// <param name="q">任務データ。</param>
public virtual void CheckProgress(QuestData q)
public virtual void CheckProgress(IQuestData q)
{
ApplyTemporaryProgress(q);

Expand Down Expand Up @@ -180,7 +180,7 @@ public virtual void CheckProgress(QuestData q)

}

public virtual void ApplyTemporaryProgress(QuestData q)
public virtual void ApplyTemporaryProgress(IQuestData q)
{
if (TemporaryProgress > 0)
{
Expand Down
2 changes: 1 addition & 1 deletion ElectronicObserver/Data/Quest/ProgressDestruction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ namespace ElectronicObserver.Data.Quest;
public class ProgressDestruction : ProgressData
{

public ProgressDestruction(QuestData quest, int maxCount)
public ProgressDestruction(IQuestData quest, int maxCount)
: base(quest, maxCount)
{
}
Expand Down
2 changes: 1 addition & 1 deletion ElectronicObserver/Data/Quest/ProgressDevelopment.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ namespace ElectronicObserver.Data.Quest;
public class ProgressDevelopment : ProgressData
{

public ProgressDevelopment(QuestData quest, int maxCount)
public ProgressDevelopment(IQuestData quest, int maxCount)
: base(quest, maxCount)
{
}
Expand Down
4 changes: 2 additions & 2 deletions ElectronicObserver/Data/Quest/ProgressDiscard.cs
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ public class ProgressDiscard : ProgressData
protected int CategoryIndex { get; set; }


public ProgressDiscard(QuestData quest, int maxCount, bool countsAmount, int[] categories)
public ProgressDiscard(IQuestData quest, int maxCount, bool countsAmount, int[] categories)
: this(quest, maxCount, countsAmount, categories, 2) { }

public ProgressDiscard(QuestData quest, int maxCount, bool countsAmount, int[] categories, int categoryIndex)
public ProgressDiscard(IQuestData quest, int maxCount, bool countsAmount, int[] categories, int categoryIndex)
: base(quest, maxCount)
{
CountsAmount = countsAmount;
Expand Down
2 changes: 1 addition & 1 deletion ElectronicObserver/Data/Quest/ProgressDocking.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ namespace ElectronicObserver.Data.Quest;
public class ProgressDocking : ProgressData
{

public ProgressDocking(QuestData quest, int maxCount)
public ProgressDocking(IQuestData quest, int maxCount)
: base(quest, maxCount)
{
}
Expand Down
2 changes: 1 addition & 1 deletion ElectronicObserver/Data/Quest/ProgressExpedition.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public class ProgressExpedition : ProgressData
private HashSet<int> TargetArea { get; set; }


public ProgressExpedition(QuestData quest, int maxCount, int[] targetArea)
public ProgressExpedition(IQuestData quest, int maxCount, int[] targetArea)
: base(quest, maxCount)
{

Expand Down
2 changes: 1 addition & 1 deletion ElectronicObserver/Data/Quest/ProgressImprovement.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ namespace ElectronicObserver.Data.Quest;
public class ProgressImprovement : ProgressData
{

public ProgressImprovement(QuestData quest, int maxCount)
public ProgressImprovement(IQuestData quest, int maxCount)
: base(quest, maxCount)
{
}
Expand Down
2 changes: 1 addition & 1 deletion ElectronicObserver/Data/Quest/ProgressModernization.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ namespace ElectronicObserver.Data.Quest;
public class ProgressModernization : ProgressData
{

public ProgressModernization(QuestData quest, int maxCount)
public ProgressModernization(IQuestData quest, int maxCount)
: base(quest, maxCount)
{
}
Expand Down
4 changes: 2 additions & 2 deletions ElectronicObserver/Data/Quest/ProgressMultiBattle.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ public class ProgressMultiBattle : ProgressData
[DataMember]
private ProgressBattle[] ProgressList;

public ProgressMultiBattle(QuestData quest, IEnumerable<ProgressBattle> progressList)
public ProgressMultiBattle(IQuestData quest, IEnumerable<ProgressBattle> progressList)
: base(quest, 1)
{
ProgressList = progressList.ToArray();
Expand Down Expand Up @@ -45,7 +45,7 @@ public override void Decrement()
throw new NotSupportedException();
}

public override void CheckProgress(QuestData q)
public override void CheckProgress(IQuestData q)
{
foreach (var p in ProgressList)
p.ApplyTemporaryProgress(q);
Expand Down
4 changes: 2 additions & 2 deletions ElectronicObserver/Data/Quest/ProgressMultiDiscard.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public class ProgressMultiDiscard : ProgressData
[DataMember]
private ProgressDiscard[] ProgressList;

public ProgressMultiDiscard(QuestData quest, IEnumerable<ProgressDiscard> progressList)
public ProgressMultiDiscard(IQuestData quest, IEnumerable<ProgressDiscard> progressList)
: base(quest, 1)
{
ProgressList = progressList.ToArray();
Expand Down Expand Up @@ -45,7 +45,7 @@ public override void Decrement()
}


public override void CheckProgress(QuestData q)
public override void CheckProgress(IQuestData q)
{
foreach (var p in ProgressList)
p.ApplyTemporaryProgress(q);
Expand Down
Loading