diff --git a/Profiles.cfg b/Profiles.cfg new file mode 100644 index 0000000..106b456 --- /dev/null +++ b/Profiles.cfg @@ -0,0 +1,1279 @@ + +; EXTENDED PLAYER'S SETTINGS +; -------------------------------------------------- +; +; +¦==== Parameter : PROFILES ACTIONS +; Options : [Load, Surprise, Change, Savegui, Savegame, Saveinitial, +; " " : Savedefault, Getgui, Getgame, Getinitial, Getdefault] +; +; Load = If the key "L" is pressed, this profile will change the GUI +; Surprise = If the key "R" is pressed, this profile will change the GUI... +; I use it to Randomize, but could be alternate load! +; Change = If the key "X" is pressed in Load Menu, the loaded Game will be +; changed +; Savegui = When a Game is started or if the key "U" is pressed, this +; profile will save the GUI settings +; Savegame = When a Game is started, this profile will save the Game +; settings +; Saveinitial = When a Game is started or if the key "U" is pressed, this +; profile will save the initial settings +; Savedefault = When a Game is started or if the key "U" is pressed, this +; profile will save the default settings +; Getgui = When a Game is started or if the key "U" is pressed, non empty +; parameters of this profile will save the GUI settings +; Getgame = When a Game is started, non empty parameters of this profile +; will save the Game settings +; Getinitial = When a Game is started or if the key "U" is pressed, non empty +; parameters of this profile will save the initial settings +; Getdefault = When a Game is started or if the key "U" is pressed, non empty +; parameters of this profile will save the default settings +; + +Continuation : SaveGui Load ; To retrieve the last session configuration. .. + ; Press "L" to load this profile +MyConfig : Load ; Adjust this manually, with your preferences +ChangeGame : Change ; This profile change Game When Loaded by .. + ; pressing "X", add SaveGui to be able to update .. + ; this profile from the GUI +FullRandom : Surprise ; All parameter preset to random! Load by .. + ; pressing "R", add or replace by Load to also .. + ; allow it to be loaded with "L" +MyRandom : Surprise ; For your customized random! Load by pressing .. + ; "R", add or replace by Load to also allow it to .. + ; be loaded with "L" +Vanilla : SaveDefault ; remove the settings you don't want vanilla, .. + ; replace SaveDefault by GetDefault and Load to .. + ; keep some vanilla configuration +LastWord· : Load Surprise ; For the parameters you never want to be .. + ; changed. Keep at the end of the list. The "·" .. + ; prevent it to be mistakenly changed +; (---- The last loaded Win) + +; +; --------- Races Game Options --------- +; + +¦==== Parameter : PLAYER RACE +; Options : [Human, Alkari, Silicoid, Mrrshan, Klackon, Meklar, Psilon, +; " " : Darlok, Sakkra, Bulrathi] +¦ History : Current: Human ¦ Last: Human ¦ Initial: Human +¦ History : Default: Human ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Human +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : random ; Full random +Vanilla : Human +LastWord : +; ---- Available for changes in game saves + + +¦==== Parameter : PLAYER COLOR +; Options : [Red, Green, Yellow, Blue, Orange, Purple, Aqua, Fuchsia, +; " " : Brown, White, Lime, Grey, Plum, Light Blue, Mint, Olive] +¦ History : Current: Blue ¦ Last: Blue ¦ Initial: Blue ¦ Default: Red +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Blue +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : random Green, Lime ; 2 values = a range from option list +Vanilla : Red +LastWord : +; ---- Available for changes in game saves + + +¦==== Parameter : PLAYER HOMEWORLD +; +; The best would be to let the game choose this value! +; +¦ History : Current: Gaia ¦ Last: ¦ Initial: Gaia ¦ Default: Gaia +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Gaia +MyConfig : +ChangeGame : +FullRandom : Random +MyRandom : +Vanilla : Gaia +LastWord : +; ---- Available for changes in game saves + + +¦==== Parameter : PLAYER NAME +; +; The best would be to let the game choose this value! +; +¦ History : Current: Horace ¦ Last: ¦ Initial: Horace ¦ Default: Horace +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Horace +MyConfig : +ChangeGame : +FullRandom : Random +MyRandom : +Vanilla : Horace +LastWord : +; ---- Available for changes in game saves + +; +; ------------- Galaxy Options ------------- +; + +¦==== Parameter : GALAXY SHAPE +; Options : [Rectangle, Ellipse, Spiral, Text, Cluster, Swirlclusters, +; " " : Grid, Spiralarms, Maze, Shuriken, Bullseye, Lorenz, Fractal] +¦ History : Current: Rectangle ¦ Last: Rectangle ¦ Initial: Rectangle +¦ History : Default: Rectangle ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Rectangle +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : random Rectangle, Ellipse, Spiral, Spiralarms ; a limited .. + ; choice +Vanilla : Rectangle +LastWord : + + +¦==== Parameter : GALAXY SIZE +; Options : [Tiny, Small, Small2, Average, Average2, Large, Large2, Huge, +; " " : Huge2, Massive, Massive2, Massive3, Massive4, Massive5, +; " " : Insane, Ludicrous, Maximum] +¦ History : Current: Small ¦ Last: Small ¦ Initial: Small +¦ History : Default: Small ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Small +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : ; Nothing changed by this profile +Vanilla : Small +LastWord : + + +¦==== Parameter : SHAPE RECTANGLE OPTION 1 +; Options : [Rectangle_0, Rectangle_1] +¦ History : Current: Rectangle_0 ¦ Last: Rectangle_0 +¦ History : Initial: Rectangle_0 ¦ Default: ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Rectangle_0 +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : +LastWord : + + +¦==== Parameter : SHAPE RECTANGLE OPTION 2 +; Options : [Void_0, Void_1, Void_2, Void_5] +¦ History : Current: Void_0 ¦ Last: Void_0 ¦ Initial: Void_0 ¦ Default: +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Void_0 +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : +LastWord : + + +¦==== Parameter : SHAPE ELLIPTICAL OPTION 1 +; Options : [Ellipse_0, Ellipse_1, Ellipse_2, Ellipse_3, Ellipse_4] +¦ History : Current: ¦ Last: ¦ Initial: Ellipse_0 ¦ Default: ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : +LastWord : + + +¦==== Parameter : SHAPE ELLIPTICAL OPTION 2 +; Options : [Void_0, Void_1, Void_2, Void_3, Void_4] +¦ History : Current: ¦ Last: ¦ Initial: Void_0 ¦ Default: ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : +LastWord : + + +¦==== Parameter : SHAPE SPIRAL OPTION 1 +; Options : [2_Arms, 3_Arms, 4_Arms, 5_Arms, 6_Arms, 7_Arms, 8_Arms] +¦ History : Current: ¦ Last: ¦ Initial: 2_Arms ¦ Default: ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : +LastWord : + + +¦==== Parameter : SHAPE SPIRAL OPTION 2 +; Options : [Rotation_0, Rotation_1, Rotation_2, Rotation_3, Rotation_4, +; " " : Rotation_5, Rotation_6] +¦ History : Current: ¦ Last: ¦ Initial: Rotation_0 ¦ Default: ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : +LastWord : + + +¦==== Parameter : SHAPE TEXT OPTION 1 +; Options : [Text_0, Text_1, Text_2] +¦ History : Current: ¦ Last: ¦ Initial: Text_0 ¦ Default: ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : +LastWord : + + +¦==== Parameter : SHAPE TEXT OPTION 2 +; Options : [1_Line, 2_Line, 3_Line] +¦ History : Current: ¦ Last: ¦ Initial: 1_Line ¦ Default: ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : +LastWord : + + +¦==== Parameter : SHAPE LORENZ OPTION 1 +; Options : [Lorenz_0, Lorenz_1] +¦ History : Current: ¦ Last: ¦ Initial: Lorenz_0 ¦ Default: ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : +LastWord : + + +¦==== Parameter : SHAPE LORENZ OPTION 2 +; Options : [View_0, View_1, View_2] +¦ History : Current: ¦ Last: ¦ Initial: View_0 ¦ Default: ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : +LastWord : + + +¦==== Parameter : SHAPE FRACTAL OPTION 1 +; Options : [Fractal_0, Fractal_1] +¦ History : Current: ¦ Last: ¦ Initial: Fractal_0 ¦ Default: ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : +LastWord : + + +¦==== Parameter : SHAPE FRACTAL OPTION 2 +; Options : [Option_A, Option_B, Option_C] +¦ History : Current: ¦ Last: ¦ Initial: Option_A ¦ Default: ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : +LastWord : + + +¦==== Parameter : SHAPE MAZE OPTION 1 +; Options : [Maze_0, Maze_1, Maze_2] +¦ History : Current: ¦ Last: ¦ Initial: Maze_0 ¦ Default: ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : +LastWord : + + +¦==== Parameter : SHAPE SHURIKEN OPTION 1 +; Options : [Shuriken_0, Shuriken_1, Shuriken_2] +¦ History : Current: ¦ Last: ¦ Initial: Shuriken_0 ¦ Default: ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : +LastWord : + + +¦==== Parameter : SHAPE BULLSEYE OPTION 1 +; Options : [Bullseye_0, Bullseye_1, Bullseye_2] +¦ History : Current: ¦ Last: ¦ Initial: Bullseye_0 ¦ Default: ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : +LastWord : + + +¦==== Parameter : SHAPE GRID OPTION 1 +; Options : [Grid_0, Grid_1, Grid_2] +¦ History : Current: ¦ Last: ¦ Initial: Grid_0 ¦ Default: ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : +LastWord : + + +¦==== Parameter : SHAPE CLUSTER OPTION 1 +; Options : [Cluster_0, Cluster_1, Cluster_2] +¦ History : Current: ¦ Last: ¦ Initial: Cluster_0 ¦ Default: ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : +LastWord : + + +¦==== Parameter : SHAPE SWIRLCLUSTERS OPTION 1 +; Options : [Swirlclusters_0, Swirlclusters_1, Swirlclusters_2] +¦ History : Current: ¦ Last: ¦ Initial: Swirlclusters_0 ¦ Default: +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : +LastWord : + + +¦==== Parameter : SHAPE SPIRALARMS OPTION 1 +; Options : [Spiralarms_0, Spiralarms_1, Spiralarms_2] +¦ History : Current: ¦ Last: ¦ Initial: Spiralarms_0 ¦ Default: +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : +LastWord : + + +¦==== Parameter : DIFFICULTY +; Options : [Easiest, Easier, Easy, Normal, Hard, Harder, Hardest, +; " " : Custom] +¦ History : Current: Normal ¦ Last: Normal ¦ Initial: Normal +¦ History : Default: Easy ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Normal +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : random 1, 4 ; a range from option list +Vanilla : Easy +LastWord : + + +¦==== Parameter : OPPONENT AI +; Options : [Base, Xilmi, Select] +¦ History : Current: Base ¦ Last: Base ¦ Initial: Base ¦ Default: Base +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Base +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : random Base, Xilmi, Xilmi ; 2 chances to have Xilmi vs Base +Vanilla : Base +LastWord : + + +¦==== Parameter : NB OPPONENTS +; Options : [Min=0, Max=15, Rnd Low=1, Rnd Up=15] +¦ History : Current: 4 ¦ Last: ¦ Initial: 4 ¦ Default: 3 ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : 4 +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : random 3, 6 ; a custom range +Vanilla : 3 +LastWord : + + +¦==== Parameter : GUI RACE FILTER +; +; If you don’t like to have some races as opponent, or if your planetary +; distribution affect a race too much, you are able to remove them form the +; pool of selectable opponents. +; Only the opponents on the list will be shown when you click on the selection +; rectangle. +; The race list must be written using "/" as separator. +; !!! Don’t break the lines !!! even if they become very long... There is no +; multi-line analysis. +; +; Options : [Human, Alkari, Silicoid, Mrrshan, Klackon, Meklar, Psilon, +; " " : Darlok, Sakkra, Bulrathi] +¦ History : Current: Human/Alkari/Silicoid/Mrrshan/Klackon/Meklar/Psilon/Darlok/Sakkra/Bulrathi +¦ History : Last: +¦ History : Initial: Human/Alkari/Silicoid/Mrrshan/Klackon/Meklar/Psilon/Darlok/Sakkra/Bulrathi +¦ History : Default: Human/Alkari/Silicoid/Mrrshan/Klackon/Meklar/Psilon/Darlok/Sakkra/Bulrathi +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : .. + ; Human/Alkari/Silicoid/Mrrshan/Klackon/Meklar/Psilon/Darlok/Sakkra/Bulrathi +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : .. + ; Human/Alkari/Silicoid/Mrrshan/Klackon/Meklar/Psilon/Darlok/Sakkra/Bulrathi +LastWord : + + +¦==== Parameter : GAME RACE FILTER +; +; If you don’t like to have some races as opponent, or if your planetary +; distribution affect a race too much, you are able to remove them form the +; pool of selectable opponents. +; Only the opponents on the list will be used by the random generator when +; starting a new game. +; The race list must be written using "/" as separator. +; !!! Don’t break the lines !!! even if they become very long... There is no +; multi-line analysis. +; +; Options : [Human, Alkari, Silicoid, Mrrshan, Klackon, Meklar, Psilon, +; " " : Darlok, Sakkra, Bulrathi] +¦ History : Current: Human/Alkari/Silicoid/Mrrshan/Klackon/Meklar/Psilon/Darlok/Sakkra/Bulrathi +¦ History : Last: +¦ History : Initial: Human/Alkari/Silicoid/Mrrshan/Klackon/Meklar/Psilon/Darlok/Sakkra/Bulrathi +¦ History : Default: Human/Alkari/Silicoid/Mrrshan/Klackon/Meklar/Psilon/Darlok/Sakkra/Bulrathi +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : .. + ; Human/Alkari/Silicoid/Mrrshan/Klackon/Meklar/Psilon/Darlok/Sakkra/Bulrathi +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : .. + ; Human/Alkari/Silicoid/Mrrshan/Klackon/Meklar/Psilon/Darlok/Sakkra/Bulrathi +LastWord : + + +¦==== Parameter : GUI PRESET OPPONENT +; +; To fill the opponent list or suggest random opponents from a list. +; If option is empty, the opponent is not changed. +; If the option is "null" the result is an empty rectangle. +; If the option is "random" the opponent will be selected from the full race +; list. +; If the option is "GUI" the opponent will be selected from the GUI RACE FILTER +; list. +; If the option is "GAME" the opponent will be selected from the GAME RACE +; FILTER list. +; If the option is "random race_1, race_2, race_N" the opponent will be +; selected from the given list. +; If the list is shorter than the number of opponents and the last option is +; random: this last option will be applied to the remaining opponents. +; Otherwise the remaining opponents aren’t changed. +; The race list must be written using "/" as separator. +; !!! Don’t break the lines !!! even if they become very long... There is no +; multi-line analysis. +; +; Options : [Human, Alkari, Silicoid, Mrrshan, Klackon, Meklar, Psilon, +; " " : Darlok, Sakkra, Bulrathi, Null, Gui, Game] +¦ History : Current: Base/Base/Base/Base ¦ Last: +¦ History : Initial: Human/Alkari/Silicoid/Mrrshan/Klackon/Meklar/Psilon/Darlok/Sakkra/Bulrathi +¦ History : Default: Human/Alkari/Silicoid/Mrrshan/Klackon/Meklar/Psilon/Darlok/Sakkra/Bulrathi +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : .. + ; Human/Alkari/Silicoid/Mrrshan/Klackon/Meklar/Psilon/Darlok/Sakkra/Bulrathi +LastWord : + + +¦==== Parameter : START PRESET OPPONENT +; +; To replace the random opponent generation when starting a new game. +; If option is empty or null, the opponent will be randomly selected. +; If the option is "random" the opponent will be selected from the full race +; list. +; If the option is "GUI" the opponent will be selected from the GUI RACE FILTER +; list. +; If the option is "GAME" the opponent will be selected from the GAME RACE +; FILTER list. +; If the option is "random race_1, race_2, race_N" the opponent will be +; selected from the given list. +; If the list is shorter than the number of opponents, this last option will be +; applied to the remaining opponents.When the maximum number of a type of +; opponent (5) is reached, it’ll be removed from the list of allowed opponents. +; When this list is empty, sorry, a forbidden race will be chosen. +; The race list must be written using "/" as separator. +; !!! Don’t break the lines !!! even if they become very long... There is no +; multi-line analysis. +; +; Options : [Human, Alkari, Silicoid, Mrrshan, Klackon, Meklar, Psilon, +; " " : Darlok, Sakkra, Bulrathi, Null, Gui, Game] +¦ History : Current: Base/Base/Base/Base ¦ Last: +¦ History : Initial: Human/Alkari/Silicoid/Mrrshan/Klackon/Meklar/Psilon/Darlok/Sakkra/Bulrathi +¦ History : Default: Human/Alkari/Silicoid/Mrrshan/Klackon/Meklar/Psilon/Darlok/Sakkra/Bulrathi +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : .. + ; Human/Alkari/Silicoid/Mrrshan/Klackon/Meklar/Psilon/Darlok/Sakkra/Bulrathi +LastWord : + +; +; ----------- Advanced Game Options ----------- +; + +¦==== Parameter : GALAXY AGE +; Options : [Young, Normal, Old] +¦ History : Current: Normal ¦ Last: Normal ¦ Initial: Normal +¦ History : Default: Normal ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Normal +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : random Young, Young, Old, Old ; Only 2 choices... Not a range +Vanilla : Normal +LastWord : + + +¦==== Parameter : STAR DENSITY +; Options : [Lowest, Lower, Low, Normal, High, Higher, Highest] +¦ History : Current: Normal ¦ Last: Normal ¦ Initial: Normal +¦ History : Default: Normal ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Normal +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : Normal +LastWord : + + +¦==== Parameter : NEBULAE +; Options : [None, Rare, Uncommon, Normal, Common, Frequent] +¦ History : Current: Normal ¦ Last: Normal ¦ Initial: Normal +¦ History : Default: Normal ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Normal +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : random 1, 4 ; Range = Rare .. Common (first option = 0) +Vanilla : Normal +LastWord : + + +¦==== Parameter : PLANET QUALITY +; Options : [Normal, Larger, Richer] +¦ History : Current: Normal ¦ Last: Normal ¦ Initial: Normal +¦ History : Default: Normal ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Normal +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : Normal +LastWord : + + +¦==== Parameter : TERRAFORMING +; Options : [Normal, Reduced, None] +¦ History : Current: Normal ¦ Last: Normal ¦ Initial: Normal +¦ History : Default: Normal ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Normal +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : Normal +LastWord : + + +¦==== Parameter : RANDOM EVENTS +; Options : [On, Monsters, Off] +¦ History : Current: Monsters ¦ Last: Monsters ¦ Initial: Monsters +¦ History : Default: On ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Monsters +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : On +LastWord : +; ---- Available for changes in game saves + + +¦==== Parameter : AI HOSTILITY +; Options : [Lowest, Lower, Low, Normal, High, Higher, Highest] +¦ History : Current: Normal ¦ Last: Normal ¦ Initial: Normal +¦ History : Default: Normal ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Normal +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : random 0, 3 +Vanilla : Normal +LastWord : + + +¦==== Parameter : COUNCIL +; Options : [Immediate, Rebels, None] +¦ History : Current: Rebels ¦ Last: Rebels ¦ Initial: Rebels +¦ History : Default: Rebels ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Rebels +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : Rebels +LastWord : +; ---- Available for changes in game saves + + +¦==== Parameter : RANDOMIZE AI +; Options : [None, Personality, Ability, Both] +¦ History : Current: None ¦ Last: None ¦ Initial: None ¦ Default: None +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : None +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : None +LastWord : + + +¦==== Parameter : AUTOPLAY +; Options : [Off, Base, Xilmi] +¦ History : Current: Off ¦ Last: Off ¦ Initial: Off ¦ Default: Off +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Off +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : Off +LastWord : Off ; Only activated thru GUI + + +¦==== Parameter : RESEARCH +; Options : [Normal, Slow, Slower, Slowest, Fast] +¦ History : Current: Normal ¦ Last: Normal ¦ Initial: Normal +¦ History : Default: Normal ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Normal +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : Normal +LastWord : + + +¦==== Parameter : WARP SPEED +; Options : [Normal, Fast] +¦ History : Current: Normal ¦ Last: Normal ¦ Initial: Normal +¦ History : Default: Normal ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Normal +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : Normal +LastWord : + + +¦==== Parameter : FUEL RANGE +; Options : [Normal] +¦ History : Current: Normal ¦ Last: Normal ¦ Initial: Normal +¦ History : Default: Normal ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Normal +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : Normal +LastWord : + + +¦==== Parameter : TECH TRADING +; Options : [Yes, Allies, No] +¦ History : Current: Yes ¦ Last: Yes ¦ Initial: Yes ¦ Default: Yes +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Yes +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : Yes +LastWord : +; ---- Available for changes in game saves + + +¦==== Parameter : COLONIZING +; Options : [Normal, Restricted] +¦ History : Current: Normal ¦ Last: Normal ¦ Initial: Normal +¦ History : Default: Normal ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : Normal +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : Normal +LastWord : +; ---- Available for changes in game saves + +; +; ------------- Modnar's Options ------------- +; + +¦==== Parameter : ALWAYS STAR GATES +; Options : [YES, NO, TRUE, FALSE] +¦ History : Current: NO ¦ Last: ¦ Initial: NO ¦ Default: NO ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : NO +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : YES ; Not Random! +Vanilla : NO +LastWord : +; ---- Available for changes in game saves + + +¦==== Parameter : ALWAYS THORIUM +; Options : [YES, NO, TRUE, FALSE] +¦ History : Current: NO ¦ Last: ¦ Initial: NO ¦ Default: NO ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : NO +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : NO +LastWord : +; ---- Available for changes in game saves + + +¦==== Parameter : CHALLENGE MODE +; Options : [YES, NO, TRUE, FALSE] +¦ History : Current: NO ¦ Last: ¦ Initial: NO ¦ Default: NO ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : NO +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : NO +LastWord : + + +¦==== Parameter : BATTLE SCOUT +; Options : [YES, NO, TRUE, FALSE] +¦ History : Current: NO ¦ Last: ¦ Initial: NO ¦ Default: NO ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : NO +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : NO +LastWord : + + +¦==== Parameter : COMPANION WORLDS +; Options : [Min=0, Max=4, Rnd Low=0, Rnd Up=4] +¦ History : Current: 0 ¦ Last: ¦ Initial: 0 ¦ Default: 0 ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : 0 +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : 0 +LastWord : + + +¦==== Parameter : RANDOM TECH START +; Options : [YES, NO, TRUE, FALSE] +¦ History : Current: NO ¦ Last: ¦ Initial: NO ¦ Default: NO ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : NO +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : NO +LastWord : + + +¦==== Parameter : CUSTOM DIFFICULTY +; Options : [Min=20, Max=500, Rnd Low=20, Rnd Up=500] +¦ History : Current: 100 ¦ Last: ¦ Initial: 100 ¦ Default: 100 ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : 100 +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : 100 +LastWord : +; ---- Follow the GUI, not stored in game + + +¦==== Parameter : DYNAMIC DIFFICULTY +; Options : [YES, NO, TRUE, FALSE] +¦ History : Current: NO ¦ Last: ¦ Initial: NO ¦ Default: NO ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : NO +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : NO +LastWord : +; ---- Follow the GUI, not stored in game + + +¦==== Parameter : MISSILE SIZE MODIFIER +; Options : [Min=0.1, Max=1.0, Rnd Low=0.1, Rnd Up=1.0] +¦ History : Current: 0.6666667 ¦ Last: ¦ Initial: 0.6666667 +¦ History : Default: 0.66 ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : 0.6666667 +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : 0.66 +LastWord : +; ---- Follow the GUI, not stored in game + +; +; ------------- Governor Options ------------- +; +; + +¦==== Parameter : GOVERNOR ON BY DEFAULT +; Options : [YES, NO, TRUE, FALSE] +¦ History : Current: YES ¦ Last: ¦ Initial: YES ¦ Default: YES ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : YES +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : YES +LastWord : + + +¦==== Parameter : AUTOSPEND ON BY DEFAULT +; Options : [YES, NO, TRUE, FALSE] +¦ History : Current: NO ¦ Last: ¦ Initial: NO ¦ Default: NO ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : NO +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : NO +LastWord : + + +¦==== Parameter : DEFAULT MAX BASES +; Options : [Min=0, Max=0, Rnd Low=0, Rnd Up=0] +¦ History : Current: 0 ¦ Last: ¦ Initial: 0 ¦ Default: 0 ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : 0 +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : 0 +LastWord : + + +¦==== Parameter : DIVERT EXCESS TO RESEARCH +; Options : [YES, NO, TRUE, FALSE] +¦ History : Current: YES ¦ Last: ¦ Initial: YES ¦ Default: YES ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : YES +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : YES +LastWord : + +; +; ------------- Broken Registry Options ------------- +; + +¦==== Parameter : FLAG COLOR ORDER +; +; This setting will change scrolling order of the star flags in the galaxy map +; List lenght may be shortened. by removing some colors +; If you remove the "None" one, it will still be available on reset +; +; Options : [None, White, Red, Blue, Green, Yellow, Aqua, Orange, Light +; " " : Blue, Purple, Pink] +¦ History : Current: NONE/WHITE/RED/BLUE/GREEN/YELLOW/AQUA/ORANGE/LIGHT BLUE/PURPLE/PINK +¦ History : Last: +¦ History : Initial: NONE/WHITE/RED/BLUE/GREEN/YELLOW/AQUA/ORANGE/LIGHT BLUE/PURPLE/PINK +¦ History : Default: NONE/WHITE/RED/BLUE/GREEN/YELLOW/AQUA/ORANGE/LIGHT BLUE/PURPLE/PINK +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : NONE/WHITE/RED/BLUE/GREEN/YELLOW/AQUA/ORANGE/LIGHT .. + ; BLUE/PURPLE/PINK +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : NONE/WHITE/RED/BLUE/GREEN/YELLOW/AQUA/ORANGE/LIGHT .. + ; BLUE/PURPLE/PINK +LastWord : +; ---- Follow the GUI, not stored in game + + +¦==== Parameter : MAXIMIZE EMPIRES SPACING +; +; I don’t like being squeezed in a corned in big map with few opponents... +; With this option activated, the space between every empire will be maximized. +; +; Options : [YES, NO, TRUE, FALSE] +¦ History : Current: NO ¦ Last: ¦ Initial: NO ¦ Default: NO ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : NO +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : NO +LastWord : + + +¦==== Parameter : PREF STARS PER EMPIRE +; +; Preferred number of stars around every empires. This parameter will affect +; the default selected number of opponents, also depend on the size of the +; galaxy. +; This parameter will be disabled as soon as a number of opponents is chosen. +; +; Options : [Min=0, Max=1000000, Rnd Low=16, Rnd Up=24] +¦ History : Current: 16 ¦ Last: ¦ Initial: 16 ¦ Default: 16 ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : 16 +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : 16 +LastWord : + + +¦==== Parameter : MIN STARS PER EMPIRE +; +; Minimum number of stars around every empires. +; This parameter will affect the maximum number of allowed opponents, also +; depend on the size of the galaxy. +; +; Options : [Min=0, Max=1000000, Rnd Low=4, Rnd Up=16] +¦ History : Current: 8 ¦ Last: ¦ Initial: 8 ¦ Default: 8 ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : 8 +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : 8 +LastWord : + + +¦==== Parameter : STAR TYPE PROBABILITY +; Options : [Red, Orange, Yellow, Blue, White, Purple] +¦ History : Current: 1.0/1.0/1.0/1.0/1.0/1.0 ¦ Last: +¦ History : Initial: 1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Default: 1.0/1.0/1.0/1.0/1.0/1.0 ¦ Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : 1.0/1.0/1.0/1.0/1.0/1.0 +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : 1.0/1.0/1.0/1.0/1.0/1.0 +LastWord : + + +¦==== Parameter : PLANET TYPE PROBABILITY GLOBAL +; Options : [None, Radiated, Toxic, Inferno, Dead, Tundra, Barren, +; " " : Minimal, Desert, Steppe, Arid, Ocean, Jungle, Terran] +¦ History : Current: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Last: +¦ History : Initial: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Default: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +LastWord : + + +¦==== Parameter : PLANET TYPE PROBABILITY RED +; Options : [None, Radiated, Toxic, Inferno, Dead, Tundra, Barren, +; " " : Minimal, Desert, Steppe, Arid, Ocean, Jungle, Terran] +¦ History : Current: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Last: +¦ History : Initial: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Default: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +LastWord : + + +¦==== Parameter : PLANET TYPE PROBABILITY ORANGE +; Options : [None, Radiated, Toxic, Inferno, Dead, Tundra, Barren, +; " " : Minimal, Desert, Steppe, Arid, Ocean, Jungle, Terran] +¦ History : Current: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Last: +¦ History : Initial: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Default: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +LastWord : + + +¦==== Parameter : PLANET TYPE PROBABILITY YELLOW +; Options : [None, Radiated, Toxic, Inferno, Dead, Tundra, Barren, +; " " : Minimal, Desert, Steppe, Arid, Ocean, Jungle, Terran] +¦ History : Current: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Last: +¦ History : Initial: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Default: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +LastWord : + + +¦==== Parameter : PLANET TYPE PROBABILITY BLUE +; Options : [None, Radiated, Toxic, Inferno, Dead, Tundra, Barren, +; " " : Minimal, Desert, Steppe, Arid, Ocean, Jungle, Terran] +¦ History : Current: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Last: +¦ History : Initial: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Default: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +LastWord : + + +¦==== Parameter : PLANET TYPE PROBABILITY WHITE +; Options : [None, Radiated, Toxic, Inferno, Dead, Tundra, Barren, +; " " : Minimal, Desert, Steppe, Arid, Ocean, Jungle, Terran] +¦ History : Current: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Last: +¦ History : Initial: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Default: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +LastWord : + + +¦==== Parameter : PLANET TYPE PROBABILITY PURPLE +; Options : [None, Radiated, Toxic, Inferno, Dead, Tundra, Barren, +; " " : Minimal, Desert, Steppe, Arid, Ocean, Jungle, Terran] +¦ History : Current: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Last: +¦ History : Initial: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Default: 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +¦ History : Game: +¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·] + +Continuation : 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +MyConfig : +ChangeGame : +FullRandom : random +MyRandom : +Vanilla : 1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0/1.0 +LastWord : + diff --git a/README.md b/README.md index 16f4333..6ba097c 100644 --- a/README.md +++ b/README.md @@ -19,8 +19,12 @@ Download build: https://rayfowler.itch.io/remnants-of-the-precursors ## What'New +2026.07.05 + - Added secondary options for Galaxy shapes. + - Added possibility to hide parameters in Profiles.cfg + 2026.07.01 - - Junit test integration + - Junit test integration to github - Pom file normalization - Minor bugs solved diff --git a/pom.xml b/pom.xml index 2c98fa7..e96dfe8 100644 --- a/pom.xml +++ b/pom.xml @@ -7,7 +7,7 @@ com.rayfowler rotp - 2022.07.01 + 2022.07.05 jar diff --git a/src/br/profileManager/src/main/java/AbstractGroup.java b/src/br/profileManager/src/main/java/AbstractGroup.java index 39d21c8..5457aca 100644 --- a/src/br/profileManager/src/main/java/AbstractGroup.java +++ b/src/br/profileManager/src/main/java/AbstractGroup.java @@ -30,13 +30,19 @@ public abstract class AbstractGroup extends WriteUtil { LinkedHashMap> parameterNameMap = new LinkedHashMap>(); - + private String headerComment= ""; // ======================================================================== // Constructor // protected AbstractGroup(C clientObject) { initSettingList(clientObject); } + protected AbstractGroup(C clientObject, String comment) { + initSettingList(clientObject); + if (comment != null) { + headerComment = comment; + } + } // ======================================================================== // Abstract Methods // @@ -102,7 +108,7 @@ public List profileList() { * @return parameters group as String, ready to be printed */ public String toString(List profileList, boolean cleanProfiles) { - String out = ""; + String out = toComment(headerComment) + NL + emptyCommentLines(1); for (AbstractParameter parameter : parameterNameMap.values() ) { if (cleanProfiles) { diff --git a/src/br/profileManager/src/main/java/AbstractParameter.java b/src/br/profileManager/src/main/java/AbstractParameter.java index 90ced32..e4137fb 100644 --- a/src/br/profileManager/src/main/java/AbstractParameter.java +++ b/src/br/profileManager/src/main/java/AbstractParameter.java @@ -36,6 +36,8 @@ public abstract class AbstractParameter< private static String historyHead = lineFormat("¦ History", ""); private static String historyKey = "¦ History"; private static String parameterKey = "¦==== Parameter"; + private static String hiddenKey = "HIDE"; + private static String hideSeparator = "-"; private static String historyElementsSeparator = " ¦ "; private static String historyNameValueSeparator = ": "; private static String availableForChange = "---- Available for changes in game saves"; @@ -70,11 +72,13 @@ void resetUserProfiles() { } public static void newConfig(PMconfig PM) { - optionsHead = lineFormat(toComment(PM.getConfig("optionsKey")), ""); - optionsSubHead = lineFormat(toComment(PM.getConfig("optionsSubKey")), ""); - historyHead = lineFormat(PM.getConfig("historyKey"), ""); - historyKey = PM.getConfig("historyKey"); - parameterKey = PM.getConfig("parameterKey"); + optionsHead = lineFormat(toComment(PM.getConfig("optionsKey")), ""); + optionsSubHead = lineFormat(toComment(PM.getConfig("optionsSubKey")), ""); + historyHead = lineFormat(PM.getConfig("historyKey"), ""); + historyKey = PM.getConfig("historyKey"); + parameterKey = PM.getConfig("parameterKey"); + hiddenKey = PM.getConfig("hiddenKey"); + hideSeparator = PM.getConfig("hideSeparator"); historyElementsSeparator = PM.getConfig("historyElementsSeparator"); historyNameValueSeparator = PM.getConfig("historyNameValueSeparator"); availableForChange = PM.getConfig("availableForChange"); @@ -133,6 +137,18 @@ private AbstractT getWinningCodeView (List profileNames) { return value; } + boolean isHidden() { + return localEnable.isHidden(); + } + void setHidden() { + localEnable.setHidden(); + } + void unHide() { + localEnable.unHide(); + } + void setLocalEnable(String value) { + localEnable.setValue(value); + } /** * Search for the winning code View and * Override the Game File parameter with it @@ -463,6 +479,13 @@ void forceCreationMissingProfile(List profileList) { public String toString(List groupCodeViews) { String out = NL; + if(isHidden()) { + // SETTING NAME + out += lineFormat(parameterKey + , parameterName + " " + hideSeparator + hiddenKey) + .toString() + NL; + return out; + } // HEAD COMMENTS out += multiLines(headComments , " ", commentPrt(), commentPrt(), "", true); @@ -476,8 +499,10 @@ public String toString(List groupCodeViews) { , " ", commentPrt(), commentPrt(), "", true); // OPTIONS LIST - out += multiLines(validation.getOptionsRange() - , " " ,optionsHead, optionsSubHead, "", true); + if (validation.getCriteria().showOptions()) { + out += multiLines(validation.getOptionsRange() + , " " ,optionsHead, optionsSubHead, "", true); + } // OPTIONS DESCRIPTION out += toCommentLine(validation.getOptionsDescription(), 1, 1); diff --git a/src/br/profileManager/src/main/java/AbstractProfiles.java b/src/br/profileManager/src/main/java/AbstractProfiles.java index 91cbc1b..9ab3190 100644 --- a/src/br/profileManager/src/main/java/AbstractProfiles.java +++ b/src/br/profileManager/src/main/java/AbstractProfiles.java @@ -42,8 +42,10 @@ public abstract class AbstractProfiles extends WriteUtil { // protected static final PMconfig PM = new PMconfig(); // Keep the initializations for Junit test - private static String continueOnNewLine = ".."; - private static String commentKey = ";"; + private static String breakLine = ".."; + private static String commentKey = ";"; + private static String hiddenKey = "HIDE"; + private static String hideSeparator = "-"; private List defaultUserSettingKeys = new ArrayList(List.of("User", "LastWord")); private boolean firstInit = true; @@ -55,7 +57,8 @@ public abstract class AbstractProfiles extends WriteUtil { private boolean cleanUserKeys = true; private AbstractParameter currentParameter; - private String currentParameterName; + private String currentParameterName; + private boolean currentParameterIsHidden = false; private AbstractGroup currentGroup; // ================================================== @@ -73,8 +76,10 @@ public AbstractProfiles(String jarPath, String configFileName) { * To be notified the config has been updated */ static void newConfig(PMconfig PM) { - continueOnNewLine = PM.getConfig("continueOnNewLine"); - commentKey = PM.getConfig("commentKey"); + breakLine = PM.getConfig("breakLine"); + commentKey = PM.getConfig("commentKey"); + hiddenKey = PM.getConfig("hiddenKey").toUpperCase(); + hideSeparator = PM.getConfig("hideSeparator"); } // ======================================================================== // Abstract Methods @@ -351,7 +356,7 @@ private void loadProfilesCfg() { String line; while ((line = in.readLine()) != null) { line = line.trim(); - while (line.endsWith(continueOnNewLine)) { + while (line.endsWith(breakLine)) { line = mergeLines(line, in.readLine()); } processLine(line.trim()); @@ -405,11 +410,22 @@ private void processLine(String line) { } // Test for New Setting Section if (AbstractParameter.isHeadOfParameter(key) ) { - currentParameterName = Lines.getValueAsString(line).toUpperCase(); + String local = Valid_LocalEnable.DEFAULT_VALUE; + currentParameterIsHidden = false; + String[] elements = Lines.getValueAsString(line) + .toUpperCase().split(hideSeparator, 2); + currentParameterName = elements[0].strip(); + if (elements.length == 2) { + local = elements[1].strip(); + if (local.equalsIgnoreCase(hiddenKey)) { + currentParameterIsHidden = true; + } + } // Test if initial profile list declaration if (parameterProfileAction.getParameterName() .equalsIgnoreCase(currentParameterName)) { currentParameter = parameterProfileAction; + currentParameterIsHidden = false; // big problem if hidden! currentGroup = null; return; } @@ -417,12 +433,14 @@ private void processLine(String line) { currentParameter = null; if (currentGroup != null) { currentParameter = currentGroup.getParameter(currentParameterName); + currentParameter.setLocalEnable(local); return; } return; } // it's a setting Line - if (currentParameter != null) { + if (currentParameter != null + && !currentParameterIsHidden) { currentParameter.addLine(line); } } diff --git a/src/br/profileManager/src/main/java/Lines.java b/src/br/profileManager/src/main/java/Lines.java index fdb262e..6bf2124 100644 --- a/src/br/profileManager/src/main/java/Lines.java +++ b/src/br/profileManager/src/main/java/Lines.java @@ -105,7 +105,7 @@ private Lines() {} // Forbidden constructor static void newConfig(PMconfig PM) { keyValueSeparator = PM.getConfig("keyValueSeparator"); keyValueSeparatorPrt = keyValueSeparator + PM.getConfig("valueSpacer"); - profilesBreakLines = " " + PM.getConfig("continueOnNewLine"); + profilesBreakLines = " " + PM.getConfig("breakLine"); baseKeyFormat = "%-" + PM.getConfig("lineSplitPosition") + "s"; keyFormat = baseKeyFormat + keyValueSeparatorPrt; keyValueFormat = "%-" + PM.getConfig("commentEndPosition") + "s"; diff --git a/src/br/profileManager/src/main/java/PMconfig.java b/src/br/profileManager/src/main/java/PMconfig.java index 0eb3c5b..e2174ae 100644 --- a/src/br/profileManager/src/main/java/PMconfig.java +++ b/src/br/profileManager/src/main/java/PMconfig.java @@ -48,7 +48,7 @@ interface NewConfig { PMconfig() { config.put("commentKey", ";"); config.put("commentSpacer", " "); - config.put("continueOnNewLine", ".."); + config.put("breakLine", ".."); config.put("keyValueSeparator", ":"); config.put("valueSpacer", " "); config.put("separatorSymbol", "="); @@ -62,6 +62,8 @@ interface NewConfig { config.put("clogId", "·"); config.put("randomId", "RANDOM"); config.put("parameterKey", "¦==== Parameter"); + config.put("hiddenKey", "Hide"); + config.put("hideSeparator", "-"); config.put("historyKey", "¦ History"); config.put("optionsKey", "Options"); config.put("--------------------", "----------"); diff --git a/src/br/profileManager/src/main/java/PMutil.java b/src/br/profileManager/src/main/java/PMutil.java index 1da9068..13dcf42 100644 --- a/src/br/profileManager/src/main/java/PMutil.java +++ b/src/br/profileManager/src/main/java/PMutil.java @@ -265,7 +265,6 @@ static String addLinebreaks(String input, String splitter, } return String.join(System.lineSeparator(), lines); } - /** * Remove first Space if one. * Originally done to restore original comment @@ -286,7 +285,6 @@ static String removeFirstSpace (String string) { } return string; } - /** * Remove last Space if one. Never null. * @param string the {@code String} to process @@ -301,7 +299,6 @@ static String removeLastSpace (String string) { } return string; } - /** * Get the last char of the {@code String} * @param string the {@code String} to process @@ -313,7 +310,6 @@ static String getLastChar(String string) { } return string.substring(string.length() - 1); } - /** * Convert {@code objects} to {@code String} * null {@code objects} are replaced by Empty {@code String} @@ -326,7 +322,6 @@ static String neverNull(Object obj) { } return obj.toString(); } - /** * Convert {@code objects} to {@code String} and strip them. * null {@code objects} are replaced by Empty {@code String} @@ -339,7 +334,6 @@ public static String clean(Object obj) { } return obj.toString().strip(); } - /** * Strip and convert to upper case * @param source the {@code String} to process @@ -348,7 +342,6 @@ public static String clean(Object obj) { static String toKey(String source) { return clean(source).toUpperCase(); } - /** * Strip and return in lower case with first char to upper case, never null * @param source the {@code String} to process @@ -366,7 +359,6 @@ static String toSentence(String source) { } return result.strip(); } - /** * Strip and return every word capitalized, never null * @param source the {@code String} to process @@ -384,7 +376,6 @@ public static String capitalize(String source) { } return result; } - /** * Strip and return every word capitalized, never null * or only first word @@ -400,13 +391,21 @@ static String capitalize(String source, boolean onlyFirstWord) { return capitalize(source); } } - + /** + * @param str Containing String + * @param target String to find + * @return The number of Occurrence + */ + public static int countStringOccurrence(String str, String target) { + return (str.length() - str.replace(target, "").length()) / target.length(); + } /** * Convert a {@code String} with several "_" to a more user friendly one * @param option the {@code String} Option + * @param minLength the minimal length of the two las elements String * @return the capitalized last element of the {@code String} (after "_") */ - static String suggestedUserViewFromCodeView (Object value) { + static String suggestedUserViewFromCodeView (Object value, int minLength) { if (value == null) { return "null"; } @@ -414,22 +413,46 @@ static String suggestedUserViewFromCodeView (Object value) { if (codeView == null) { return "null"; } - return toSentence(codeView.substring(codeView.lastIndexOf("_") + 1)); + String[] elements = codeView.split("_", 0); + int last = elements.length-1; + if (last > 1 && + (elements[last-1].length() <= minLength + || elements[last].length() <= minLength)) { + return capitalize(elements[last-1]) + "_" + capitalize(elements[last]); + } + return capitalize(elements[last]); + } + /** + * Convert a {@code String} with several "_" to a more user friendly one + * @param option the {@code String} Option + * @return the capitalized last element of the {@code String} (after "_") + */ + static String suggestedUserViewFromCodeView (Object value) { + return suggestedUserViewFromCodeView (value, 1); } /** * Convert a {@code String} with several "_" to a more user friendly one * @param list the {@code List} Option + * @param minLength the minimal length of the two las elements String * @return the capitalized last element of the {@code String} (after "_") */ - public static List suggestedUserViewFromCodeView (List list) { + public static List suggestedUserViewFromCodeView (List list, int minLength) { List result = new ArrayList(); if (list != null) { for (Object value : list) { - result.add(suggestedUserViewFromCodeView(value)); + result.add(suggestedUserViewFromCodeView(value, minLength)); } } return result; } + /** + * Convert a {@code String} with several "_" to a more user friendly one + * @param list the {@code List} Option + * @return the capitalized last element of the {@code String} (after "_") + */ + public static List suggestedUserViewFromCodeView (List list) { + return suggestedUserViewFromCodeView (list, 1); + } // ================================================== // Math Methods diff --git a/src/br/profileManager/src/main/java/PMutilTest.java b/src/br/profileManager/src/main/java/PMutilTest.java index 8de6a2d..6b49ac7 100644 --- a/src/br/profileManager/src/main/java/PMutilTest.java +++ b/src/br/profileManager/src/main/java/PMutilTest.java @@ -288,12 +288,6 @@ void suggestedOptionToLabel_String() { , "should have been «Source»"); assertEquals("Source", suggestedUserViewFromCodeView("VERY_OPTION_SOURCE") , "should have been «Source»"); - assertEquals("Source", suggestedUserViewFromCodeView("OPTION__SOURCE") - , "should have been «Source»"); - assertEquals("Source", suggestedUserViewFromCodeView("_SOURCE") - , "should have been «Source»"); - assertEquals("Source", suggestedUserViewFromCodeView("__SOURCE") - , "should have been «Source»"); } // ================================================== diff --git a/src/br/profileManager/src/main/java/Valid_LocalEnable.java b/src/br/profileManager/src/main/java/Valid_LocalEnable.java index c584d3f..157b942 100644 --- a/src/br/profileManager/src/main/java/Valid_LocalEnable.java +++ b/src/br/profileManager/src/main/java/Valid_LocalEnable.java @@ -24,12 +24,14 @@ public class Valid_LocalEnable extends Validation { // Keep the initializations for Junit test - private static String clogId = "·"; + private static String clogId = "·"; + private static String hiddenKey = "HIDE"; // From Valid_ConfigAction static final String LOAD_ENABLED = "ENABLE_LOAD_LIST"; static final String WRITE_ENABLED = "ENABLE_WRITE_LIST"; static final String GAME_ENABLED = "ENABLE_GAME_LIST"; static final String GUI_ENABLED = "ENABLE_GUI_LIST"; + static final String HIDDEN_ENABLED = "HIDDEN_LIST"; // static final String SPECIAL_ENABLED = "SPECIAL_LIST"; // static final String LOCAL_ENABLED = "LOCAL_LIST"; @@ -37,7 +39,7 @@ public class Valid_LocalEnable extends Validation { * Local Enable Key */ public static final String PARAMETER_NAME = "¦ LOCAL ENABLE"; - private static final String DEFAULT_VALUE = "ALL"; + static final String DEFAULT_VALUE = "ALL"; Valid_LocalEnable() { super(new T_String(DEFAULT_VALUE)); @@ -69,6 +71,9 @@ public class Valid_LocalEnable extends Validation { addOption("LOAD", "Allows actions that change GUI and GAMES" , LOAD_ENABLED + " " + GUI_ENABLED + " " + GAME_ENABLED); + addOption(hiddenKey, + "No actions are allowed in this Setting, and this Parameter won't be shown" , + HIDDEN_ENABLED); addOption(clogId, "No actions are allowed in this Setting" , ""); @@ -78,7 +83,8 @@ public class Valid_LocalEnable extends Validation { * To be notified that config has been updated */ static void newConfig(PMconfig PM) { - clogId = PM.getConfig("clogId"); + clogId = PM.getConfig("clogId"); + hiddenKey = PM.getConfig("hiddenKey").toUpperCase(); } // ========================================================== // Nested Classes @@ -130,6 +136,17 @@ boolean isWriteEnabled() { return isValueFromCategory(WRITE_ENABLED); } + boolean isHidden() { + return isValueFromCategory(HIDDEN_ENABLED); + } + + void setHidden() { + setValue("HIDE"); + } + void unHide() { + setValue(clogId); + } + // boolean isLocal() { // return isValueFromCategory(LOCAL_ENABLED); // } diff --git a/src/br/profileManager/src/main/java/Valid_LocalEnableTest.java b/src/br/profileManager/src/main/java/Valid_LocalEnableTest.java index f57bfb0..cc85efb 100644 --- a/src/br/profileManager/src/main/java/Valid_LocalEnableTest.java +++ b/src/br/profileManager/src/main/java/Valid_LocalEnableTest.java @@ -69,7 +69,7 @@ void isBlankValue_None() { @Test void toString_None() { - assertEquals("¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]", + assertEquals("¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]", new Line_LocalEnable().toString() , "should have been \"¦ LOCAL ENABLE : All ; [No, All, Save, Load]\""); } diff --git a/src/br/profileManager/src/main/java/ValidationCriteria.java b/src/br/profileManager/src/main/java/ValidationCriteria.java index f85e0ae..b778dd4 100644 --- a/src/br/profileManager/src/main/java/ValidationCriteria.java +++ b/src/br/profileManager/src/main/java/ValidationCriteria.java @@ -29,6 +29,7 @@ public class ValidationCriteria { private boolean userViewEquals = true ; private boolean codeViewEquals = true ; private boolean categoryEquals = false; + private boolean showOptions = true; private boolean userViewIsCaseSensitive = false; private boolean codeViewIsCaseSensitive = false; private boolean categoryIsCaseSensitive = false; @@ -71,6 +72,12 @@ boolean categoryEquals() { return categoryEquals; } + /** + * @return true: options should be shown + */ + boolean showOptions() { + return showOptions; + } boolean userViewIsCaseSensitive() { return userViewIsCaseSensitive; } @@ -147,6 +154,15 @@ public ValidationCriteria categoryEquals(boolean equals) { return this; } + /** + * set showOptions + * @param show the new value + * @return this for chaining purpose + */ + public ValidationCriteria showOptions(boolean show) { + showOptions = show; + return this; + } /** * @param caseSensitive the new value * @return this for chaining purpose diff --git a/src/mod/br/AddOns/RaceFilter.java b/src/mod/br/AddOns/RaceFilter.java index c98e4a2..f4addbc 100644 --- a/src/mod/br/AddOns/RaceFilter.java +++ b/src/mod/br/AddOns/RaceFilter.java @@ -30,6 +30,13 @@ public class RaceFilter { private static List selectedGuiRaceFilter; private static String[] startOpponentRace; + private static List defaultGameAIList; // = all Random + private static List defaultGuiAIList; + private static List randomAIList; + private static List allRandomAIList; + private static List selectedGameAIFilter; + private static List selectedGuiAIFilter; + private static String[] startOpponentAI; // ========== Setters ========== // /** @@ -56,6 +63,38 @@ public static void selectedGuiRaceFilter(List newRaceList) { public static void startOpponentRace(String[] newRaceList) { startOpponentRace = newRaceList; } + /** + * @param newAIList the new default Game AIList to set + */ + public static void defaultGameAIList(List newAIList) { + defaultGameAIList = newAIList; + allRandomAIList = newAIList.subList(0, newAIList.size()-2); + randomAIList = newAIList.subList(0, newAIList.size()-3); + } + /** + * @param newAIList the new default Gui AIList to set + */ + public static void defaultGuiAIList(List newAIList) { + defaultGuiAIList = newAIList; + } + /** + * @param newAIList the AI List to set + */ + public static void selectedGameAIFilter(List newAIList) { + selectedGameAIFilter = newAIList; + } + /** + * @param newAIList the AI Filter to set + */ + public static void selectedGuiAIFilter(List newAIList) { + selectedGuiAIFilter = newAIList; + } + /** + * @param newAIList the Preset Opponents to set + */ + public static void startOpponentAI(String[] newAIList) { + startOpponentAI = newAIList; + } // ========== Getters ========== // /** @@ -90,6 +129,56 @@ public static List selectedGuiRaceFilter() { public static String[] startOpponentRace() { return startOpponentRace; } + /** + * @return the Default Game AI List + */ + public static List defaultGameAIList() { + return defaultGameAIList; + } + /** + * @return the Default Gui AI List + */ + public static List defaultGuiAIList() { + return defaultGuiAIList; + } + /** + * @return the random AI List + */ + public static List randomAIList() { + return randomAIList; + } + /** + * @return the all random AI List + */ + public static List allRandomAIList() { + return allRandomAIList; + } + /** + * @return the race List + */ + public static List selectedGameAIFilter() { + if (selectedGameAIFilter == null + || selectedGameAIFilter.toString().isBlank()) { + return defaultGameAIList; + } + return selectedGameAIFilter; + } + /** + * @return the AI Filter + */ + public static List selectedGuiAIFilter() { + if (selectedGuiAIFilter == null + || selectedGuiAIFilter.toString().isBlank()) { + return defaultGuiAIList; + } + return selectedGuiAIFilter; + } + /** + * @return the Preset Opponents AI + */ + public static String[] startOpponentAI() { + return startOpponentAI; + } // ========== Other Methods ========== // } diff --git a/src/mod/br/profileManager/Group_Advanced.java b/src/mod/br/profileManager/Group_Advanced.java index 2778438..08364dd 100644 --- a/src/mod/br/profileManager/Group_Advanced.java +++ b/src/mod/br/profileManager/Group_Advanced.java @@ -32,7 +32,13 @@ public class Group_Advanced extends AbstractGroup { Group_Advanced(ClientClasses go) { - super(go); + super(go, getHeadComments()); + } + + private static String getHeadComments() { + return " " + NL + + "----------- Advanced Game Options -----------" + NL + + ""; } @Override protected void initSettingList(ClientClasses go) { @@ -85,12 +91,7 @@ static class GalaxyAge extends go.options().selectedGalaxyAge(value.getCodeView()); } - @Override public void initComments() { - setHeadComments( - " " + NL + - "----------- Advanced Game Options -----------" + NL + - " "); - } + @Override public void initComments() {} } // ============================================================== // STAR DENSITY diff --git a/src/mod/br/profileManager/Group_AdvancedTest.java b/src/mod/br/profileManager/Group_AdvancedTest.java index 90b3fbb..6ad03c7 100644 --- a/src/mod/br/profileManager/Group_AdvancedTest.java +++ b/src/mod/br/profileManager/Group_AdvancedTest.java @@ -16,14 +16,11 @@ class Group_AdvancedTest { private String galaxyAgePrt = "\r\n" - + "; \r\n" - + "; ----------- Advanced Game Options -----------\r\n" - + "; \r\n" + "¦==== Parameter : GALAXY AGE\r\n" + "; Options : [Young, Normal, Old]\r\n" + "¦ History : Current: Normal ¦ Last: ¦ Initial: Normal ¦ Default: Normal\r\n" + "¦ History : Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -36,7 +33,7 @@ class Group_AdvancedTest { + "; Options : [Lowest, Lower, Low, Normal, High, Higher, Highest]\r\n" + "¦ History : Current: Normal ¦ Last: ¦ Initial: Normal ¦ Default: Normal\r\n" + "¦ History : Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -49,7 +46,7 @@ class Group_AdvancedTest { + "; Options : [None, Rare, Uncommon, Normal, Common, Frequent]\r\n" + "¦ History : Current: Normal ¦ Last: ¦ Initial: Normal ¦ Default: Normal\r\n" + "¦ History : Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -62,7 +59,7 @@ class Group_AdvancedTest { + "; Options : [Normal, Larger, Richer]\r\n" + "¦ History : Current: Normal ¦ Last: ¦ Initial: Normal ¦ Default: Normal\r\n" + "¦ History : Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -75,7 +72,7 @@ class Group_AdvancedTest { + "; Options : [Normal, Reduced, None]\r\n" + "¦ History : Current: Normal ¦ Last: ¦ Initial: Normal ¦ Default: Normal\r\n" + "¦ History : Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -88,7 +85,7 @@ class Group_AdvancedTest { + "; Options : [On, Monsters, Off]\r\n" + "¦ History : Current: Monsters ¦ Last: ¦ Initial: Monsters ¦ Default: On\r\n" + "¦ History : Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -102,7 +99,7 @@ class Group_AdvancedTest { + "; Options : [Lowest, Lower, Low, Normal, High, Higher, Highest]\r\n" + "¦ History : Current: Normal ¦ Last: ¦ Initial: Normal ¦ Default: Normal\r\n" + "¦ History : Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -115,7 +112,7 @@ class Group_AdvancedTest { + "; Options : [Immediate, Rebels, None]\r\n" + "¦ History : Current: Rebels ¦ Last: ¦ Initial: Rebels ¦ Default: Rebels\r\n" + "¦ History : Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -129,7 +126,7 @@ class Group_AdvancedTest { + "; Options : [None, Personality, Ability, Both]\r\n" + "¦ History : Current: None ¦ Last: ¦ Initial: None ¦ Default: None\r\n" + "¦ History : Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -141,7 +138,7 @@ class Group_AdvancedTest { + "¦==== Parameter : AUTOPLAY\r\n" + "; Options : [Off, Base, Xilmi]\r\n" + "¦ History : Current: Off ¦ Last: ¦ Initial: Off ¦ Default: Off ¦ Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -154,7 +151,7 @@ class Group_AdvancedTest { + "; Options : [Normal, Slow, Slower, Slowest, Fast]\r\n" + "¦ History : Current: Normal ¦ Last: ¦ Initial: Normal ¦ Default: Normal\r\n" + "¦ History : Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -167,7 +164,7 @@ class Group_AdvancedTest { + "; Options : [Normal, Fast]\r\n" + "¦ History : Current: Normal ¦ Last: ¦ Initial: Normal ¦ Default: Normal\r\n" + "¦ History : Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -180,7 +177,7 @@ class Group_AdvancedTest { + "; Options : [Normal]\r\n" + "¦ History : Current: Normal ¦ Last: ¦ Initial: Normal ¦ Default: Normal\r\n" + "¦ History : Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -192,7 +189,7 @@ class Group_AdvancedTest { + "¦==== Parameter : TECH TRADING\r\n" + "; Options : [Yes, Allies, No]\r\n" + "¦ History : Current: Yes ¦ Last: ¦ Initial: Yes ¦ Default: Yes ¦ Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -206,7 +203,7 @@ class Group_AdvancedTest { + "; Options : [Normal, Restricted]\r\n" + "¦ History : Current: Normal ¦ Last: ¦ Initial: Normal ¦ Default: Normal\r\n" + "¦ History : Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -334,20 +331,6 @@ class Group_AdvancedTest { assertEquals(shouldBe, out, "should have been equals"); } -// @Test void Group_Advanced_ClientClasses() { -// Group_Advanced group; -// group = new Group_Advanced(cct); -// String out = group.toString(List.of("Profile 1", "Random")); -// String shouldBe = galaxyAgePrt + starDensityPrt + nebulaePrt -// + planetQualityPrt + terraformingPrt + randomEventsPrt -// + AIHostilityPrt + councilPrt + randomizeAIPrt -// + autoPlayPrt + researchPrt + warpSpeedPrt -// + fuelRangePrt + techTradingPrt + colonizingPrt -// ; -// assertEquals(shouldBe, out, "should have been equals"); -// // System.out.println(out); -// } - @Test void profileList_None() { Group_Advanced group; group = new Group_Advanced(cct); diff --git a/src/mod/br/profileManager/Group_BrokenRegistry.java b/src/mod/br/profileManager/Group_BrokenRegistry.java index a5797aa..38fa5ba 100644 --- a/src/mod/br/profileManager/Group_BrokenRegistry.java +++ b/src/mod/br/profileManager/Group_BrokenRegistry.java @@ -51,7 +51,13 @@ public class Group_BrokenRegistry extends AbstractGroup { // PMutil.suggestedUserViewFromCodeView(PLANET_TYPES); Group_BrokenRegistry(ClientClasses go) { - super(go); + super(go, getHeadComments()); + } + + private static String getHeadComments() { + return " " + NL + + "------------- Broken Registry Options -------------" + NL + + ""; } @Override protected void initSettingList(ClientClasses go) { @@ -131,9 +137,6 @@ static class FlagColorOrder extends @Override public void initComments() { setBottomComments(dynamicParameter()); - setHeadComments(" " + NL - + "------------- Broken Registry Options -------------" + NL - + " "); setSettingComments(" " + NL + "This setting will change scrolling order of the star flags in the galaxy map" + NL + "List lenght may be shortened. by removing some colors" + NL diff --git a/src/mod/br/profileManager/Group_BrokenRegistryTest.java b/src/mod/br/profileManager/Group_BrokenRegistryTest.java index 292125a..6a1ded2 100644 --- a/src/mod/br/profileManager/Group_BrokenRegistryTest.java +++ b/src/mod/br/profileManager/Group_BrokenRegistryTest.java @@ -20,7 +20,7 @@ class Group_BrokenRegistryTest { + "¦ History : Current: 1.0/1.0/1.0/1.0/1.0/1.0 ¦ Last: \r\n" + "¦ History : Initial: 1.0/1.0/1.0/1.0/1.0/1.0\r\n" + "¦ History : Default: 1.0/1.0/1.0/1.0/1.0/1.0 ¦ Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" diff --git a/src/mod/br/profileManager/Group_Galaxy.java b/src/mod/br/profileManager/Group_Galaxy.java index 2dbf1b0..7827cfd 100644 --- a/src/mod/br/profileManager/Group_Galaxy.java +++ b/src/mod/br/profileManager/Group_Galaxy.java @@ -19,6 +19,19 @@ import static br.profileManager.src.main.java.Validation.History.Default; import static br.profileManager.src.main.java.Validation.History.Initial; +import static rotp.model.game.IGameOptions.SHAPE_BULLSEYE; +import static rotp.model.game.IGameOptions.SHAPE_CLUSTER; +import static rotp.model.game.IGameOptions.SHAPE_ELLIPTICAL; +import static rotp.model.game.IGameOptions.SHAPE_FRACTAL; +import static rotp.model.game.IGameOptions.SHAPE_GRID; +import static rotp.model.game.IGameOptions.SHAPE_LORENZ; +import static rotp.model.game.IGameOptions.SHAPE_MAZE; +import static rotp.model.game.IGameOptions.SHAPE_RECTANGLE; +import static rotp.model.game.IGameOptions.SHAPE_SHURIKEN; +import static rotp.model.game.IGameOptions.SHAPE_SPIRAL; +import static rotp.model.game.IGameOptions.SHAPE_SPIRALARMS; +import static rotp.model.game.IGameOptions.SHAPE_SWIRLCLUSTERS; +import static rotp.model.game.IGameOptions.SHAPE_TEXT; import java.util.ArrayList; import java.util.List; @@ -31,6 +44,19 @@ import br.profileManager.src.main.java.Validation; import mod.br.AddOns.RaceFilter; import rotp.model.empires.Empire; +import rotp.model.galaxy.GalaxyBullseyeShape; +import rotp.model.galaxy.GalaxyClusterShape; +import rotp.model.galaxy.GalaxyEllipticalShape; +import rotp.model.galaxy.GalaxyFractalShape; +import rotp.model.galaxy.GalaxyGridShape; +import rotp.model.galaxy.GalaxyLorenzShape; +import rotp.model.galaxy.GalaxyMazeShape; +import rotp.model.galaxy.GalaxyRectangularShape; +import rotp.model.galaxy.GalaxyShurikenShape; +import rotp.model.galaxy.GalaxySpiralArmsShape; +import rotp.model.galaxy.GalaxySpiralShape; +import rotp.model.galaxy.GalaxySwirlClustersShape; +import rotp.model.galaxy.GalaxyTextShape; import rotp.model.game.IGameOptions; /** @@ -40,12 +66,69 @@ public class Group_Galaxy extends AbstractGroup { Group_Galaxy(ClientClasses go) { - super(go); + super(go, getHeadComments()); } - @Override - protected void initSettingList(ClientClasses go) { + private static String getHeadComments() { + return " " + NL + + "------------- Galaxy Options -------------" + NL + + ""; + } + + @Override protected void initSettingList(ClientClasses go) { addParameter(new GalaxyShape(go)); addParameter(new GalaxySize(go)); + addParameter(new ShapeOption(go, "SHAPE RECTANGLE OPTION 1" + , SHAPE_RECTANGLE, 1, GalaxyRectangularShape.options1)); + addParameter(new ShapeOption(go, "SHAPE RECTANGLE OPTION 2" + , SHAPE_RECTANGLE, 2, GalaxyRectangularShape.options2)); + addParameter(new ShapeOption(go, "SHAPE ELLIPTICAL OPTION 1" + , SHAPE_ELLIPTICAL, 1, GalaxyEllipticalShape.options1)); + addParameter(new ShapeOption(go, "SHAPE ELLIPTICAL OPTION 2" + , SHAPE_ELLIPTICAL, 2, GalaxyEllipticalShape.options2)); + addParameter(new ShapeOption(go, "SHAPE SPIRAL OPTION 1" + , SHAPE_SPIRAL, 1, GalaxySpiralShape.options1)); + addParameter(new ShapeOption(go, "SHAPE SPIRAL OPTION 2" + , SHAPE_SPIRAL, 2, GalaxySpiralShape.options2)); + addParameter(new ShapeOption(go, "SHAPE TEXT OPTION 1" + , SHAPE_TEXT, 1, GalaxyTextShape.options1)); + addParameter(new ShapeOption(go, "SHAPE TEXT OPTION 2" + , SHAPE_TEXT, 2, GalaxyTextShape.options2)); + addParameter(new ShapeOption(go, "SHAPE LORENZ OPTION 1" + , SHAPE_LORENZ, 1, GalaxyLorenzShape.options1)); + addParameter(new ShapeOption(go, "SHAPE LORENZ OPTION 2" + , SHAPE_LORENZ, 2, GalaxyLorenzShape.options2)); + addParameter(new ShapeOption(go, "SHAPE FRACTAL OPTION 1" + , SHAPE_FRACTAL, 1, GalaxyFractalShape.options1)); + addParameter(new ShapeOption(go, "SHAPE FRACTAL OPTION 2" + , SHAPE_FRACTAL, 2, GalaxyFractalShape.options2)); + addParameter(new ShapeOption(go, "SHAPE MAZE OPTION 1" + , SHAPE_MAZE, 1, GalaxyMazeShape.options1)); +// addParameter(new ShapeOption(go, "SHAPE MAZE OPTION 2" +// , SHAPE_MAZE, 2, GalaxyMazeShape.options2)); + addParameter(new ShapeOption(go, "SHAPE SHURIKEN OPTION 1" + , SHAPE_SHURIKEN, 1, GalaxyShurikenShape.options1)); +// addParameter(new ShapeOption(go, "SHAPE SHURIKEN OPTION 2" +// , SHAPE_SHURIKEN, 2, GalaxyShurikenShape.options2)); + addParameter(new ShapeOption(go, "SHAPE BULLSEYE OPTION 1" + , SHAPE_BULLSEYE, 1, GalaxyBullseyeShape.options1)); +// addParameter(new ShapeOption(go, "SHAPE BULLSEYE OPTION 2" +// , SHAPE_BULLSEYE, 2, GalaxyBullseyeShape.options2)); + addParameter(new ShapeOption(go, "SHAPE GRID OPTION 1" + , SHAPE_GRID, 1, GalaxyGridShape.options1)); +// addParameter(new ShapeOption(go, "SHAPE GRID OPTION 2" +// , SHAPE_GRID, 2, GalaxyGridShape.options2)); + addParameter(new ShapeOption(go, "SHAPE CLUSTER OPTION 1" + , SHAPE_CLUSTER, 1, GalaxyClusterShape.options1)); +// addParameter(new ShapeOption(go, "SHAPE CLUSTER OPTION 2" +// , SHAPE_CLUSTER, 2, GalaxyClusterShape.options2)); + addParameter(new ShapeOption(go, "SHAPE SWIRLCLUSTERS OPTION 1" + , SHAPE_SWIRLCLUSTERS, 1, GalaxySwirlClustersShape.options1)); +// addParameter(new ShapeOption(go, "SHAPE SWIRLCLUSTERS OPTION 2" +// , SHAPE_SWIRLCLUSTERS, 2, GalaxySwirlClustersShape.options2)); + addParameter(new ShapeOption(go, "SHAPE SPIRALARMS OPTION 1" + , SHAPE_SPIRALARMS, 1, GalaxySpiralArmsShape.options1)); +// addParameter(new ShapeOption(go, "SHAPE SPIRALARMS OPTION 2" +// , SHAPE_SPIRALARMS, 2, GalaxySpiralArmsShape.options2)); addParameter(new Difficulty(go)); addParameter(new OpponentAI(go)); addParameter(new NbOpponent(go)); @@ -57,7 +140,7 @@ protected void initSettingList(ClientClasses go) { // ========== Common Methods ========== // - private static List getOptionList(ClientClasses go) { + private static List getRaceOptionList(ClientClasses go) { List list = go.newOptions().startingRaceOptions(); list.add("null"); list.add("gui"); @@ -65,20 +148,96 @@ private static List getOptionList(ClientClasses go) { return list; } - private static List getFromGUI(IGameOptions options) { + private static List getAIOptionList(ClientClasses go) { + List list = go.newOptions().specificOpponentAIOptions(); + list.add("gui"); + list.add("game"); + return list; + } + + private static String getInitialAI(ClientClasses go) { + List list = go.newOptions().specificOpponentAIOptions(); + return list.get(list.size()-2); + } + + private static List getRaceFromGUI(IGameOptions options) { List list = new ArrayList() ; String race; int lim = options.selectedNumberOpponents(); for (int i=0; i getAIFromGUI(IGameOptions options) { + List list = new ArrayList() ; + String ai; + int lim = options.selectedNumberOpponents(); + for (int i=0; i, ClientClasses> { + + private final String shapeCodeView; + private final int optionLevel; + // ========== Constructors and initializer ========== + // + ShapeOption(ClientClasses go, String name, String codeView + , int level, List options) { + super(name, new Validation(new T_String(options.get(0)), options)); + shapeCodeView = codeView; + optionLevel = level; + setHistory(Default, options.get(0)); + } + // ========== Overriders ========== + // + @Override public AbstractT getFromGame (ClientClasses go) { + return new T_String(""); // No way to know + } + @Override public void putToGame(ClientClasses go, AbstractT value) {} + @Override public AbstractT getFromUI (ClientClasses go) { + if (go.newOptions().selectedGalaxyShape() == shapeCodeView) { + switch (optionLevel) { + case 1: + return new T_String(go.newOptions().selectedGalaxyShapeOption1()); + case 2: + return new T_String(go.newOptions().selectedGalaxyShapeOption2()); + } + } + return new T_String(""); + } + @Override public void putToGUI(ClientClasses go, AbstractT value) { + if (go.newOptions().selectedGalaxyShape() == shapeCodeView) { + switch (optionLevel) { + case 1: + go.newOptions().selectedGalaxyShapeOption1(value.getCodeView()); + go.options().selectedGalaxyShapeOption1(value.getCodeView()); + return; + case 2: + go.newOptions().selectedGalaxyShapeOption2(value.getCodeView()); + go.options().selectedGalaxyShapeOption2(value.getCodeView()); + return; + } + } + } + @Override public void initComments() {} + } // ============================================================== // GALAXY SHAPE // @@ -115,12 +274,7 @@ static class GalaxyShape extends go.options().selectedGalaxyShape(value.getCodeView()); } - @Override public void initComments() { - setHeadComments( - " " + NL + - "------------- Galaxy Options -------------" + NL + - " "); - } + @Override public void initComments() {} } // ============================================================== // GALAXY SIZE @@ -328,7 +482,7 @@ static class GuiRaceFilter extends + " or if your planetary distribution affect a race too much," + " you are able to remove them form the pool of selectable opponents." + NL + "Only the opponents on the list will be shown when you click on the selection rectangle." + NL - + "The race list must be written using “/” as separator." + NL + + "The race list must be written using \"/\" as separator." + NL + "!!! Don’t break the lines !!! even if they become very long..." + " There is no multi-line analysis." + NL); @@ -378,7 +532,7 @@ static class GameRaceFilter extends + " or if your planetary distribution affect a race too much," + " you are able to remove them form the pool of selectable opponents." + NL + "Only the opponents on the list will be used by the random generator when starting a new game." + NL - + "The race list must be written using “/” as separator." + NL + + "The race list must be written using \"/\" as separator." + NL + "!!! Don’t break the lines !!! even if they become very long..." + " There is no multi-line analysis." + NL); @@ -399,7 +553,7 @@ static class GuiPresetOpponent extends super("GUI PRESET OPPONENT", new Valid_RaceList( new T_String(go.newOptions().selectedPlayerRace()) - , getOptionList(go) + , getRaceOptionList(go) ) ); @@ -427,7 +581,7 @@ static class GuiPresetOpponent extends @Override public void putToGame(ClientClasses go, AbstractT value) {} @Override public AbstractT getFromUI (ClientClasses go) { - return new T_String().setFromCodeView(getFromGUI(go.newOptions())); + return new T_String().setFromCodeView(getRaceFromGUI(go.newOptions())); } @Override public void putToGUI(ClientClasses go, AbstractT value) { @@ -447,15 +601,15 @@ static class GuiPresetOpponent extends setSettingComments(" " + NL + "To fill the opponent list or suggest random opponents from a list." + NL + "If option is empty, the opponent is not changed." + NL - + "If the option is “null” the result is an empty rectangle." + NL - + "If the option is “random” the opponent will be selected from the full race list." + NL - + "If the option is “GUI” the opponent will be selected from the GUI RACE FILTER list." + NL - + "If the option is “GAME” the opponent will be selected from the GAME RACE FILTER list." + NL - + "If the option is “random race_1, race_2, race_N” the opponent will be selected from the given list." + NL + + "If the option is \"null\" the result is an empty rectangle." + NL + + "If the option is \"random\" the opponent will be selected from the full race list." + NL + + "If the option is \"GUI\" the opponent will be selected from the GUI RACE FILTER list." + NL + + "If the option is \"GAME\" the opponent will be selected from the GAME RACE FILTER list." + NL + + "If the option is \"random race_1, race_2, race_N\" the opponent will be selected from the given list." + NL + "If the list is shorter than the number of opponents and the last option is random:" + " this last option will be applied to the remaining opponents." + " Otherwise the remaining opponents aren’t changed." + NL - + "The race list must be written using “/” as separator." + NL + + "The race list must be written using \"/\" as separator." + NL + "!!! Don’t break the lines !!! even if they become very long..." + " There is no multi-line analysis." + NL); @@ -479,7 +633,7 @@ public static class StartPresetOpponent extends super("START PRESET OPPONENT", new Valid_RaceList( new T_String(go.newOptions().selectedPlayerRace()) - , getOptionList(go) + , getRaceOptionList(go) ) ); @@ -507,7 +661,7 @@ public static class StartPresetOpponent extends @Override public void putToGame(ClientClasses go, AbstractT value) {} @Override public AbstractT getFromUI (ClientClasses go) { - return new T_String().setFromCodeView(getFromGUI(go.newOptions())); + return new T_String().setFromCodeView(getRaceFromGUI(go.newOptions())); } @Override public void putToGUI(ClientClasses go, AbstractT value) { @@ -522,18 +676,17 @@ public static class StartPresetOpponent extends setSettingComments(" " + NL + "To replace the random opponent generation when starting a new game." + NL + "If option is empty or null, the opponent will be randomly selected." + NL - + "If the option is “random” the opponent will be selected from the full race list." + NL - + "If the option is “GUI” the opponent will be selected from the GUI RACE FILTER list." + NL - + "If the option is “GAME” the opponent will be selected from the GAME RACE FILTER list." + NL - + "If the option is “random race_1, race_2, race_N”" + + "If the option is \"random\" the opponent will be selected from the full race list." + NL + + "If the option is \"GUI\" the opponent will be selected from the GUI RACE FILTER list." + NL + + "If the option is \"GAME\" the opponent will be selected from the GAME RACE FILTER list." + NL + + "If the option is \"random race_1, race_2, race_N\"" + " the opponent will be selected from the given list." + NL + "If the list is shorter than the number of opponents," + " this last option will be applied to the remaining opponents." - + " Otherwise the remaining opponents aren’t changed." + NL + "When the maximum number of a type of opponent (5) is reached," + " it’ll be removed from the list of allowed opponents." + " When this list is empty, sorry, a forbidden race will be chosen." + NL - + "The race list must be written using “/” as separator." + NL + + "The race list must be written using \"/\" as separator." + NL + "!!! Don’t break the lines !!! even if they become very long..." + " There is no multi-line analysis." + NL); @@ -555,4 +708,5 @@ public void loadOpponents(ClientClasses go) { } } } + } diff --git a/src/mod/br/profileManager/Group_GalaxyTest.java b/src/mod/br/profileManager/Group_GalaxyTest.java index a6d2e8e..0b2249c 100644 --- a/src/mod/br/profileManager/Group_GalaxyTest.java +++ b/src/mod/br/profileManager/Group_GalaxyTest.java @@ -19,15 +19,12 @@ class Group_GalaxyTest { private String galaxyShapePrt = "\r\n" - + "; \r\n" - + "; ------------- Galaxy Options -------------\r\n" - + "; \r\n" + "¦==== Parameter : GALAXY SHAPE\r\n" + "; Options : [Rectangle, Ellipse, Spiral, Text, Cluster, Swirlclusters,\r\n" + "; \" \" : Grid, Spiralarms, Maze, Shuriken, Bullseye, Lorenz, Fractal]\r\n" + "¦ History : Current: Rectangle ¦ Last: ¦ Initial: Rectangle\r\n" + "¦ History : Default: Rectangle ¦ Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -42,7 +39,7 @@ class Group_GalaxyTest { + "; \" \" : Insane, Ludicrous, Maximum]\r\n" + "¦ History : Current: Small ¦ Last: ¦ Initial: Small ¦ Default: Small\r\n" + "¦ History : Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -56,7 +53,7 @@ class Group_GalaxyTest { + "; \" \" : Custom]\r\n" + "¦ History : Current: Normal ¦ Last: ¦ Initial: Normal ¦ Default: Easy\r\n" + "¦ History : Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -69,7 +66,7 @@ class Group_GalaxyTest { + "; Options : [Base, Xilmi, Select]\r\n" + "¦ History : Current: Base ¦ Last: ¦ Initial: Base ¦ Default: Base\r\n" + "¦ History : Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -81,7 +78,7 @@ class Group_GalaxyTest { + "¦==== Parameter : NB OPPONENTS\r\n" + "; Options : [Min=0, Max=15, Rnd Low=1, Rnd Up=15]\r\n" + "¦ History : Current: 4 ¦ Last: ¦ Initial: 4 ¦ Default: 3 ¦ Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -98,7 +95,7 @@ class Group_GalaxyTest { + "¦ History : Initial : Human/Alkari/Silicoid/Mrrshan/Klackon/Meklar/Psilon/Darlok/Sakkra/Bulrathi\r\n" + "¦ History : Default : Human/Alkari/Silicoid/Mrrshan/Klackon/Meklar/Psilon/Darlok/Sakkra/Bulrathi\r\n" + "¦ History : Game : \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 : \r\n" + "Random : \r\n" @@ -144,16 +141,6 @@ class Group_GalaxyTest { assertEquals(shouldBe, out, "should have been equals"); } - @Test void profileList_None() { - Group_Galaxy group; - group = new Group_Galaxy(cct); - assertEquals("[GALAXY SHAPE, GALAXY SIZE, DIFFICULTY, OPPONENT AI" - + ", NB OPPONENTS, GUI RACE FILTER, GAME RACE FILTER" - + ", GUI PRESET OPPONENT, START PRESET OPPONENT]", - group.profileList().toString(), - "should have been a long list"); - } - @Test void getParameter_String() { String param; Group_Galaxy group; diff --git a/src/mod/br/profileManager/Group_Governor.java b/src/mod/br/profileManager/Group_Governor.java index 5565e6a..e8ec60e 100644 --- a/src/mod/br/profileManager/Group_Governor.java +++ b/src/mod/br/profileManager/Group_Governor.java @@ -29,10 +29,15 @@ class Group_Governor extends AbstractGroup { Group_Governor(ClientClasses go) { - super(go); + super(go, getHeadComments()); } - @Override - protected void initSettingList(ClientClasses go) { + private static String getHeadComments() { + return " " + NL + + "------------- Governor Options -------------" + NL + + " "; + } + + @Override protected void initSettingList(ClientClasses go) { addParameter(new GovernorOnByDefault(go)); addParameter(new AutospendOnByDefault(go)); addParameter(new DefaultMaxBases(go)); @@ -65,12 +70,7 @@ public static class GovernorOnByDefault extends UserPreferences.setGovernorOn(value.getCodeView()); } - @Override public void initComments() { - setHeadComments( - " " + NL + - "------------- Governor Options -------------" + NL + - " "); - } + @Override public void initComments() {} } // ============================================================== // AUTOSPEND ON BY DEFAULT diff --git a/src/mod/br/profileManager/Group_Modnar.java b/src/mod/br/profileManager/Group_Modnar.java index e06a407..b090ad2 100644 --- a/src/mod/br/profileManager/Group_Modnar.java +++ b/src/mod/br/profileManager/Group_Modnar.java @@ -42,10 +42,15 @@ class Group_Modnar extends AbstractGroup { Group_Modnar(ClientClasses go) { - super(go); + super(go, getHeadComments()); } - @Override - protected void initSettingList(ClientClasses go) { + private static String getHeadComments() { + return " " + NL + + "------------- Modnar's Options -------------" + NL + + ""; + } + + @Override protected void initSettingList(ClientClasses go) { addParameter(new AlwaysStarGates(go)); addParameter(new AlwaysThorium(go)); addParameter(new ChallengeMode(go)); @@ -55,8 +60,6 @@ protected void initSettingList(ClientClasses go) { addParameter(new CustomDifficulty(go)); addParameter(new DynamicDifficulty(go)); addParameter(new MissileSizeModifier(go)); -// addParameter(new RetreatRestrictions(go)); -// addParameter(new RetreatRestrictionTurns(go)); } // ============================================================== @@ -104,10 +107,6 @@ static class AlwaysStarGates extends } @Override public void initComments() { - setHeadComments( - " " + NL + - "------------- Modnar's Options -------------" + NL + - " "); setBottomComments(availableForChange()); } } @@ -396,76 +395,4 @@ static class MissileSizeModifier extends setBottomComments(dynamicParameter()); } } -// // ============================================================== -// // RETREAT RESTRICTIONS -// // -// static class RetreatRestrictions extends -// AbstractParameter { -// -// RetreatRestrictions(ClientClasses go) { -// super("RETREAT RESTRICTIONS", -// new Valid_IntegerWithList( -// UserPreferences.retreatRestrictions() -// , StartModOptionsUI.getRetreatRestrictionOptions())); -// setHistoryCodeView(Initial, UserPreferences.retreatRestrictions()); -// setHistoryCodeView(Default, 0); -// setHistory(Current, Initial); -// } -// -// @Override public AbstractT getFromGame (ClientClasses go) { // BR: Validate Dynamic -// return new T_Integer(UserPreferences.retreatRestrictions()); // Dynamic: Same as UserPreferences -// } -// -// @Override public void putToGame(ClientClasses go, AbstractT value) { -// UserPreferences.setMissileSizeModifier(value.getCodeView()); // Dynamic: Same as UserPreferences -// } -// -// @Override public AbstractT getFromUI (ClientClasses go) { -// return new T_Integer(UserPreferences.retreatRestrictions()); -// } -// -// @Override public void putToGUI(ClientClasses go, AbstractT value) { -// UserPreferences.setMissileSizeModifier(value.getCodeView()); -// } -// -// @Override public void initComments() { -// setBottomComments(dynamicParameter()); -// } -// } -// // ============================================================== -// // RETREAT RESTRICTION TURNS -// // -// static class RetreatRestrictionTurns extends -// AbstractParameter , ClientClasses> { -// -// RetreatRestrictionTurns(ClientClasses go) { -// super("RETREAT RESTRICTION TURNS", -// new Validation( -// new T_Integer(UserPreferences.retreatRestrictionTurns()))); -// -// setHistoryCodeView(Default, 100); // XILMI DEFAULT -// setLimits(0 , 100); -// setDefaultRandomLimits(0 , 100); -// } -// -// @Override public AbstractT getFromGame (ClientClasses go) { -// return new T_Integer(UserPreferences.retreatRestrictionTurns()); // Dynamic: Same as UserPreferences -// } -// -// @Override public void putToGame(ClientClasses go, AbstractT value) { -// UserPreferences.setMissileSizeModifier(value.getCodeView()); // Dynamic: Same as UserPreferences -// } -// -// @Override public AbstractT getFromUI (ClientClasses go) { -// return new T_Integer(UserPreferences.retreatRestrictionTurns()); -// } -// -// @Override public void putToGUI(ClientClasses go, AbstractT value) { -// UserPreferences.setMissileSizeModifier(value.getCodeView()); -// } -// -// @Override public void initComments() { -// setBottomComments(dynamicParameter()); -// } -// } } diff --git a/src/mod/br/profileManager/Group_Race.java b/src/mod/br/profileManager/Group_Race.java index 0bd4ef8..623a0ce 100644 --- a/src/mod/br/profileManager/Group_Race.java +++ b/src/mod/br/profileManager/Group_Race.java @@ -39,7 +39,13 @@ public class Group_Race extends AbstractGroup { Group_Race(ClientClasses go) { - super(go); + super(go, getHeadComments()); + } + + private static String getHeadComments() { + return " " + NL + + "--------- Races Game Options ---------" + NL + + ""; } @Override protected void initSettingList(ClientClasses go) { @@ -85,10 +91,6 @@ static class PlayerRace extends } @Override public void initComments() { - setHeadComments( - " " + NL + - "--------- Races Game Options ---------" + NL + - " "); setBottomComments(availableForChange()); } } @@ -222,6 +224,7 @@ static class PlayerHomeWorld extends new T_String(go.newOptions().selectedHomeWorldName()))); getValidation().getCriteria().isRandomAllowed(false); + getValidation().getCriteria().showOptions(false); } // ========== Overriders ========== @@ -266,6 +269,7 @@ static class PlayerName extends new T_String(go.newOptions().selectedLeaderName()))); getValidation().getCriteria().isRandomAllowed(false); + getValidation().getCriteria().showOptions(false); } // ========== Overriders ========== @@ -295,4 +299,4 @@ static class PlayerName extends setBottomComments(availableForChange()); } } -} \ No newline at end of file +} diff --git a/src/mod/br/profileManager/Group_RaceTest.java b/src/mod/br/profileManager/Group_RaceTest.java index 64a1405..e906e0a 100644 --- a/src/mod/br/profileManager/Group_RaceTest.java +++ b/src/mod/br/profileManager/Group_RaceTest.java @@ -14,15 +14,12 @@ class Group_RaceTest { private String racePrt = "\r\n" - + "; \r\n" - + "; --------- Races Game Options ---------\r\n" - + "; \r\n" + "¦==== Parameter : PLAYER RACE\r\n" + "; Options : [Human, Alkari, Silicoid, Mrrshan, Klackon, Meklar, Psilon,\r\n" + "; \" \" : Darlok, Sakkra, Bulrathi]\r\n" + "¦ History : Current: Human ¦ Last: ¦ Initial: Human ¦ Default: Human\r\n" + "¦ History : Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" @@ -37,7 +34,7 @@ class Group_RaceTest { + "; \" \" : Brown, White, Lime, Grey, Plum, Light Blue, Mint, Olive]\r\n" + "¦ History : Current: Blue ¦ Last: ¦ Initial: Blue ¦ Default: Red\r\n" + "¦ History : Game: \r\n" - + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, ·]\r\n" + + "¦ LOCAL ENABLE : All ; [No, All, Save, Load, Hide, ·]\r\n" + "\r\n" + "Profile 1 :\r\n" + "Random :\r\n" diff --git a/src/mod/br/profileManager/UserProfilesTest.java b/src/mod/br/profileManager/UserProfilesTest.java index da4ed52..5d33f83 100644 --- a/src/mod/br/profileManager/UserProfilesTest.java +++ b/src/mod/br/profileManager/UserProfilesTest.java @@ -33,14 +33,6 @@ private void init() { , "Should not be initialized"); } -// @Test -// void getAllProfiles() { -// init(); -// System.out.println("getAllProfiles()"); -// System.out.println(userProfiles.getAllProfiles().toString()); -// System.out.println(); -// } - @Test void processKey_U() { init(); @@ -48,20 +40,4 @@ void processKey_U() { , userProfiles.processKey(KeyEvent.VK_U, false, "", clientObject) , "This KeyEvent sould return false"); } - -// @Test void GuiOpponentRaceList() { -// init(); -// userProfiles.processKey(KeyEvent.VK_U, false, "", clientObject); -// param = userProfiles.getParameter("GUI OPPONENTS RACE FILTER"); -// String result = param.toString(userProfiles.getAllProfiles()); -// System.out.println(result); -// Lines line = param.getProfileLine("User"); -// AbstractT value =line.getValue(); -// System.out.println("List"); -// System.out.println(value.codeViewList().toString()); -// System.out.println(value.toString()); -// System.out.println(value.toString()); -// System.out.println(line.toString()); -// } - } diff --git a/src/mod/br/profileManager/Valid_AIList.java b/src/mod/br/profileManager/Valid_AIList.java new file mode 100644 index 0000000..8e42ad4 --- /dev/null +++ b/src/mod/br/profileManager/Valid_AIList.java @@ -0,0 +1,198 @@ + +/* + * Licensed under the GNU General License, Version 3 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.gnu.org/licenses/gpl-3.0.html + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package mod.br.profileManager; + +import static rotp.model.game.IGameOptions.MAX_OPPONENTS; + +import java.util.Arrays; +import java.util.List; + +import br.profileManager.src.main.java.AbstractT; +import br.profileManager.src.main.java.PMutil; +import br.profileManager.src.main.java.Validation; +import mod.br.AddOns.RaceFilter; +import rotp.model.game.IGameOptions; + +/** + * For the validation of the Opponent AI Lists + */ +class Valid_AIList extends Validation { + + // ================================================== + // Constructors and initializers + // + Valid_AIList(AbstractT initialValue, List options) { + super(initialValue, options); + } + + // ========== Getters ========== + // + String[] analyze(ClientClasses go, List userEntry, boolean gameCall) { + return new newAnalyze(go, userEntry, gameCall).selectedAIs(); + } + + // ============================================================== + // Nested Class + // + class newAnalyze { + private List defaultGuiList; // The longest one + private List defaultGameList; + private List randomList; // The original List + private List allRandomList; // The original List + private List randomGuiList; + private List randomGameList; + private String blankReplacement = IGameOptions.OPPONENT_AI_MODNAR; + private String nullReplacement = IGameOptions.OPPONENT_AI_MODNAR; + private String[] selectedAIs; + private int index; + private int maxArray; + private boolean gameCall; + + newAnalyze(ClientClasses go, List userEntry, boolean gameCall) { + initOptions(); + + int iMax = selectedAIs.length; + int iMaxList = userEntry.size()-1; + int iList; + + String entry = ""; + // loop thru the list + for (index=0; index parameters) { + int id = PMutil.getRandom(0, parameters.size()); + validEntry(parameters.get(id)); + } + + private AbstractT randomWithInListLimit(String[] parameters) { + int[] limits = validateLimits(parameters); + List subList = randomGuiList.subList(limits[0], limits[1]); + int id = PMutil.getRandom(0, subList.size()); + return validEntry(subList.get(id)); + } + + private void elementAnalysis(String userEntry) { + userEntry = PMutil.clean(userEntry); + // Random Management + if (isRandom(userEntry)) { // random with extra parameters + String[] parameters = splitParameters(removeRandomId(userEntry)); + if (parameters.length > 2) { + randomWithOptions(Arrays.asList(parameters)); + return; + } + randomWithInListLimit(parameters); + return; + } + // Not Random + // Check check if part of the list + if (isValidUserView(userEntry)) { + validEntry(toValue(userEntry).getCodeView()); + return; + } + // Bad entry, then either blank or null + validBlankEntry(); + return; + } + + // ========== Other Methods ========== + // + private AbstractT validEntry(String AI) { + if (isValidAI(AI)) { + return setAI(AI); + } + return setNull(); + } + + private AbstractT validBlankEntry() { + if (maxArray > index) { + String selectedAI = selectedAIs[index]; + if (isValidAI(selectedAI)) { + return setBlank(); + } + // to much of this race selected + return setNull(); + } + // no race selected OK for blank value + return setBlank(); + } + + private AbstractT setAI(String ai) { + if (maxArray > index) { + selectedAIs[index] = ai; + } + return newValue(ai); + } + + private AbstractT setBlank() {// not allowed! + return newValue(blankReplacement); + } + + private AbstractT setNull() { + return newValue(nullReplacement); + } + + private boolean isValidAI(String AI) { + if (gameCall) { + return defaultGameList.contains(AI); + } + return defaultGuiList.contains(AI); + } + + private void initOptions() { + randomGuiList = RaceFilter.selectedGuiAIFilter(); + randomGameList = RaceFilter.selectedGameAIFilter(); + randomList = RaceFilter.randomAIList(); + allRandomList = RaceFilter.allRandomAIList(); + defaultGuiList = RaceFilter.defaultGuiAIList(); + defaultGameList = RaceFilter.defaultGameAIList(); + selectedAIs = new String[MAX_OPPONENTS+1]; + maxArray = selectedAIs.length; + } + } +} diff --git a/src/rotp/Rotp.java b/src/rotp/Rotp.java index ea78c60..0132d42 100644 --- a/src/rotp/Rotp.java +++ b/src/rotp/Rotp.java @@ -43,7 +43,7 @@ public class Rotp { private static final int MB = 1048576; - public static final String version = "22.07.01"; + public static final String version = "22.07.05"; public static int IMG_W = 1229; public static int IMG_H = 768; public static String jarFileName = "rotp-" + version + ".jar"; diff --git a/src/rotp/mod/br/AddOns/RacesOptions.java b/src/rotp/mod/br/AddOns/RacesOptions.java index e14c083..f2c177e 100644 --- a/src/rotp/mod/br/AddOns/RacesOptions.java +++ b/src/rotp/mod/br/AddOns/RacesOptions.java @@ -21,6 +21,7 @@ import mod.br.AddOns.RaceFilter; import mod.br.profileManager.ClientClasses; +//import mod.br.profileManager.Group_Galaxy.StartPresetAI; import mod.br.profileManager.Group_Galaxy.StartPresetOpponent; import rotp.mod.br.profiles.Profiles; import rotp.model.game.IGameOptions; @@ -42,6 +43,18 @@ public static List getGuiFilteredRaceList() { */ public static List getFilteredRaceList() { return RaceFilter.selectedGameRaceFilter(); + } + /** + * @return the Gui AI Filter + */ + public static List getGuiFilteredAIList() { + return RaceFilter.selectedGuiAIFilter(); + } + /** + * @return AI Filter + */ + public static List getFilteredAIList() { + return RaceFilter.selectedGameAIFilter(); } /** * Set the starting opponents @@ -53,4 +66,14 @@ public static void loadStartingOpponents(IGameOptions options) { Profiles.userProfiles().getParameter("START PRESET OPPONENT"); startPresetOpponent.loadOpponents(new ClientClasses(options)); } +// /** +// * Set the starting opponents AI +// * @param options the {@code IGameOptions} containing the parameters +// */ +// public static void loadStartingAIs(IGameOptions options) { +// StartPresetAI startPresetAI; +// startPresetAI = (StartPresetAI) +// Profiles.userProfiles().getParameter("START PRESET AI"); +// startPresetAI.loadAIs(new ClientClasses(options)); +// } } diff --git a/src/rotp/mod/br/profiles/Profiles.java b/src/rotp/mod/br/profiles/Profiles.java index b26fa15..2201f3d 100644 --- a/src/rotp/mod/br/profiles/Profiles.java +++ b/src/rotp/mod/br/profiles/Profiles.java @@ -153,6 +153,13 @@ public static boolean isSpacingEnabled() { public static boolean isStartOpponentRaceListEnabled() { return userProfiles.isParameterEnabled("START PRESET OPPONENT"); } + /** + * Check if it is OK to use OpponentRaceList (for Random) + * @return status + */ + public static boolean isStartOpponentAIListEnabled() { + return userProfiles.isParameterEnabled("START PRESET AI"); + } /** * Check if it is OK to use GuiOpponentRaceList (for Random) * @return status @@ -160,6 +167,13 @@ public static boolean isStartOpponentRaceListEnabled() { public static boolean isGuiOpponentRaceListEnabled() { return userProfiles.isParameterEnabled("GUI RACE FILTER"); } + /** + * Check if it is OK to use GuiOpponentRaceList (for Random) + * @return status + */ + public static boolean isGuiOpponentAIListEnabled() { + return userProfiles.isParameterEnabled("GUI AI FILTER"); + } /** * Check if it is OK to use Star Probability Modifier (for Random) * @return status diff --git a/src/rotp/model/game/IGameOptions.java b/src/rotp/model/game/IGameOptions.java index e2a6845..db665d8 100644 --- a/src/rotp/model/game/IGameOptions.java +++ b/src/rotp/model/game/IGameOptions.java @@ -473,8 +473,13 @@ default String nextAutoplayOption() { } default void nextSpecificOpponentAI(int i) { List allAIs = specificOpponentAIOptions(); + // BR: Add user filter + if (Profiles.isGuiOpponentAIListEnabled()) { + allAIs = RacesOptions.getGuiFilteredAIList(); + } // \BR: String currAI = specificOpponentAIOption(i); + // if currAI not on the list: index=-1 then result=0 -> OK int nextIndex = currAI == null ? 0 : allAIs.indexOf(currAI)+1; if (nextIndex >= allAIs.size()) nextIndex = 0; @@ -484,8 +489,13 @@ default void nextSpecificOpponentAI(int i) { } default void prevSpecificOpponentAI(int i) { List allAIs = specificOpponentAIOptions(); + // BR: Add user filter + if (Profiles.isGuiOpponentAIListEnabled()) { + allAIs = RacesOptions.getGuiFilteredAIList(); + } // \BR: String currAI = specificOpponentAIOption(i); + // if currAI not on the list: index=-1 then result=0 -> OK int nextIndex = currAI == null ? 0 : allAIs.indexOf(currAI)-1; if (nextIndex < 0) nextIndex = allAIs.size()-1; diff --git a/src/rotp/model/game/MOO1GameOptions.java b/src/rotp/model/game/MOO1GameOptions.java index 1ab88a2..86df329 100644 --- a/src/rotp/model/game/MOO1GameOptions.java +++ b/src/rotp/model/game/MOO1GameOptions.java @@ -575,6 +575,10 @@ public String randomStarType() { case GALAXY_AGE_OLD: pcts = oldPcts; break; default: pcts = normalPcts; break; } + // BR: distribution modifier + if (Profiles.isStarProbabilityEnabled()) { + pcts = GalaxyOptions.modifyStarProbability(pcts); + } // \BR: float r = random(); for (int i=0;i