11using System ;
2- using System . Collections . Generic ;
2+ using System . Threading . Tasks ;
33using Godot ;
44
55/// <summary>
@@ -15,23 +15,23 @@ public partial class EventDatabase
1515 [ "EVENT_EVENT1_OPTION1" , "EVENT_EVENT1_OPTION2" , "EVENT_EVENT1_OPTION3" ] ,
1616 [ "EVENT_EVENT1_OUTCOME1" , "EVENT_EVENT1_OUTCOME2" , "EVENT_EVENT1_OUTCOME3" ] ,
1717 [
18- ( self ) =>
18+ async ( self , node ) =>
1919 {
2020 int randIndex = StageProducer . GlobalRng . RandiRange (
2121 0 ,
2222 StageProducer . PlayerStats . CurNotes . Length
2323 ) ;
2424 StageProducer . PlayerStats . RemoveNote ( randIndex ) ;
2525 } ,
26- ( self ) =>
26+ async ( self , node ) =>
2727 {
2828 int randIndex = StageProducer . GlobalRng . RandiRange (
2929 0 ,
3030 StageProducer . PlayerStats . CurRelics . Length
3131 ) ;
3232 StageProducer . PlayerStats . RemoveRelic ( randIndex ) ;
3333 } ,
34- ( self ) =>
34+ async ( self , node ) =>
3535 {
3636 StageProducer . PlayerStats . Money /= 2 ;
3737 } ,
@@ -49,36 +49,55 @@ public partial class EventDatabase
4949 [ "EVENT_EVENT2_OPTION1" , "EVENT_EVENT2_OPTION2" ] ,
5050 [ "" , "EVENT_EVENT2_OUTCOME1" ] ,
5151 [
52- ( self ) =>
52+ async ( self , node ) =>
5353 {
54- StageProducer . PlayerStats . Money -= 20 ;
55- // [do nothing, get money back, win money, get note, get relic, heal]
56- int spinOutcome = ( int )
57- StageProducer . GlobalRng . RandWeighted ( [ 13 , 8 , 5 , 5 , 3 , 3 ] ) ; //TODO: adjust odds
54+ var spinner = node . GetNodeOrNull < Sprite2D > ( "EventSprite" ) ;
55+ int spinOutcome = ( int ) StageProducer . GlobalRng . RandWeighted ( [ 1 , 1 , 1 , 1 , 1 , 1 ] ) ;
56+
57+ int outcomeCount = 6 ;
58+ float sectorAngle = 360f / outcomeCount ;
59+ float targetAngle = spinOutcome * sectorAngle ;
60+ float fullSpins = 6 * 360f ;
61+ float finalRotation = spinner . RotationDegrees % 360f + fullSpins + targetAngle ;
62+
63+ var tween = node . GetTree ( ) . CreateTween ( ) ;
64+ tween
65+ . TweenProperty ( spinner , "rotation_degrees" , finalRotation , 2.5f )
66+ . SetTrans ( Tween . TransitionType . Cubic )
67+ . SetEase ( Tween . EaseType . Out ) ;
68+
69+ var tcs = new TaskCompletionSource < bool > ( ) ;
70+ tween . TweenCallback ( Callable . From ( ( ) => tcs . SetResult ( true ) ) ) ;
71+ await tcs . Task ;
72+
5873 switch ( spinOutcome )
5974 {
60- case 0 : //do nothing AKA lose
61- GD . Print ( "owned lol" ) ;
75+ case 0 :
76+ GD . Print ( "lost half money" ) ;
77+ StageProducer . PlayerStats . Money /= 2 ;
6278 self . OutcomeDescriptions [ 0 ] = "EVENT_EVENT2_OUTCOME2" ;
6379 break ;
64- case 1 : // get money back
65- GD . Print ( "refund " ) ;
80+ case 1 :
81+ GD . Print ( "took damage " ) ;
6682 self . OutcomeDescriptions [ 0 ] = "EVENT_EVENT2_OUTCOME3" ;
67- StageProducer . PlayerStats . Money += 20 ;
83+ StageProducer . PlayerStats . CurrentHealth = Math . Max (
84+ 1 ,
85+ StageProducer . PlayerStats . CurrentHealth - 10
86+ ) ;
6887 break ;
69- case 2 : // get triple money
70- GD . Print ( "triple money" ) ;
88+ case 2 :
89+ GD . Print ( "gain money" ) ;
7190 self . OutcomeDescriptions [ 0 ] = "EVENT_EVENT2_OUTCOME4" ;
72- StageProducer . PlayerStats . Money += 60 ;
91+ StageProducer . PlayerStats . Money += 50 ;
7392 break ;
74- case 3 : // get random note
93+ case 3 :
7594 GD . Print ( "random note" ) ;
7695 self . OutcomeDescriptions [ 0 ] = "EVENT_EVENT2_OUTCOME5" ;
7796 StageProducer . PlayerStats . AddNote (
7897 Scribe . GetRandomRewardNotes ( 1 , StageProducer . CurRoom + 10 ) [ 0 ]
7998 ) ;
8099 break ;
81- case 4 : // get random relic
100+ case 4 :
82101 GD . Print ( "random relic" ) ;
83102 self . OutcomeDescriptions [ 0 ] = "EVENT_EVENT2_OUTCOME6" ;
84103 StageProducer . PlayerStats . AddRelic (
@@ -98,32 +117,34 @@ public partial class EventDatabase
98117 ) ;
99118 break ;
100119 }
120+
121+ GD . Print ( $ "new description { self . OutcomeDescriptions [ 0 ] } ") ;
101122 } ,
102- ( self ) => {
103- //does nothing
123+ async ( self , node ) => {
124+ // does nothing
104125 } ,
105126 ] ,
106- GD . Load < Texture2D > ( "res://Classes/Events/Assets/TEMP .png" ) ,
107- [ ( ) => StageProducer . PlayerStats . Money >= 20 , ( ) => true ]
127+ GD . Load < Texture2D > ( "res://Classes/Events/Assets/Event2 .png" ) ,
128+ [ ( ) => true , ( ) => true ]
108129 ) ,
109130 new EventTemplate (
110131 2 ,
111132 "EVENT_EVENT3_DESC" ,
112133 [ "EVENT_EVENT3_OPTION1" , "EVENT_EVENT3_OPTION2" , "EVENT_EVENT3_OPTION3" ] ,
113134 [ "EVENT_EVENT3_OUTCOME1" , "EVENT_EVENT3_OUTCOME2" , "EVENT_EVENT3_OUTCOME3" ] ,
114135 [
115- ( self ) =>
136+ async ( self , node ) =>
116137 {
117138 StageProducer . PlayerStats . CurrentHealth = Math . Min (
118139 StageProducer . PlayerStats . CurrentHealth + 10 ,
119140 StageProducer . PlayerStats . MaxHealth
120141 ) ;
121142 } ,
122- ( self ) =>
143+ async ( self , node ) =>
123144 {
124145 StageProducer . PlayerStats . MaxComboBar -= 5 ;
125146 } ,
126- ( self ) =>
147+ async ( self , node ) =>
127148 {
128149 StageProducer . PlayerStats . Money -= 30 ;
129150 StageProducer . PlayerStats . AddNote ( Scribe . NoteDictionary [ 3 ] ) ;
0 commit comments