1+ #nullable enable
2+ using System . Linq ;
3+ using DataTool . Helper ;
4+ using TankLib ;
5+ using TankLib . STU . Types ;
6+
7+ namespace DataTool . DataModels ;
8+
9+ public class Challenge {
10+ public teResourceGUID GUID { get ; set ; }
11+ public string ? Name { get ; set ; }
12+ public string ? Description { get ; set ; }
13+
14+ public GenericGUIDValue ? Hero { get ; set ; }
15+ public teResourceGUID ? IconGUID { get ; set ; }
16+ public teResourceGUID ? SeasonGUID { get ; set ; }
17+ public teResourceGUID ? CelebrationGUID { get ; set ; }
18+ public teResourceGUID ? CategoryGUID { get ; set ; }
19+ public teResourceGUID ? SubCategoryGUID { get ; set ; }
20+
21+ public UnlockLite ? RequiredUnlock { get ; set ; }
22+ public UnlockLite ? [ ] ? Rewards { get ; set ; }
23+ public ChallengePrerequisites ? Prerequisites { get ; set ; }
24+
25+ public Challenge ( STU_F9392C2B stu , ulong key = default ) {
26+ Init ( stu , key ) ;
27+ }
28+
29+ public void Init ( STU_F9392C2B stu , ulong key = default ) {
30+ GUID = ( teResourceGUID ) key ;
31+ Name = IO . GetString ( stu . m_name ) ;
32+ Description = IO . GetString ( stu . m_description ) ;
33+ IconGUID = stu . m_544A6A4F ;
34+ CelebrationGUID = stu . m_B44A42A0 ;
35+ SeasonGUID = stu . m_29E273F8 ;
36+ CategoryGUID = stu . m_5E4619AF ? . m_id ;
37+ SubCategoryGUID = stu . m_CAF37A9E ? . m_id ;
38+ Hero = stu . m_hero != null ? new GenericGUIDValue ( stu . m_hero , HeroVM . GetName ( stu . m_hero ) ) : null ;
39+
40+ if ( stu . m_41A13472 != null ) {
41+ RequiredUnlock = Unlock . Load ( stu . m_41A13472 ) ? . ToLiteUnlock ( ) ;
42+ }
43+
44+ if ( stu . m_DEB2CEFA != null ) {
45+ Rewards = stu . m_DEB2CEFA . m_unlocks ? . Select ( x => Unlock . Load ( x ) ? . ToLiteUnlock ( ) ) . Where ( x => x != null ) . ToArray ( ) ;
46+ }
47+
48+ if ( stu . m_481F944B != null ) {
49+ Prerequisites = new ChallengePrerequisites {
50+ ChallengeGUIDs = stu . m_481F944B . m_FB667EC7 ? . Select ( x => x . m_A236519D ? . GUID ) . Where ( x => x != null ) . ToArray ( ) ?? [ ] ,
51+ RequiredCount = ( int ) stu . m_481F944B . m_amount ,
52+ } ;
53+ }
54+ }
55+
56+ public static Challenge ? Load ( ulong guid ) {
57+ var stu = STUHelper . GetInstance < STU_F9392C2B > ( guid ) ;
58+ if ( stu == null ) return null ;
59+ return new Challenge ( stu , guid ) ;
60+ }
61+
62+ public ChallengeLite ToLite ( ) {
63+ return ChallengeLite . FromChallenge ( this ) ;
64+ }
65+
66+ public class ChallengePrerequisites {
67+ public teResourceGUID ? [ ] ? ChallengeGUIDs { get ; set ; }
68+ public int RequiredCount { get ; set ; }
69+ }
70+ }
71+
72+ public class ChallengeLite {
73+ public teResourceGUID ? GUID { get ; set ; }
74+ public string ? Name { get ; set ; }
75+ public string ? Description { get ; set ; }
76+
77+ public static ChallengeLite FromChallenge ( Challenge challenge ) {
78+ return new ChallengeLite {
79+ GUID = challenge . GUID ,
80+ Name = challenge . Name ,
81+ Description = challenge . Description
82+ } ;
83+ }
84+ }
0 commit comments