@@ -18,7 +18,7 @@ use server::action::Action;
18
18
use server:: city:: { City , MoodState } ;
19
19
use server:: combat:: { active_attackers, active_defenders, CombatPhase } ;
20
20
use server:: content:: advances:: { NAVIGATION , ROADS } ;
21
- use server:: content:: custom_phase_actions:: CustomPhaseRequest ;
21
+ use server:: content:: custom_phase_actions:: { CustomPhaseAdvanceRewardRequest , CustomPhaseRequest } ;
22
22
use server:: game:: { CulturalInfluenceResolution , CurrentMove , Game , GameState } ;
23
23
use server:: position:: Position ;
24
24
use server:: status_phase:: { StatusPhaseAction , StatusPhaseState } ;
@@ -59,7 +59,8 @@ pub enum ActiveDialog {
59
59
Retreat ,
60
60
RemoveCasualties ( RemoveCasualtiesSelection ) ,
61
61
62
- CustomPhaseRewardRequest ( Payment ) ,
62
+ CustomPhaseResourceRewardRequest ( Payment ) ,
63
+ CustomPhaseAdvanceRewardRequest ( CustomPhaseAdvanceRewardRequest ) ,
63
64
CustomPhasePaymentRequest ( Vec < Payment > ) ,
64
65
}
65
66
@@ -93,7 +94,8 @@ impl ActiveDialog {
93
94
ActiveDialog :: PlaceSettler => "place settler" ,
94
95
ActiveDialog :: Retreat => "retreat" ,
95
96
ActiveDialog :: RemoveCasualties ( _) => "remove casualties" ,
96
- ActiveDialog :: CustomPhaseRewardRequest ( _) => "trade route selection" ,
97
+ ActiveDialog :: CustomPhaseResourceRewardRequest ( _) => "trade route selection" ,
98
+ ActiveDialog :: CustomPhaseAdvanceRewardRequest ( _) => "advance selection" ,
97
99
ActiveDialog :: CustomPhasePaymentRequest ( _) => "custom phase payment request" ,
98
100
}
99
101
}
@@ -185,18 +187,31 @@ impl ActiveDialog {
185
187
}
186
188
) ] ,
187
189
ActiveDialog :: WaitingForUpdate => vec ! [ "Waiting for server update" . to_string( ) ] ,
188
- ActiveDialog :: CustomPhaseRewardRequest ( _) => {
189
- vec ! [ "Select trade route reward" . to_string( ) ]
190
- }
191
- ActiveDialog :: CustomPhasePaymentRequest ( _r) => {
192
- match & rc. game . custom_phase_state . current . as_ref ( ) . unwrap ( ) . origin {
193
- EventOrigin :: Advance ( a) => advance_help ( rc, a) ,
194
- _ => vec ! [ ] , // TODO
195
- }
196
- }
190
+ ActiveDialog :: CustomPhaseResourceRewardRequest ( _)
191
+ | ActiveDialog :: CustomPhaseAdvanceRewardRequest ( _)
192
+ | ActiveDialog :: CustomPhasePaymentRequest ( _) => Self :: event_help ( rc) ,
193
+ }
194
+ }
195
+
196
+ #[ must_use]
197
+ pub fn event_help ( rc : & RenderContext ) -> Vec < String > {
198
+ match & Self :: event_origin ( rc) {
199
+ EventOrigin :: Advance ( a) => advance_help ( rc, a) ,
200
+ _ => vec ! [ ] , // TODO
197
201
}
198
202
}
199
203
204
+ #[ must_use]
205
+ pub fn event_origin ( rc : & RenderContext ) -> EventOrigin {
206
+ rc. game
207
+ . custom_phase_state
208
+ . current
209
+ . as_ref ( )
210
+ . unwrap ( )
211
+ . origin
212
+ . clone ( )
213
+ }
214
+
200
215
#[ must_use]
201
216
pub fn show_for_other_player ( & self ) -> bool {
202
217
matches ! ( self , ActiveDialog :: Log | ActiveDialog :: DetermineFirstPlayer ) || self . is_advance ( )
@@ -221,6 +236,7 @@ impl ActiveDialog {
221
236
| ActiveDialog :: AdvancePayment ( _)
222
237
| ActiveDialog :: ChangeGovernmentType
223
238
| ActiveDialog :: ChooseAdditionalAdvances ( _)
239
+ | ActiveDialog :: CustomPhaseAdvanceRewardRequest ( _)
224
240
)
225
241
}
226
242
}
@@ -525,8 +541,13 @@ impl State {
525
541
} )
526
542
. collect ( ) ,
527
543
) ,
528
- CustomPhaseRequest :: Reward ( r) => {
529
- ActiveDialog :: CustomPhaseRewardRequest ( Payment :: new_gain ( & r. reward , & r. name ) )
544
+ CustomPhaseRequest :: ResourceReward ( r) => {
545
+ ActiveDialog :: CustomPhaseResourceRewardRequest ( Payment :: new_gain (
546
+ & r. reward , & r. name ,
547
+ ) )
548
+ }
549
+ CustomPhaseRequest :: AdvanceReward ( r) => {
550
+ ActiveDialog :: CustomPhaseAdvanceRewardRequest ( r. clone ( ) )
530
551
}
531
552
} ;
532
553
}
0 commit comments