11package main
22
33import (
4+ "fmt"
45 "github.com/UncleJunVIP/nextui-pak-shared-functions/common"
56 shared "github.com/UncleJunVIP/nextui-pak-shared-functions/models"
7+ commonUI "github.com/UncleJunVIP/nextui-pak-shared-functions/ui"
68 "go.uber.org/zap"
79 "nextui-game-manager/models"
810 "nextui-game-manager/state"
@@ -28,6 +30,14 @@ func init() {
2830 logger .Debug ("Config Loaded" ,
2931 zap .Object ("config" , config ))
3032
33+ if _ , err := os .Stat (common .CollectionDirectory ); os .IsNotExist (err ) {
34+ err := os .MkdirAll (common .CollectionDirectory , 0755 )
35+ if err != nil {
36+ ui .ShowMessage ("Unable to create collection directory! Quitting!" , "3" )
37+ logger .Fatal ("Unable to create collection directory" , zap .Error (err ))
38+ }
39+ }
40+
3141 state .SetConfig (config )
3242}
3343
@@ -51,7 +61,7 @@ func main() {
5161 case models .ScreenNames .MainMenu :
5262 switch code {
5363 case 0 :
54- if res .Value () == "Collections" {
64+ if res .(shared. RomDirectory ). DisplayName == "Collections" {
5565 screen = ui .InitCollectionList ("" )
5666 continue
5767 }
@@ -64,18 +74,88 @@ func main() {
6474 }
6575
6676 case models .ScreenNames .CollectionsList :
77+ collection := res .(models.Collection )
6778 switch code {
6879 case 0 :
69- // screen = ui.InitCollectionManagement()
80+ screen = ui .InitCollectionManagement (collection , screen .(ui. CollectionListScreen ). SearchFilter )
7081 case 4 :
71- // screen = ui.InitCollectionOptions()
82+ // TODO add search box
7283 case 1 , 2 :
7384 screen = ui .InitMainMenu ()
7485 }
7586
87+ case models .ScreenNames .CollectionManagement :
88+ collection := screen .(ui.CollectionManagementScreen ).Collection
89+ switch code {
90+ case 0 :
91+ updatedCollection , err := utils .RemoveCollectionGame (collection , res .(shared.Item ).DisplayName )
92+ if err != nil {
93+ ui .ShowMessage ("Unable to remove game from collection!" , "3" )
94+ screen = ui .InitCollectionManagement (collection , screen .(ui.CollectionManagementScreen ).SearchFilter )
95+ } else {
96+ screen = ui .InitCollectionManagement (updatedCollection , screen .(ui.CollectionManagementScreen ).SearchFilter )
97+ }
98+ case 4 :
99+ screen = ui .InitCollectionOptions (collection , screen .(ui.CollectionManagementScreen ).SearchFilter )
100+ case 404 :
101+ ui .ShowMessage ("No games found in collection" , "3" )
102+ screen = ui .InitCollectionList (screen .(ui.CollectionManagementScreen ).SearchFilter )
103+ default :
104+ screen = ui .InitCollectionList (screen .(ui.CollectionManagementScreen ).SearchFilter )
105+ }
106+
76107 case models .ScreenNames .CollectionOptions :
108+ collectionOptions := screen .(ui.CollectionOptionsScreen )
109+ switch code {
110+ case 0 :
111+ action := models .ActionMap [res .(shared.ListSelection ).SelectedValue ]
77112
78- case models .ScreenNames .CollectionManagement :
113+ switch action {
114+ case models .Actions .CollectionRename :
115+ screen = ui .InitRenameCollectionScreen (collectionOptions .Collection )
116+ case models .Actions .CollectionDelete :
117+ message := fmt .Sprintf ("Delete %s?" , collectionOptions .Collection .DisplayName )
118+
119+ code , err := commonUI .ShowMessageWithOptions (message , "0" ,
120+ "--confirm-text" , "DO IT!" ,
121+ "--confirm-show" , "true" ,
122+ "--confirm-button" , "X" ,
123+ "--cancel-show" , "true" ,
124+ "--cancel-text" , "CHANGED MY MIND" ,
125+ )
126+
127+ if err != nil {
128+ logger := common .GetLoggerInstance ()
129+ logger .Info ("Oh no" , zap .Error (err ))
130+ }
131+
132+ switch code {
133+ case 0 :
134+ utils .DeleteCollection (collectionOptions .Collection )
135+ screen = ui .InitCollectionList (collectionOptions .SearchFilter )
136+ default :
137+ screen = ui .InitCollectionOptions (collectionOptions .Collection , collectionOptions .SearchFilter )
138+ }
139+ }
140+ case 2 :
141+ screen = ui .InitCollectionManagement (collectionOptions .Collection , collectionOptions .SearchFilter )
142+ }
143+
144+ case models .ScreenNames .CollectionRename :
145+ rcs := screen .(ui.RenameCollectionScreen )
146+ newName := res .(models.WrappedString ).Contents
147+ var err error
148+ switch code {
149+ case 0 :
150+ err = utils .RenameCollection (rcs .Collection , newName )
151+ if err != nil {
152+ ui .ShowMessage ("Unable to rename ROM!" , "3" )
153+ } else {
154+ rcs .Collection .DisplayName = newName
155+ }
156+ }
157+
158+ screen = ui .InitCollectionManagement (rcs .Collection , "" )
79159
80160 case models .ScreenNames .GamesList :
81161 switch code {
@@ -125,30 +205,70 @@ func main() {
125205 screen = ui .InitGamesList (screen .(ui.Search ).RomDirectory , searchFilter )
126206
127207 case models .ScreenNames .Actions :
208+ as := screen .(ui.ActionsScreen )
128209 switch code {
129210 case 0 :
130211 switch models .ActionMap [res .(shared.ListSelection ).SelectedValue ] {
131212 case models .Actions .DownloadArt :
132- screen = ui .InitDownloadArtScreen (screen .(ui. ActionsScreen ) .Game ,
133- screen .(ui. ActionsScreen ) .RomDirectory ,
134- screen .(ui. ActionsScreen ) .PreviousRomDirectory ,
135- screen .(ui. ActionsScreen ) .SearchFilter ,
213+ screen = ui .InitDownloadArtScreen (as .Game ,
214+ as .RomDirectory ,
215+ as .PreviousRomDirectory ,
216+ as .SearchFilter ,
136217 state .GetAppState ().Config .ArtDownloadType )
137218 case models .Actions .RenameRom :
138- screen = ui .InitRenameRomScreen (screen .(ui.ActionsScreen ).Game ,
139- screen .(ui.ActionsScreen ).RomDirectory ,
140- screen .(ui.ActionsScreen ).PreviousRomDirectory ,
141- screen .(ui.ActionsScreen ).SearchFilter )
219+ screen = ui .InitRenameRomScreen (as .Game ,
220+ as .RomDirectory ,
221+ as .PreviousRomDirectory ,
222+ as .SearchFilter )
223+ case models .Actions .CollectionAdd :
224+ screen = ui .InitAddToCollectionScreen (as .Game ,
225+ as .RomDirectory ,
226+ as .PreviousRomDirectory ,
227+ as .SearchFilter )
142228 default :
143- screen = ui .InitConfirmScreen (screen .(ui. ActionsScreen ) .Game ,
144- screen .(ui. ActionsScreen ) .RomDirectory ,
145- screen .(ui. ActionsScreen ) .PreviousRomDirectory ,
146- screen .(ui. ActionsScreen ) .SearchFilter ,
229+ screen = ui .InitConfirmScreen (as .Game ,
230+ as .RomDirectory ,
231+ as .PreviousRomDirectory ,
232+ as .SearchFilter ,
147233 models .ActionMap [res .(shared.ListSelection ).SelectedValue ])
148234 }
149235 default :
150- screen = ui .InitGamesList (screen .(ui.ActionsScreen ).RomDirectory ,
151- screen .(ui.ActionsScreen ).SearchFilter )
236+ screen = ui .InitGamesList (as .RomDirectory ,
237+ as .SearchFilter )
238+ }
239+
240+ case models .ScreenNames .AddToCollection :
241+ atc := screen .(ui.AddToCollectionScreen )
242+ switch code {
243+ case 0 :
244+ _ , err := utils .AddCollectionGame (res .(models.Collection ), atc .Game )
245+ if err != nil {
246+ ui .ShowMessage ("Unable to add game to collection!" , "2" )
247+ } else {
248+ ui .ShowMessage ("Added to collection!" , "2" )
249+ continue
250+ }
251+ case 4 :
252+ screen = ui .InitCreateCollectionScreen (atc .Game , atc .RomDirectory , atc .PreviousRomDirectory , atc .SearchFilter )
253+ continue
254+ case 404 :
255+ screen = ui .InitCreateCollectionScreen (atc .Game , atc .RomDirectory , atc .PreviousRomDirectory , atc .SearchFilter )
256+ continue
257+ }
258+
259+ screen = ui .InitActionsScreenWithPreviousDirectory (atc .Game ,
260+ atc .RomDirectory ,
261+ atc .PreviousRomDirectory ,
262+ atc .SearchFilter )
263+
264+ case models .ScreenNames .CollectionCreate :
265+ cc := screen .(ui.CreateCollectionScreen )
266+ switch code {
267+ case 0 :
268+ ui .ShowMessage ("Created collection & added game!" , "2" )
269+ screen = ui .InitAddToCollectionScreen (cc .Game , cc .RomDirectory , cc .PreviousRomDirectory , cc .SearchFilter )
270+ case 2 :
271+ screen = ui .InitActionsScreenWithPreviousDirectory (cc .Game , cc .RomDirectory , cc .PreviousRomDirectory , cc .SearchFilter )
152272 }
153273
154274 case models .ScreenNames .RenameRom :
@@ -161,13 +281,15 @@ func main() {
161281 newFilename , err = utils .RenameRom (rrs .Game .Filename , newName , rrs .RomDirectory )
162282 if err != nil {
163283 ui .ShowMessage ("Unable to rename ROM!" , "3" )
164- screen = ui .InitActionsScreenWithPreviousDirectory (rrs .Game , rrs .RomDirectory ,
165- rrs .PreviousRomDirectory , rrs .SearchFilter )
284+ } else {
285+ screen = ui .InitActionsScreenWithPreviousDirectory (shared.Item {DisplayName : newName , Filename : newFilename },
286+ rrs .RomDirectory , rrs .PreviousRomDirectory , rrs .SearchFilter )
166287 continue
167288 }
168289 }
169- screen = ui .InitActionsScreenWithPreviousDirectory (shared.Item {DisplayName : newName , Filename : newFilename },
170- rrs .RomDirectory , rrs .PreviousRomDirectory , rrs .SearchFilter )
290+
291+ screen = ui .InitActionsScreenWithPreviousDirectory (rrs .Game , rrs .RomDirectory ,
292+ rrs .PreviousRomDirectory , rrs .SearchFilter )
171293
172294 case models .ScreenNames .DownloadArt :
173295 switch code {
@@ -188,7 +310,7 @@ func main() {
188310 screen = ui .InitActionsScreen (confirmScreen .Game , confirmScreen .RomDirectory ,
189311 confirmScreen .SearchFilter )
190312 case models .Actions .ClearGameTracker :
191- utils .ClearGameTracker (confirmScreen .Game .DisplayName , confirmScreen .RomDirectory )
313+ utils .ClearGameTracker (confirmScreen .Game .Filename , confirmScreen .RomDirectory )
192314 screen = ui .InitActionsScreen (confirmScreen .Game , confirmScreen .RomDirectory ,
193315 confirmScreen .SearchFilter )
194316 case models .Actions .ClearSaveStates :
0 commit comments