Merge pull request #350 from extraneus/master
The preliminary assignments
This commit is contained in:
@@ -350,6 +350,23 @@ namespace Barotrauma.Networking
|
|||||||
};
|
};
|
||||||
kickVoteSlider.OnMoved(kickVoteSlider, kickVoteSlider.BarScroll);
|
kickVoteSlider.OnMoved(kickVoteSlider, kickVoteSlider.BarScroll);
|
||||||
|
|
||||||
|
y += 20;
|
||||||
|
|
||||||
|
var autobanTimeText = new GUITextBlock(new Rectangle(20, y + 20, 20, 20), $"Auto ban time: " + ToolBox.SecondsToReadableTime(AutoBanTime), "", settingsTabs[1], GUI.SmallFont);
|
||||||
|
|
||||||
|
var autobanTimeSlider = new GUIScrollBar(new Rectangle(150, y + 22, 100, 15), "", 0.1f, settingsTabs[1]);
|
||||||
|
autobanTimeSlider.UserData = autobanTimeText;
|
||||||
|
autobanTimeSlider.Step = 0.05f;
|
||||||
|
autobanTimeSlider.BarScroll = AutoBanTime / MaxAutoBanTime;
|
||||||
|
autobanTimeSlider.OnMoved = (GUIScrollBar scrollBar, float barScroll) =>
|
||||||
|
{
|
||||||
|
GUITextBlock voteText = scrollBar.UserData as GUITextBlock;
|
||||||
|
AutoBanTime = Math.Max(barScroll * MaxAutoBanTime, 0);
|
||||||
|
voteText.Text = "Auto ban time: " + ToolBox.SecondsToReadableTime(AutoBanTime);
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
autobanTimeSlider.OnMoved(autobanTimeSlider, autobanTimeSlider.BarScroll);
|
||||||
|
|
||||||
y += 45;
|
y += 45;
|
||||||
|
|
||||||
var shareSubsBox = new GUITickBox(new Rectangle(0, y, 20, 20), "Share submarine files with players", Alignment.Left, settingsTabs[1]);
|
var shareSubsBox = new GUITickBox(new Rectangle(0, y, 20, 20), "Share submarine files with players", Alignment.Left, settingsTabs[1]);
|
||||||
|
|||||||
@@ -1934,6 +1934,7 @@ namespace Barotrauma.Networking
|
|||||||
{
|
{
|
||||||
SendChatMessage(c.Name + " has been kicked from the server.", ChatMessageType.Server, null);
|
SendChatMessage(c.Name + " has been kicked from the server.", ChatMessageType.Server, null);
|
||||||
KickClient(c, "Kicked by vote");
|
KickClient(c, "Kicked by vote");
|
||||||
|
BanClient(c, "Kicked by vote (auto ban)", duration: TimeSpan.FromSeconds(AutoBanTime));
|
||||||
}
|
}
|
||||||
|
|
||||||
GameMain.NetLobbyScreen.LastUpdateID++;
|
GameMain.NetLobbyScreen.LastUpdateID++;
|
||||||
|
|||||||
@@ -254,6 +254,20 @@ namespace Barotrauma.Networking
|
|||||||
set;
|
set;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Serialize(60f, true)]
|
||||||
|
public float AutoBanTime
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
private set;
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serialize(360f, true)]
|
||||||
|
public float MaxAutoBanTime
|
||||||
|
{
|
||||||
|
get;
|
||||||
|
private set;
|
||||||
|
}
|
||||||
|
|
||||||
private void SaveSettings()
|
private void SaveSettings()
|
||||||
{
|
{
|
||||||
XDocument doc = new XDocument(new XElement("serversettings"));
|
XDocument doc = new XDocument(new XElement("serversettings"));
|
||||||
@@ -361,6 +375,9 @@ namespace Barotrauma.Networking
|
|||||||
if (!monsterEnabled.ContainsKey(s)) monsterEnabled.Add(s, true);
|
if (!monsterEnabled.ContainsKey(s)) monsterEnabled.Add(s, true);
|
||||||
}
|
}
|
||||||
extraCargo = new Dictionary<ItemPrefab, int>();
|
extraCargo = new Dictionary<ItemPrefab, int>();
|
||||||
|
|
||||||
|
AutoBanTime = doc.Root.GetAttributeFloat("autobantime", 60);
|
||||||
|
MaxAutoBanTime = doc.Root.GetAttributeFloat("maxautobantime", 360);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadClientPermissions()
|
public void LoadClientPermissions()
|
||||||
|
|||||||
@@ -10,6 +10,9 @@ namespace Barotrauma.Networking
|
|||||||
{
|
{
|
||||||
class RespawnManager : Entity, IServerSerializable
|
class RespawnManager : Entity, IServerSerializable
|
||||||
{
|
{
|
||||||
|
// TODO: Instead of hard-coding the tags in the code, maybe they should be defined in a config file?
|
||||||
|
private static string respawnItemTag = "respawn";
|
||||||
|
|
||||||
private readonly float respawnInterval;
|
private readonly float respawnInterval;
|
||||||
private float maxTransportTime;
|
private float maxTransportTime;
|
||||||
|
|
||||||
@@ -364,6 +367,8 @@ namespace Barotrauma.Networking
|
|||||||
foreach (Item item in Item.ItemList)
|
foreach (Item item in Item.ItemList)
|
||||||
{
|
{
|
||||||
if (item.Submarine != respawnShuttle) continue;
|
if (item.Submarine != respawnShuttle) continue;
|
||||||
|
// Ignore the respawn items, defined in RespawnCharacters method.
|
||||||
|
if (item.HasTag(respawnItemTag)) continue;
|
||||||
|
|
||||||
if (item.body != null && item.body.Enabled && item.ParentInventory == null)
|
if (item.body != null && item.body.Enabled && item.ParentInventory == null)
|
||||||
{
|
{
|
||||||
@@ -502,20 +507,26 @@ namespace Barotrauma.Networking
|
|||||||
|
|
||||||
Vector2 pos = cargoSp == null ? character.Position : cargoSp.Position;
|
Vector2 pos = cargoSp == null ? character.Position : cargoSp.Position;
|
||||||
|
|
||||||
|
// Temp list to hold all respawn items.
|
||||||
|
// TODO: Instead of tags, wouldn't it be better to keep a local reference to the list that we create and simple filter out the items on it, before clearing the items in ResetShuttle method?
|
||||||
|
var respawnItems = new List<Item>();
|
||||||
if (divingSuitPrefab != null && oxyPrefab != null)
|
if (divingSuitPrefab != null && oxyPrefab != null)
|
||||||
{
|
{
|
||||||
var divingSuit = new Item(divingSuitPrefab, pos, respawnSub);
|
var divingSuit = new Item(divingSuitPrefab, pos, respawnSub);
|
||||||
Spawner.CreateNetworkEvent(divingSuit, false);
|
Spawner.CreateNetworkEvent(divingSuit, false);
|
||||||
|
respawnItems.Add(divingSuit);
|
||||||
|
|
||||||
var oxyTank = new Item(oxyPrefab, pos, respawnSub);
|
var oxyTank = new Item(oxyPrefab, pos, respawnSub);
|
||||||
Spawner.CreateNetworkEvent(oxyTank, false);
|
Spawner.CreateNetworkEvent(oxyTank, false);
|
||||||
divingSuit.Combine(oxyTank);
|
divingSuit.Combine(oxyTank);
|
||||||
|
respawnItems.Add(oxyTank);
|
||||||
|
|
||||||
if (batteryPrefab != null)
|
if (batteryPrefab != null)
|
||||||
{
|
{
|
||||||
var battery = new Item(batteryPrefab, pos, respawnSub);
|
var battery = new Item(batteryPrefab, pos, respawnSub);
|
||||||
Spawner.CreateNetworkEvent(battery, false);
|
Spawner.CreateNetworkEvent(battery, false);
|
||||||
divingSuit.Combine(battery);
|
divingSuit.Combine(battery);
|
||||||
|
respawnItems.Add(battery);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -528,7 +539,10 @@ namespace Barotrauma.Networking
|
|||||||
Spawner.CreateNetworkEvent(battery, false);
|
Spawner.CreateNetworkEvent(battery, false);
|
||||||
|
|
||||||
scooter.Combine(battery);
|
scooter.Combine(battery);
|
||||||
|
respawnItems.Add(scooter);
|
||||||
|
respawnItems.Add(battery);
|
||||||
}
|
}
|
||||||
|
respawnItems.ForEach(item => item.AddTag(respawnItemTag));
|
||||||
|
|
||||||
//give the character the items they would've gotten if they had spawned in the main sub
|
//give the character the items they would've gotten if they had spawned in the main sub
|
||||||
character.GiveJobItems(mainSubSpawnPoints[i]);
|
character.GiveJobItems(mainSubSpawnPoints[i]);
|
||||||
|
|||||||
@@ -29,4 +29,6 @@
|
|||||||
GameMode="SandBox"
|
GameMode="SandBox"
|
||||||
MissionType="Random"
|
MissionType="Random"
|
||||||
TraitorsEnabled="No"
|
TraitorsEnabled="No"
|
||||||
|
autobantime="60"
|
||||||
|
maxautobantime="360"
|
||||||
/>
|
/>
|
||||||
|
|||||||
Reference in New Issue
Block a user