- respawn, fabricator & deconstructor logging

- fixed listbox child hiding 4 real now
- dockingport logging fix (name of the sub instead of submarine.ToString)
This commit is contained in:
Regalis
2017-05-09 21:39:39 +03:00
parent 63b5ad1821
commit ad90cf804d
5 changed files with 41 additions and 22 deletions
+1 -1
View File
@@ -389,7 +389,7 @@ namespace Barotrauma
for (int i = 0; i < children.Count; i++) for (int i = 0; i < children.Count; i++)
{ {
GUIComponent child = children[i]; GUIComponent child = children[i];
if (child == frame) continue; if (child == frame || !child.Visible) continue;
if (!IsChildVisible(child)) if (!IsChildVisible(child))
{ {
@@ -752,17 +752,17 @@ namespace Barotrauma.Items.Components
if (docked) if (docked)
{ {
if (item.Submarine != null && dockingTarget?.item?.Submarine != null) if (item.Submarine != null && dockingTarget?.item?.Submarine != null)
GameServer.Log(sender.Name + " docked " + item.Submarine.Name + " to " + dockingTarget.item.Submarine, ServerLog.MessageType.ItemInteraction); GameServer.Log(sender.Name + " docked " + item.Submarine.Name + " to " + dockingTarget.item.Submarine.Name, ServerLog.MessageType.ItemInteraction);
} }
else else
{ {
if (item.Submarine != null && prevDockingTarget?.item?.Submarine != null) if (item.Submarine != null && prevDockingTarget?.item?.Submarine != null)
GameServer.Log(sender.Name + " undocked " + item.Submarine.Name + " from " + prevDockingTarget.item.Submarine, ServerLog.MessageType.ItemInteraction); GameServer.Log(sender.Name + " undocked " + item.Submarine.Name + " from " + prevDockingTarget.item.Submarine.Name, ServerLog.MessageType.ItemInteraction);
} }
} }
} }
public void ServerWrite(Lidgren.Network.NetBuffer msg, Barotrauma.Networking.Client c, object[] extraData = null) public void ServerWrite(Lidgren.Network.NetBuffer msg, Client c, object[] extraData = null)
{ {
msg.Write(docked); msg.Write(docked);
@@ -105,23 +105,23 @@ namespace Barotrauma.Items.Components
private bool ToggleActive(GUIButton button, object obj) private bool ToggleActive(GUIButton button, object obj)
{ {
SetActive(!IsActive); SetActive(!IsActive, Character.Controlled);
currPowerConsumption = IsActive ? powerConsumption : 0.0f; currPowerConsumption = IsActive ? powerConsumption : 0.0f;
if (GameMain.Server != null) if (GameMain.Server != null)
{ {
item.CreateServerEvent<Deconstructor>(this); item.CreateServerEvent(this);
} }
else if (GameMain.Client != null) else if (GameMain.Client != null)
{ {
item.CreateClientEvent<Deconstructor>(this); item.CreateClientEvent(this);
} }
return true; return true;
} }
private void SetActive(bool active) private void SetActive(bool active, Character user = null)
{ {
container = item.GetComponent<ItemContainer>(); container = item.GetComponent<ItemContainer>();
if (container == null) if (container == null)
@@ -134,6 +134,11 @@ namespace Barotrauma.Items.Components
IsActive = active; IsActive = active;
if (user != null)
{
GameServer.Log(user.Name + (IsActive ? " activated " : " deactivated ") + item.Name, ServerLog.MessageType.ItemInteraction);
}
if (!IsActive) if (!IsActive)
{ {
progressBar.BarSize = 0.0f; progressBar.BarSize = 0.0f;
@@ -160,11 +165,11 @@ namespace Barotrauma.Items.Components
{ {
bool active = msg.ReadBoolean(); bool active = msg.ReadBoolean();
item.CreateServerEvent<Deconstructor>(this); item.CreateServerEvent(this);
if (item.CanClientAccess(c)) if (item.CanClientAccess(c))
{ {
SetActive(active); SetActive(active, c.Character);
} }
} }
@@ -282,29 +282,34 @@ namespace Barotrauma.Items.Components
{ {
if (fabricatedItem == null) if (fabricatedItem == null)
{ {
StartFabricating(obj as FabricableItem); StartFabricating(obj as FabricableItem, Character.Controlled);
} }
else else
{ {
CancelFabricating(); CancelFabricating(Character.Controlled);
} }
if (GameMain.Server != null) if (GameMain.Server != null)
{ {
item.CreateServerEvent<Fabricator>(this); item.CreateServerEvent(this);
} }
else if (GameMain.Client != null) else if (GameMain.Client != null)
{ {
item.CreateClientEvent<Fabricator>(this); item.CreateClientEvent(this);
} }
return true; return true;
} }
private void StartFabricating(FabricableItem selectedItem) private void StartFabricating(FabricableItem selectedItem, Character user = null)
{ {
if (selectedItem == null) return; if (selectedItem == null) return;
if (user != null)
{
GameServer.Log(user.Name + " started fabricating " + selectedItem.TargetItem.Name + " in " + item.Name, ServerLog.MessageType.ItemInteraction);
}
itemList.Enabled = false; itemList.Enabled = false;
activateButton.Text = "Cancel"; activateButton.Text = "Cancel";
@@ -321,8 +326,13 @@ namespace Barotrauma.Items.Components
currPowerConsumption = powerConsumption; currPowerConsumption = powerConsumption;
} }
private void CancelFabricating() private void CancelFabricating(Character user = null)
{ {
if (fabricatedItem != null && user != null)
{
GameServer.Log(user.Name + " cancelled the fabrication of " + fabricatedItem.TargetItem.Name + " in " + item.Name, ServerLog.MessageType.ItemInteraction);
}
itemList.Enabled = true; itemList.Enabled = true;
IsActive = false; IsActive = false;
fabricatedItem = null; fabricatedItem = null;
@@ -387,7 +397,7 @@ namespace Barotrauma.Items.Components
Entity.Spawner.AddToSpawnQueue(fabricatedItem.TargetItem, containers[1].Inventory); Entity.Spawner.AddToSpawnQueue(fabricatedItem.TargetItem, containers[1].Inventory);
} }
CancelFabricating(); CancelFabricating(null);
} }
public override void DrawHUD(SpriteBatch spriteBatch, Character character) public override void DrawHUD(SpriteBatch spriteBatch, Character character)
@@ -464,13 +474,13 @@ namespace Barotrauma.Items.Components
{ {
int itemIndex = msg.ReadRangedInteger(-1, fabricableItems.Count - 1); int itemIndex = msg.ReadRangedInteger(-1, fabricableItems.Count - 1);
item.CreateServerEvent<Fabricator>(this); item.CreateServerEvent(this);
if (!item.CanClientAccess(c)) return; if (!item.CanClientAccess(c)) return;
if (itemIndex == -1) if (itemIndex == -1)
{ {
CancelFabricating(); CancelFabricating(c.Character);
} }
else else
{ {
@@ -479,7 +489,7 @@ namespace Barotrauma.Items.Components
if (itemIndex < 0 || itemIndex >= fabricableItems.Count) return; if (itemIndex < 0 || itemIndex >= fabricableItems.Count) return;
SelectItem(null, fabricableItems[itemIndex]); SelectItem(null, fabricableItems[itemIndex]);
StartFabricating(fabricableItems[itemIndex]); StartFabricating(fabricableItems[itemIndex], c.Character);
} }
} }
@@ -5,8 +5,6 @@ using Microsoft.Xna.Framework;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Barotrauma.Networking namespace Barotrauma.Networking
{ {
@@ -202,6 +200,7 @@ namespace Barotrauma.Networking
if (shuttleTransportTimer <= 0.0f) if (shuttleTransportTimer <= 0.0f)
{ {
GameServer.Log("The respawn shuttle is leaving.", ServerLog.MessageType.ServerMessage);
state = State.Returning; state = State.Returning;
server.CreateEntityEvent(this); server.CreateEntityEvent(this);
@@ -269,6 +268,7 @@ namespace Barotrauma.Networking
ResetShuttle(); ResetShuttle();
state = State.Waiting; state = State.Waiting;
GameServer.Log("The respawn shuttle has left.", ServerLog.MessageType.ServerMessage);
server.CreateEntityEvent(this); server.CreateEntityEvent(this);
respawnTimer = respawnInterval; respawnTimer = respawnInterval;
@@ -289,6 +289,8 @@ namespace Barotrauma.Networking
shuttleSteering.TargetVelocity = Vector2.Zero; shuttleSteering.TargetVelocity = Vector2.Zero;
GameServer.Log("Dispatching the respawn shuttle.", ServerLog.MessageType.ServerMessage);
RespawnCharacters(); RespawnCharacters();
CoroutineManager.StopCoroutines("forcepos"); CoroutineManager.StopCoroutines("forcepos");
@@ -404,6 +406,8 @@ namespace Barotrauma.Networking
List<CharacterInfo> characterInfos = clients.Select(c => c.characterInfo).ToList(); List<CharacterInfo> characterInfos = clients.Select(c => c.characterInfo).ToList();
if (server.Character != null && server.Character.IsDead) characterInfos.Add(server.CharacterInfo); if (server.Character != null && server.Character.IsDead) characterInfos.Add(server.CharacterInfo);
GameServer.Log("Respawning characters: "+string.Join(", ", characterInfos.Select(ci => ci.Name)), ServerLog.MessageType.ServerMessage);
server.AssignJobs(clients, server.Character != null && server.Character.IsDead); server.AssignJobs(clients, server.Character != null && server.Character.IsDead);
foreach (Client c in clients) foreach (Client c in clients)
{ {