1
1
use crate :: assets:: Assets ;
2
2
use crate :: client:: { Features , GameSyncRequest } ;
3
3
use crate :: collect_ui:: CollectResources ;
4
- use crate :: combat_ui:: RemoveCasualtiesSelection ;
5
4
use crate :: construct_ui:: ConstructionPayment ;
5
+ use crate :: custom_phase_ui:: UnitsSelection ;
6
6
use crate :: dialog_ui:: { BaseOrCustomAction , BaseOrCustomDialog } ;
7
7
use crate :: event_ui:: { custom_phase_event_help, event_help, pay_help} ;
8
8
use crate :: happiness_ui:: IncreaseHappinessConfig ;
@@ -16,16 +16,13 @@ use crate::status_phase_ui::ChooseAdditionalAdvances;
16
16
use macroquad:: prelude:: * ;
17
17
use server:: action:: Action ;
18
18
use server:: city:: { City , MoodState } ;
19
- use server:: combat:: { active_attackers, active_defenders, CombatPhase } ;
20
19
use server:: content:: custom_phase_actions:: {
21
- CustomPhaseAdvanceRewardRequest , CustomPhasePositionRequest , CustomPhaseRequest ,
22
- CustomPhaseUnitRequest ,
20
+ AdvanceRewardRequest , CustomPhaseRequest , PositionRequest , UnitTypeRequest ,
23
21
} ;
24
22
use server:: events:: EventOrigin ;
25
23
use server:: game:: { CulturalInfluenceResolution , CurrentMove , Game , GameState } ;
26
24
use server:: position:: Position ;
27
25
use server:: status_phase:: { StatusPhaseAction , StatusPhaseState } ;
28
- use server:: unit:: carried_units;
29
26
30
27
#[ derive( Clone ) ]
31
28
pub enum ActiveDialog {
@@ -56,20 +53,17 @@ pub enum ActiveDialog {
56
53
ChangeGovernmentType ,
57
54
ChooseAdditionalAdvances ( ChooseAdditionalAdvances ) ,
58
55
59
- // combat
60
- PlayActionCard ,
61
- Retreat ,
62
- RemoveCasualties ( RemoveCasualtiesSelection ) ,
63
-
64
56
// custom
65
57
Sports ( ( Payment , Position ) ) ,
66
58
Theaters ( Payment ) ,
67
59
Taxes ( Payment ) ,
68
- CustomPhaseResourceRewardRequest ( Payment ) ,
69
- CustomPhaseAdvanceRewardRequest ( CustomPhaseAdvanceRewardRequest ) ,
70
- CustomPhasePaymentRequest ( Vec < Payment > ) ,
71
- CustomPhasePositionRequest ( CustomPhasePositionRequest ) ,
72
- CustomPhaseUnitRequest ( CustomPhaseUnitRequest ) ,
60
+ ResourceRewardRequest ( Payment ) ,
61
+ AdvanceRewardRequest ( AdvanceRewardRequest ) ,
62
+ PaymentRequest ( Vec < Payment > ) ,
63
+ PositionRequest ( PositionRequest ) ,
64
+ UnitTypeRequest ( UnitTypeRequest ) ,
65
+ UnitsRequest ( UnitsSelection ) ,
66
+ BoolRequest ,
73
67
}
74
68
75
69
impl ActiveDialog {
@@ -98,17 +92,16 @@ impl ActiveDialog {
98
92
ActiveDialog :: DetermineFirstPlayer => "determine first player" ,
99
93
ActiveDialog :: ChangeGovernmentType => "change government type" ,
100
94
ActiveDialog :: ChooseAdditionalAdvances ( _) => "choose additional advances" ,
101
- ActiveDialog :: PlayActionCard => "play action card" ,
102
- ActiveDialog :: Retreat => "retreat" ,
103
- ActiveDialog :: RemoveCasualties ( _) => "remove casualties" ,
104
95
ActiveDialog :: Sports ( _) => "sports" ,
105
96
ActiveDialog :: Theaters ( _) => "theaters" ,
106
97
ActiveDialog :: Taxes ( _) => "collect taxes" ,
107
- ActiveDialog :: CustomPhaseResourceRewardRequest ( _) => "trade route selection" ,
108
- ActiveDialog :: CustomPhaseAdvanceRewardRequest ( _) => "advance selection" ,
109
- ActiveDialog :: CustomPhasePaymentRequest ( _) => "custom phase payment request" ,
110
- ActiveDialog :: CustomPhasePositionRequest ( _) => "custom phase position request" ,
111
- ActiveDialog :: CustomPhaseUnitRequest ( _) => "custom phase unit request" ,
98
+ ActiveDialog :: ResourceRewardRequest ( _) => "trade route selection" ,
99
+ ActiveDialog :: AdvanceRewardRequest ( _) => "advance selection" ,
100
+ ActiveDialog :: PaymentRequest ( _) => "custom phase payment request" ,
101
+ ActiveDialog :: PositionRequest ( _) => "custom phase position request" ,
102
+ ActiveDialog :: UnitTypeRequest ( _) => "custom phase unit request" ,
103
+ ActiveDialog :: UnitsRequest ( _) => "custom phase units request" ,
104
+ ActiveDialog :: BoolRequest => "custom phase bool request" ,
112
105
}
113
106
}
114
107
@@ -166,16 +159,6 @@ impl ActiveDialog {
166
159
ActiveDialog :: ChooseAdditionalAdvances ( _) => {
167
160
vec ! [ "Click on an advance to choose it" . to_string( ) ]
168
161
}
169
- ActiveDialog :: PlayActionCard => vec ! [ "Click on an action card to play it" . to_string( ) ] ,
170
- ActiveDialog :: Retreat => vec ! [ "Do you want to retreat?" . to_string( ) ] ,
171
- ActiveDialog :: RemoveCasualties ( r) => vec ! [ format!(
172
- "Remove {} units: click on a unit to remove it" ,
173
- if r. needed_carried > 0 {
174
- format!( "{} ships and {} carried units" , r. needed, r. needed_carried)
175
- } else {
176
- r. needed. to_string( )
177
- }
178
- ) ] ,
179
162
ActiveDialog :: WaitingForUpdate => vec ! [ "Waiting for server update" . to_string( ) ] ,
180
163
ActiveDialog :: Sports ( _) => {
181
164
event_help ( rc, & EventOrigin :: Advance ( "Sports" . to_string ( ) ) , true )
@@ -186,15 +169,13 @@ impl ActiveDialog {
186
169
ActiveDialog :: Theaters ( _) => {
187
170
event_help ( rc, & EventOrigin :: Advance ( "Theaters" . to_string ( ) ) , true )
188
171
}
189
- ActiveDialog :: CustomPhaseResourceRewardRequest ( _)
190
- | ActiveDialog :: CustomPhaseAdvanceRewardRequest ( _)
191
- | ActiveDialog :: CustomPhasePaymentRequest ( _) => custom_phase_event_help ( rc, None ) ,
192
- ActiveDialog :: CustomPhasePositionRequest ( r) => {
193
- custom_phase_event_help ( rc, r. description . as_ref ( ) )
194
- }
195
- ActiveDialog :: CustomPhaseUnitRequest ( r) => {
196
- custom_phase_event_help ( rc, r. description . as_ref ( ) )
197
- }
172
+ ActiveDialog :: ResourceRewardRequest ( _)
173
+ | ActiveDialog :: AdvanceRewardRequest ( _)
174
+ | ActiveDialog :: PaymentRequest ( _)
175
+ | ActiveDialog :: BoolRequest => custom_phase_event_help ( rc, None ) ,
176
+ ActiveDialog :: PositionRequest ( r) => custom_phase_event_help ( rc, r. description . as_ref ( ) ) ,
177
+ ActiveDialog :: UnitTypeRequest ( r) => custom_phase_event_help ( rc, r. description . as_ref ( ) ) ,
178
+ ActiveDialog :: UnitsRequest ( r) => custom_phase_event_help ( rc, r. description . as_ref ( ) ) ,
198
179
}
199
180
}
200
181
@@ -245,7 +226,7 @@ impl ActiveDialog {
245
226
| ActiveDialog :: AdvancePayment ( _)
246
227
| ActiveDialog :: ChangeGovernmentType
247
228
| ActiveDialog :: ChooseAdditionalAdvances ( _)
248
- | ActiveDialog :: CustomPhaseAdvanceRewardRequest ( _)
229
+ | ActiveDialog :: AdvanceRewardRequest ( _)
249
230
)
250
231
}
251
232
}
@@ -538,9 +519,9 @@ impl State {
538
519
539
520
#[ must_use]
540
521
pub fn game_state_dialog ( & self , game : & Game ) -> ActiveDialog {
541
- if let Some ( e) = & game. custom_phase_state . current {
522
+ if let Some ( e) = & game. current_custom_phase_event ( ) {
542
523
return match & e. request {
543
- CustomPhaseRequest :: Payment ( r) => ActiveDialog :: CustomPhasePaymentRequest (
524
+ CustomPhaseRequest :: Payment ( r) => ActiveDialog :: PaymentRequest (
544
525
r. iter ( )
545
526
. map ( |p| {
546
527
Payment :: new (
@@ -553,19 +534,17 @@ impl State {
553
534
. collect ( ) ,
554
535
) ,
555
536
CustomPhaseRequest :: ResourceReward ( r) => {
556
- ActiveDialog :: CustomPhaseResourceRewardRequest ( Payment :: new_gain (
557
- & r. reward , & r. name ,
558
- ) )
537
+ ActiveDialog :: ResourceRewardRequest ( Payment :: new_gain ( & r. reward , & r. name ) )
559
538
}
560
539
CustomPhaseRequest :: AdvanceReward ( r) => {
561
- ActiveDialog :: CustomPhaseAdvanceRewardRequest ( r. clone ( ) )
562
- }
563
- CustomPhaseRequest :: SelectPosition ( r) => {
564
- ActiveDialog :: CustomPhasePositionRequest ( r. clone ( ) )
565
- }
566
- CustomPhaseRequest :: SelectUnit ( r) => {
567
- ActiveDialog :: CustomPhaseUnitRequest ( r. clone ( ) )
540
+ ActiveDialog :: AdvanceRewardRequest ( r. clone ( ) )
568
541
}
542
+ CustomPhaseRequest :: SelectPosition ( r) => ActiveDialog :: PositionRequest ( r. clone ( ) ) ,
543
+ CustomPhaseRequest :: SelectUnitType ( r) => ActiveDialog :: UnitTypeRequest ( r. clone ( ) ) ,
544
+ CustomPhaseRequest :: SelectUnits ( r) => ActiveDialog :: UnitsRequest (
545
+ UnitsSelection :: new ( r. needed , r. choices . clone ( ) , r. description . clone ( ) ) ,
546
+ ) ,
547
+ CustomPhaseRequest :: BoolRequest => ActiveDialog :: BoolRequest ,
569
548
} ;
570
549
}
571
550
match & game. state {
@@ -587,39 +566,7 @@ impl State {
587
566
StatusPhaseState :: ChangeGovernmentType => ActiveDialog :: ChangeGovernmentType ,
588
567
StatusPhaseState :: DetermineFirstPlayer => ActiveDialog :: DetermineFirstPlayer ,
589
568
} ,
590
- GameState :: Combat ( c) => match & c. phase {
591
- CombatPhase :: PlayActionCard ( _) => ActiveDialog :: PlayActionCard ,
592
- CombatPhase :: RemoveCasualties ( r) => {
593
- let ( position, selectable) = if r. player == c. attacker {
594
- (
595
- c. attacker_position ,
596
- active_attackers ( game, c. attacker , & c. attackers , c. defender_position )
597
- . clone ( )
598
- . into_iter ( )
599
- . chain ( c. attackers . iter ( ) . flat_map ( |a| {
600
- let units = carried_units ( * a, game. get_player ( r. player ) ) ;
601
- units
602
- } ) )
603
- . collect ( ) ,
604
- )
605
- } else if r. player == c. defender {
606
- (
607
- c. defender_position ,
608
- active_defenders ( game, c. defender , c. defender_position ) ,
609
- )
610
- } else {
611
- panic ! ( "player should be either defender or attacker" )
612
- } ;
613
- ActiveDialog :: RemoveCasualties ( RemoveCasualtiesSelection :: new (
614
- r. player ,
615
- position,
616
- r. casualties ,
617
- r. carried_units_casualties ,
618
- selectable,
619
- ) )
620
- }
621
- CombatPhase :: Retreat => ActiveDialog :: Retreat ,
622
- } ,
569
+ GameState :: Combat ( _) => panic ! ( "should be in custom phase" ) ,
623
570
GameState :: ExploreResolution ( r) => {
624
571
ActiveDialog :: ExploreResolution ( ExploreResolutionConfig {
625
572
block : r. block . clone ( ) ,
0 commit comments