Add lobby options for Shroud and Fog.
This commit is contained in:
@@ -15,8 +15,8 @@ namespace OpenRA.Graphics
|
||||
{
|
||||
public class ShroudRenderer
|
||||
{
|
||||
World world;
|
||||
Map map;
|
||||
ShroudInfo shroudInfo;
|
||||
Sprite[] shadowBits = Game.modData.SpriteLoader.LoadAllSprites("shadow");
|
||||
Sprite[,] sprites, fogSprites;
|
||||
int shroudHash;
|
||||
@@ -46,8 +46,8 @@ namespace OpenRA.Graphics
|
||||
|
||||
public ShroudRenderer(World world)
|
||||
{
|
||||
this.world = world;
|
||||
this.map = world.Map;
|
||||
shroudInfo = Rules.Info["player"].Traits.Get<ShroudInfo>();
|
||||
|
||||
sprites = new Sprite[map.MapSize.X, map.MapSize.Y];
|
||||
fogSprites = new Sprite[map.MapSize.X, map.MapSize.Y];
|
||||
@@ -152,9 +152,10 @@ namespace OpenRA.Graphics
|
||||
{
|
||||
if (initializePalettes)
|
||||
{
|
||||
if (shroudInfo.Fog)
|
||||
if (world.LobbyInfo.GlobalSettings.Fog)
|
||||
fogPalette = wr.Palette("fog");
|
||||
shroudPalette = wr.Palette("shroud");
|
||||
|
||||
shroudPalette = world.LobbyInfo.GlobalSettings.Fog ? wr.Palette("shroud") : wr.Palette("shroudfog");
|
||||
initializePalettes = false;
|
||||
}
|
||||
|
||||
@@ -165,7 +166,7 @@ namespace OpenRA.Graphics
|
||||
// We draw the shroud when disabled to hide the sharp map edges
|
||||
DrawShroud(wr, clipRect, sprites, shroudPalette);
|
||||
|
||||
if (shroudInfo.Fog)
|
||||
if (world.LobbyInfo.GlobalSettings.Fog)
|
||||
DrawShroud(wr, clipRect, fogSprites, fogPalette);
|
||||
}
|
||||
|
||||
|
||||
@@ -92,6 +92,8 @@ namespace OpenRA.Network
|
||||
public bool Dedicated;
|
||||
public string Difficulty;
|
||||
public bool Crates = true;
|
||||
public bool Shroud = true;
|
||||
public bool Fog = true;
|
||||
public string StartingUnitsClass = "default";
|
||||
public bool AllowVersionMismatch;
|
||||
}
|
||||
|
||||
@@ -18,14 +18,11 @@ namespace OpenRA.Traits
|
||||
{
|
||||
public class ShroudInfo : ITraitInfo
|
||||
{
|
||||
public readonly bool Shroud = true;
|
||||
public readonly bool Fog = true;
|
||||
public object Create(ActorInitializer init) { return new Shroud(init.self, this); }
|
||||
public object Create(ActorInitializer init) { return new Shroud(init.self); }
|
||||
}
|
||||
|
||||
public class Shroud
|
||||
{
|
||||
public ShroudInfo Info;
|
||||
Actor self;
|
||||
Map map;
|
||||
|
||||
@@ -42,9 +39,8 @@ namespace OpenRA.Traits
|
||||
|
||||
public int Hash { get; private set; }
|
||||
|
||||
public Shroud(Actor self, ShroudInfo info)
|
||||
public Shroud(Actor self)
|
||||
{
|
||||
Info = info;
|
||||
this.self = self;
|
||||
map = self.World.Map;
|
||||
|
||||
@@ -58,7 +54,7 @@ namespace OpenRA.Traits
|
||||
self.World.ActorAdded += AddShroudGeneration;
|
||||
self.World.ActorRemoved += RemoveShroudGeneration;
|
||||
|
||||
if (!info.Shroud)
|
||||
if (!self.World.LobbyInfo.GlobalSettings.Shroud)
|
||||
ExploredBounds = map.Bounds;
|
||||
}
|
||||
|
||||
@@ -252,7 +248,7 @@ namespace OpenRA.Traits
|
||||
if (!map.IsInMap(x, y))
|
||||
return false;
|
||||
|
||||
if (!Info.Shroud)
|
||||
if (!self.World.LobbyInfo.GlobalSettings.Shroud)
|
||||
return true;
|
||||
|
||||
return explored[x, y] && (generatedShroudCount[x, y] == 0 || visibleCount[x, y] > 0);
|
||||
@@ -271,7 +267,7 @@ namespace OpenRA.Traits
|
||||
if (x < 0 || x >= map.MapSize.X || y < 0 || y >= map.MapSize.Y)
|
||||
return false;
|
||||
|
||||
if (!Info.Fog)
|
||||
if (!self.World.LobbyInfo.GlobalSettings.Fog)
|
||||
return true;
|
||||
|
||||
return visibleCount[x, y] > 0;
|
||||
|
||||
@@ -326,6 +326,32 @@ namespace OpenRA.Mods.RA.Server
|
||||
server.SyncLobbyInfo();
|
||||
return true;
|
||||
}},
|
||||
{ "shroud",
|
||||
s =>
|
||||
{
|
||||
if (!client.IsAdmin)
|
||||
{
|
||||
server.SendOrderTo(conn, "Message", "Only the host can set that option");
|
||||
return true;
|
||||
}
|
||||
|
||||
bool.TryParse(s, out server.lobbyInfo.GlobalSettings.Shroud);
|
||||
server.SyncLobbyInfo();
|
||||
return true;
|
||||
}},
|
||||
{ "fog",
|
||||
s =>
|
||||
{
|
||||
if (!client.IsAdmin)
|
||||
{
|
||||
server.SendOrderTo(conn, "Message", "Only the host can set that option");
|
||||
return true;
|
||||
}
|
||||
|
||||
bool.TryParse(s, out server.lobbyInfo.GlobalSettings.Fog);
|
||||
server.SyncLobbyInfo();
|
||||
return true;
|
||||
}},
|
||||
{ "assignteams",
|
||||
s =>
|
||||
{
|
||||
|
||||
@@ -360,6 +360,24 @@ namespace OpenRA.Mods.RA.Widgets.Logic
|
||||
optionsBin.Get<LabelWidget>("STARTINGUNITS_DESC").IsVisible = startingUnits.IsVisible;
|
||||
}
|
||||
|
||||
var enableShroud = optionsBin.GetOrNull<CheckboxWidget>("SHROUD_CHECKBOX");
|
||||
if (enableShroud != null)
|
||||
{
|
||||
enableShroud.IsChecked = () => orderManager.LobbyInfo.GlobalSettings.Shroud;
|
||||
enableShroud.IsDisabled = configurationDisabled;
|
||||
enableShroud.OnClick = () => orderManager.IssueOrder(Order.Command(
|
||||
"shroud {0}".F(!orderManager.LobbyInfo.GlobalSettings.Shroud)));
|
||||
};
|
||||
|
||||
var enableFog = optionsBin.GetOrNull<CheckboxWidget>("FOG_CHECKBOX");
|
||||
if (enableFog != null)
|
||||
{
|
||||
enableFog.IsChecked = () => orderManager.LobbyInfo.GlobalSettings.Fog;
|
||||
enableFog.IsDisabled = configurationDisabled;
|
||||
enableFog.OnClick = () => orderManager.IssueOrder(Order.Command(
|
||||
"fog {0}".F(!orderManager.LobbyInfo.GlobalSettings.Fog)));
|
||||
};
|
||||
|
||||
var disconnectButton = lobby.Get<ButtonWidget>("DISCONNECT_BUTTON");
|
||||
disconnectButton.OnClick = () => { CloseWindow(); onExit(); };
|
||||
|
||||
|
||||
@@ -206,45 +206,57 @@ Background@LOBBY_OPTIONS_BIN:
|
||||
Children:
|
||||
Label@TITLE:
|
||||
X:0
|
||||
Y:50
|
||||
Y:40
|
||||
Width:PARENT_RIGHT
|
||||
Height:25
|
||||
Font:Bold
|
||||
Align:Center
|
||||
Text: Map Options
|
||||
Checkbox@ALLOWCHEATS_CHECKBOX:
|
||||
X:150
|
||||
Y:80
|
||||
X:80
|
||||
Y:75
|
||||
Width:230
|
||||
Height:20
|
||||
Text:Enable Cheats / Debug Menu
|
||||
Text:Cheats / Debug Menu
|
||||
Checkbox@CRATES_CHECKBOX:
|
||||
X:150
|
||||
X:80
|
||||
Y:110
|
||||
Width:230
|
||||
Height:20
|
||||
Text:Enable Crates
|
||||
Text:Crates
|
||||
Checkbox@SHROUD_CHECKBOX:
|
||||
X:310
|
||||
Y:75
|
||||
Width:230
|
||||
Height:20
|
||||
Text:Shroud
|
||||
Checkbox@FOG_CHECKBOX:
|
||||
X:310
|
||||
Y:110
|
||||
Width:230
|
||||
Height:20
|
||||
Text:Fog of War
|
||||
Label@STARTINGUNITS_DESC:
|
||||
X:150
|
||||
Y:140
|
||||
X:135
|
||||
Y:142
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Starting Units:
|
||||
DropDownButton@STARTINGUNITS_DROPDOWNBUTTON:
|
||||
X:245
|
||||
Y:140
|
||||
X:230
|
||||
Y:142
|
||||
Width:140
|
||||
Height:25
|
||||
Font:Bold
|
||||
Label@DIFFICULTY_DESC:
|
||||
X:150
|
||||
Y:170
|
||||
X:125
|
||||
Y:177
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Mission Difficulty:
|
||||
DropDownButton@DIFFICULTY_DROPDOWNBUTTON:
|
||||
X:265
|
||||
Y:170
|
||||
X:230
|
||||
Y:177
|
||||
Width:100
|
||||
Height:25
|
||||
Font:Bold
|
||||
@@ -123,6 +123,8 @@ LobbyDefaults:
|
||||
Crates: true
|
||||
StartingUnitsClass: default
|
||||
FragileAlliances: false
|
||||
Shroud: true
|
||||
Fog: true
|
||||
|
||||
ChromeMetrics:
|
||||
mods/cnc/metrics.yaml
|
||||
|
||||
@@ -264,6 +264,9 @@ World:
|
||||
ShroudPalette@fog:
|
||||
Name: fog
|
||||
Type: Fog
|
||||
ShroudPalette@combined:
|
||||
Name: shroudfog
|
||||
Type: Combined
|
||||
Country@gdi:
|
||||
Name: GDI
|
||||
Race: gdi
|
||||
|
||||
@@ -109,6 +109,8 @@ LobbyDefaults:
|
||||
Crates: true
|
||||
StartingUnitsClass: default
|
||||
FragileAlliances: false
|
||||
Shroud: false
|
||||
Fog: true
|
||||
|
||||
ChromeMetrics:
|
||||
mods/d2k/metrics.yaml
|
||||
|
||||
@@ -342,6 +342,9 @@ World:
|
||||
ShroudPalette@fog:
|
||||
Name: fog
|
||||
Type: Fog
|
||||
ShroudPalette@combined:
|
||||
Name: shroudfog
|
||||
Type: Combined
|
||||
Country@Atreides:
|
||||
Name: Atreides
|
||||
Race: atreides
|
||||
|
||||
@@ -59,39 +59,63 @@ Background@LOBBY_OPTIONS_BIN:
|
||||
Children:
|
||||
Label@TITLE:
|
||||
X:0
|
||||
Y:50
|
||||
Y:40
|
||||
Width:PARENT_RIGHT
|
||||
Height:25
|
||||
Font:Bold
|
||||
Align:Center
|
||||
Text: Map Options
|
||||
Checkbox@ALLOWCHEATS_CHECKBOX:
|
||||
X:150
|
||||
Y:80
|
||||
Width:220
|
||||
X:80
|
||||
Y:75
|
||||
Width:230
|
||||
Height:20
|
||||
Text:Enable Cheats / Debug Menu
|
||||
Checkbox@CRATES_CHECKBOX:
|
||||
X:150
|
||||
Text:Cheats / Debug Menu
|
||||
Checkbox@FRAGILEALLIANCES_CHECKBOX:
|
||||
X:80
|
||||
Y:110
|
||||
Width:220
|
||||
Height:20
|
||||
Text:Enable Crates
|
||||
Checkbox@FRAGILEALLIANCES_CHECKBOX:
|
||||
X:150
|
||||
Y:140
|
||||
Width:220
|
||||
Height:20
|
||||
Text:Allow Team Changes
|
||||
Checkbox@CRATES_CHECKBOX:
|
||||
X:80
|
||||
Y:145
|
||||
Width:230
|
||||
Height:20
|
||||
Text:Crates
|
||||
Checkbox@SHROUD_CHECKBOX:
|
||||
X:310
|
||||
Y:75
|
||||
Width:230
|
||||
Height:20
|
||||
Text:Shroud
|
||||
Checkbox@FOG_CHECKBOX:
|
||||
X:310
|
||||
Y:110
|
||||
Width:230
|
||||
Height:20
|
||||
Text:Fog of War
|
||||
Label@STARTINGUNITS_DESC:
|
||||
X:215
|
||||
Y:142
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Starting Units:
|
||||
DropDownButton@STARTINGUNITS_DROPDOWNBUTTON:
|
||||
X:310
|
||||
Y:142
|
||||
Width:140
|
||||
Height:25
|
||||
Font:Bold
|
||||
Label@DIFFICULTY_DESC:
|
||||
X:150
|
||||
Y:170
|
||||
X:195
|
||||
Y:177
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Mission Difficulty:
|
||||
DropDownButton@DIFFICULTY_DROPDOWNBUTTON:
|
||||
X:265
|
||||
Y:170
|
||||
X:310
|
||||
Y:177
|
||||
Width:100
|
||||
Height:25
|
||||
Font:Bold
|
||||
@@ -125,6 +125,8 @@ LobbyDefaults:
|
||||
Crates: true
|
||||
StartingUnitsClass: default
|
||||
FragileAlliances: false
|
||||
Shroud: true
|
||||
Fog: true
|
||||
|
||||
ChromeMetrics:
|
||||
mods/ra/metrics.yaml
|
||||
|
||||
@@ -601,6 +601,9 @@ World:
|
||||
ShroudPalette@fog:
|
||||
Name: fog
|
||||
Type: Fog
|
||||
ShroudPalette@combined:
|
||||
Name: shroudfog
|
||||
Type: Combined
|
||||
Country@0:
|
||||
Name: Allies
|
||||
Race: allies
|
||||
|
||||
@@ -148,6 +148,8 @@ LobbyDefaults:
|
||||
Crates: true
|
||||
StartingUnitsClass: default
|
||||
FragileAlliances: false
|
||||
Shroud: true
|
||||
Fog: true
|
||||
|
||||
ChromeMetrics:
|
||||
mods/ra/metrics.yaml
|
||||
|
||||
Reference in New Issue
Block a user