22using System . Linq ;
33using AquaMai . Config . Attributes ;
44using AquaMai . Core . Helpers ;
5+ using AquaMai . Mods . Types ;
56using DB ;
67using HarmonyLib ;
78using JetBrains . Annotations ;
1112using UnityEngine ;
1213using UnityEngine . Networking ;
1314
14- namespace AquaMai . Mods . UX ;
15+ namespace AquaMai . Mods . Enhancement ;
1516
1617[ ConfigSection (
1718 defaultOn : true ,
19+ exampleHidden : true ,
1820 en : """
1921 Show announcement from compatible server
2022 (no side effects for other servers, no extra requests made)
@@ -25,19 +27,15 @@ Show announcement from compatible server
2527 """ ) ]
2628public static class ServerAnnouncement
2729{
28- private class ServerAnnouncementEntry
30+ private class ServerAnnouncementEntry : ConditionalMessage
2931 {
3032 [ CanBeNull ] public string title = null ;
3133 [ CanBeNull ] public string announcement = null ;
3234 [ CanBeNull ] public string imageUrl = null ;
3335 public float imageSizeFactor = 9 ;
3436 public bool showOnIdle = false ;
3537 public bool showOnUserLogin = false ;
36- public string [ ] locales = [ ] ;
37- [ CanBeNull ] public string minimumAquaMaiVersion = null ;
38- [ CanBeNull ] public string maximumAquaMaiVersion = null ;
39- public int minimumGameVersion = 0 ;
40- public int maximumGameVersion = 0 ;
38+ public bool persistent = false ;
4139 }
4240
4341 private class ServerAnnouncementData
@@ -64,7 +62,7 @@ private static Variant OnNetPacketComplete(string api, Variant _, Variant respon
6462 ServerAnnouncementEntry chosenAnnouncement = null ;
6563 foreach ( var entry in serverAnnouncementData . entries )
6664 {
67- if ( ShouldShowAnnouncement ( entry ) )
65+ if ( entry . ShouldShow ( ) )
6866 {
6967 chosenAnnouncement = entry ;
7068 break ;
@@ -92,43 +90,6 @@ private static Variant OnNetPacketComplete(string api, Variant _, Variant respon
9290 return null ;
9391 }
9492
95- private static bool ShouldShowAnnouncement ( ServerAnnouncementEntry announcement )
96- {
97- if ( announcement . locales != null && announcement . locales . Length != 0 && ! announcement . locales . Contains ( General . locale ) )
98- {
99- MelonLogger . Msg ( $ "[ServerAnnouncement] Now showing announcement: Language { General . locale } not in { JSON . Dump ( announcement . locales ) } ") ;
100- return false ;
101- }
102-
103- var aquaMaiVersion = new System . Version ( Core . BuildInfo . Version ) ;
104- if ( announcement . minimumAquaMaiVersion != null && aquaMaiVersion < new System . Version ( announcement . minimumAquaMaiVersion ) )
105- {
106- MelonLogger . Msg ( $ "[ServerAnnouncement] Now showing announcement: AquaMai version { aquaMaiVersion } < { announcement . minimumAquaMaiVersion } ") ;
107- return false ;
108- }
109-
110- if ( announcement . maximumAquaMaiVersion != null && aquaMaiVersion > new System . Version ( announcement . maximumAquaMaiVersion ) )
111- {
112- MelonLogger . Msg ( $ "[ServerAnnouncement] Now showing announcement: AquaMai version { aquaMaiVersion } > { announcement . maximumAquaMaiVersion } ") ;
113- return false ;
114- }
115-
116- var gameVersion = GameInfo . GameVersion ;
117- if ( announcement . minimumGameVersion != 0 && gameVersion < announcement . minimumGameVersion )
118- {
119- MelonLogger . Msg ( $ "[ServerAnnouncement] Now showing announcement: Game version { gameVersion } < { announcement . minimumGameVersion } ") ;
120- return false ;
121- }
122-
123- if ( announcement . maximumGameVersion != 0 && gameVersion > announcement . maximumGameVersion )
124- {
125- MelonLogger . Msg ( $ "[ServerAnnouncement] Now showing announcement: Game version { gameVersion } > { announcement . maximumGameVersion } ") ;
126- return false ;
127- }
128-
129- return true ;
130- }
131-
13293 private class DownloadTexture : MonoBehaviour
13394 {
13495 private void Start ( )
@@ -163,7 +124,7 @@ private IEnumerator GetTexture()
163124 private static void AdvertiseProcessOnStart ( )
164125 {
165126 if ( _announcement == null || ! _announcement . showOnIdle ) return ;
166- MessageHelper . ShowMessage ( _announcement . announcement , title : _announcement . title , sprite : _sprite , size : WindowSizeID . LargeVerticalPostImage ) ;
127+ MessageHelper . ShowMessage ( _announcement . announcement , title : _announcement . title , sprite : _sprite , size : WindowSizeID . LargeVerticalPostImage , retain : _announcement . persistent ) ;
167128 }
168129
169130 [ HarmonyPatch ( typeof ( EntryProcess ) , "OnStart" ) ]
0 commit comments