From 35f05376b0ae8c67db6a03b4d5a2cec3ed699cec Mon Sep 17 00:00:00 2001 From: Regalis Date: Thu, 19 Nov 2015 19:21:48 +0200 Subject: [PATCH] Thermal artifact, mid-quest message popups, sortmode from immediate to deferred, saving bugfixes --- .../Content/Items/Artifacts/artifact.png | Bin 2563 -> 10995 bytes .../Content/Items/Artifacts/artifacts.xml | 17 +++++++- Subsurface/Content/Quests.xml | 11 ++++++ Subsurface/Source/Characters/StatusEffect.cs | 6 +++ Subsurface/Source/CoroutineManager.cs | 4 +- Subsurface/Source/DebugConsole.cs | 3 +- .../Source/Events/Quests/MonsterQuest.cs | 18 ++++++++- Subsurface/Source/Events/Quests/Quest.cs | 23 ++++++++++- .../Source/Events/Quests/SalvageQuest.cs | 19 +++++++++ .../Source/GameSession/GameModes/QuestMode.cs | 4 +- .../GameSession/GameModes/TutorialMode.cs | 6 ++- Subsurface/Source/GameSession/GameSession.cs | 1 + Subsurface/Source/Items/Item.cs | 2 +- Subsurface/Source/Map/Levels/Level.cs | 2 + Subsurface/Source/Map/Lights/LightManager.cs | 12 +++--- Subsurface/Source/Map/Submarine.cs | 37 ++++++++++-------- Subsurface/Source/Map/SubmarineBody.cs | 5 +++ Subsurface/Source/Map/WaterRenderer.cs | 5 +-- Subsurface/Source/Screens/GameScreen.cs | 32 +++++++-------- Subsurface/Source/Utils/SaveUtil.cs | 4 +- Subsurface_Solution.v12.suo | Bin 748544 -> 755200 bytes 21 files changed, 155 insertions(+), 56 deletions(-) diff --git a/Subsurface/Content/Items/Artifacts/artifact.png b/Subsurface/Content/Items/Artifacts/artifact.png index 4d342d9128be139eb4c3f043489c3352aa074908..929a58777a3456b61fb97ed8c4b246ffb3a58421 100644 GIT binary patch literal 10995 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 mW*CjeNxv@YZhw6K{{sNY_meg4-AeBO0000 - + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Subsurface/Content/Quests.xml b/Subsurface/Content/Quests.xml index 1adbaed14..f2009bf67 100644 --- a/Subsurface/Content/Quests.xml +++ b/Subsurface/Content/Quests.xml @@ -11,6 +11,17 @@ itemname="Skyholder Artifact"> + + + targets) { if (explosion != null) explosion.Explode(entity.SimPosition); + if (Fire) new FireSource(ConvertUnits.ToDisplayUnits(entity.SimPosition)); if (sound != null) sound.Play(1.0f, 1000.0f, ConvertUnits.ToDisplayUnits(entity.SimPosition)); diff --git a/Subsurface/Source/CoroutineManager.cs b/Subsurface/Source/CoroutineManager.cs index d536edad9..a9bb06ee5 100644 --- a/Subsurface/Source/CoroutineManager.cs +++ b/Subsurface/Source/CoroutineManager.cs @@ -73,7 +73,9 @@ namespace Barotrauma catch (Exception e) { - DebugConsole.ThrowError("Coroutine "+Coroutines[i]+" threw an exception: "+e.Message); +#if DEBUG + DebugConsole.ThrowError("Coroutine " + Coroutines[i] + " threw an exception: " + e.Message); +#endif Coroutines.RemoveAt(i); } diff --git a/Subsurface/Source/DebugConsole.cs b/Subsurface/Source/DebugConsole.cs index 448528576..0702b12a5 100644 --- a/Subsurface/Source/DebugConsole.cs +++ b/Subsurface/Source/DebugConsole.cs @@ -308,8 +308,7 @@ namespace Barotrauma DebugConsole.ThrowError("Illegal symbols in filename (../)"); return; } - Submarine.SaveCurrent(fileName +".sub"); - NewMessage("map saved", Color.Green); + if (Submarine.SaveCurrent(fileName +".sub")) NewMessage("map saved", Color.Green); break; case "loadmap": case "loadsub": diff --git a/Subsurface/Source/Events/Quests/MonsterQuest.cs b/Subsurface/Source/Events/Quests/MonsterQuest.cs index 7a62dd2d4..08f308a14 100644 --- a/Subsurface/Source/Events/Quests/MonsterQuest.cs +++ b/Subsurface/Source/Events/Quests/MonsterQuest.cs @@ -10,9 +10,11 @@ namespace Barotrauma { class MonsterQuest : Quest { - string monsterFile; + private string monsterFile; - Character monster; + private int state; + + private Character monster; public override Vector2 RadarPosition { @@ -31,6 +33,18 @@ namespace Barotrauma monster = new AICharacter(monsterFile, ConvertUnits.ToSimUnits(position+level.Position)); } + + public override void Update(float deltaTime) + { + switch (state) + { + case 0: + if (!monster.IsDead) return; + ShowMessage(state); + state = 1; + break; + } + } public override void End() { diff --git a/Subsurface/Source/Events/Quests/Quest.cs b/Subsurface/Source/Events/Quests/Quest.cs index 3e21fab28..5ee6c592a 100644 --- a/Subsurface/Source/Events/Quests/Quest.cs +++ b/Subsurface/Source/Events/Quests/Quest.cs @@ -25,6 +25,9 @@ namespace Barotrauma protected string radarLabel; + protected List headers; + protected List messages; + private int reward; public string Name @@ -69,6 +72,15 @@ namespace Barotrauma failureMessage = ToolBox.GetAttributeString(element, "failuremessage", ""); radarLabel = ToolBox.GetAttributeString(element, "radarlabel", ""); + + messages = new List(); + headers = new List(); + foreach (XElement subElement in element.Elements()) + { + if (subElement.Name.ToString().ToLower() != "message") continue; + headers.Add(ToolBox.GetAttributeString(subElement, "header", "")); + messages.Add(ToolBox.GetAttributeString(subElement, "text", "")); + } } public static Quest LoadRandom(Location[] locations, Random rand) @@ -142,8 +154,17 @@ namespace Barotrauma return null; } - public virtual void Start(Level level) + public virtual void Start(Level level) { } + + public virtual void Update(float deltaTime) { } + + public void ShowMessage(int index) { + if (index >= headers.Count && index >= messages.Count) return; + + new GUIMessageBox( + index < headers.Count ? headers[index] : "", + index < messages.Count ? messages[index] : ""); } /// diff --git a/Subsurface/Source/Events/Quests/SalvageQuest.cs b/Subsurface/Source/Events/Quests/SalvageQuest.cs index d7a3ae9ba..aaba18db4 100644 --- a/Subsurface/Source/Events/Quests/SalvageQuest.cs +++ b/Subsurface/Source/Events/Quests/SalvageQuest.cs @@ -14,6 +14,8 @@ namespace Barotrauma private Item item; + private int state; + public override Vector2 RadarPosition { get @@ -69,6 +71,23 @@ namespace Barotrauma //item.MoveWithLevel = true; } + public override void Update(float deltaTime) + { + switch (state) + { + case 0: + if (item.CurrentHull == null) return; + ShowMessage(state); + state = 1; + break; + case 1: + if (!Level.Loaded.AtEndPosition && !Level.Loaded.AtStartPosition) return; + ShowMessage(state); + state = 2; + break; + } + } + public override void End() { item.Remove(); diff --git a/Subsurface/Source/GameSession/GameModes/QuestMode.cs b/Subsurface/Source/GameSession/GameModes/QuestMode.cs index b02038dbc..acdac5151 100644 --- a/Subsurface/Source/GameSession/GameModes/QuestMode.cs +++ b/Subsurface/Source/GameSession/GameModes/QuestMode.cs @@ -38,12 +38,12 @@ namespace Barotrauma new GUIMessageBox(quest.Name, quest.Description, 400, 400); - quest.Start(Level.Loaded); + //quest.Start(Level.Loaded); } public override void End(string endMessage = "") { - quest.End(); + //quest.End(); base.End(endMessage); } diff --git a/Subsurface/Source/GameSession/GameModes/TutorialMode.cs b/Subsurface/Source/GameSession/GameModes/TutorialMode.cs index 415a456ac..53b0f5150 100644 --- a/Subsurface/Source/GameSession/GameModes/TutorialMode.cs +++ b/Subsurface/Source/GameSession/GameModes/TutorialMode.cs @@ -14,7 +14,7 @@ namespace Barotrauma public readonly CrewManager CrewManager; private GUIComponent infoBox; - + public static void StartTutorial() { Submarine.Load("Content/Map/TutorialSub.sub", ""); @@ -63,6 +63,7 @@ namespace Barotrauma CrewManager.AddCharacter(character); + //CoroutineManager.StartCoroutine(QuitChecker()); CoroutineManager.StartCoroutine(UpdateState()); } @@ -84,8 +85,9 @@ namespace Barotrauma if (infoBox!=null) infoBox.Update(deltaTime); } + private IEnumerable UpdateState() - { + { Submarine.Loaded.SetPosition(new Vector2(Submarine.Loaded.Position.X, 38500.0f)); //spawn some fish next to the player diff --git a/Subsurface/Source/GameSession/GameSession.cs b/Subsurface/Source/GameSession/GameSession.cs index ae784e255..d3ace9f02 100644 --- a/Subsurface/Source/GameSession/GameSession.cs +++ b/Subsurface/Source/GameSession/GameSession.cs @@ -172,6 +172,7 @@ namespace Barotrauma guiRoot.Update(deltaTime); if (gameMode != null) gameMode.Update(deltaTime); + if (Quest != null) Quest.Update(deltaTime); } public void Draw(SpriteBatch spriteBatch) diff --git a/Subsurface/Source/Items/Item.cs b/Subsurface/Source/Items/Item.cs index 7f902edb7..f48d5977a 100644 --- a/Subsurface/Source/Items/Item.cs +++ b/Subsurface/Source/Items/Item.cs @@ -18,7 +18,7 @@ namespace Barotrauma public enum ActionType { - OnPicked, OnWearing, OnContaining, OnContained, OnActive, OnUse, OnFailure, OnBroken, OnFire + Always, OnPicked, OnWearing, OnContaining, OnContained, OnActive, OnUse, OnFailure, OnBroken, OnFire } class Item : MapEntity, IDamageable, IPropertyObject diff --git a/Subsurface/Source/Map/Levels/Level.cs b/Subsurface/Source/Map/Levels/Level.cs index 98455b9cc..44b91ef75 100644 --- a/Subsurface/Source/Map/Levels/Level.cs +++ b/Subsurface/Source/Map/Levels/Level.cs @@ -815,11 +815,13 @@ namespace Barotrauma public void Draw(SpriteBatch spriteBatch) { + if (renderer == null) return; renderer.Draw(spriteBatch); } public void Render(GraphicsDevice graphicsDevice, Camera cam) { + if (renderer == null) return; renderer.Render(graphicsDevice, cam, vertices); } diff --git a/Subsurface/Source/Map/Lights/LightManager.cs b/Subsurface/Source/Map/Lights/LightManager.cs index 8633e2722..3dc367e43 100644 --- a/Subsurface/Source/Map/Lights/LightManager.cs +++ b/Subsurface/Source/Map/Lights/LightManager.cs @@ -76,7 +76,7 @@ namespace Barotrauma.Lights if (!ObstructVision) return; - spriteBatch.Begin(SpriteSortMode.Immediate, CustomBlendStates.Multiplicative); + spriteBatch.Begin(SpriteSortMode.Deferred, CustomBlendStates.Multiplicative); spriteBatch.Draw(losTexture, Vector2.Zero); spriteBatch.End(); @@ -128,13 +128,13 @@ namespace Barotrauma.Lights //draw the light shape //where Alpha is 0, nothing will be written - spriteBatch.Begin(SpriteSortMode.Immediate, CustomBlendStates.MultiplyWithAlpha, null, null, null, null, cam.Transform); + spriteBatch.Begin(SpriteSortMode.Deferred, CustomBlendStates.MultiplyWithAlpha, null, null, null, null, cam.Transform); light.Draw(spriteBatch); spriteBatch.End(); } ClearAlphaToOne(graphics, spriteBatch); - spriteBatch.Begin(SpriteSortMode.Immediate, CustomBlendStates.MultiplyWithAlpha, null, null, null, null, cam.Transform); + spriteBatch.Begin(SpriteSortMode.Deferred, CustomBlendStates.MultiplyWithAlpha, null, null, null, null, cam.Transform); foreach (LightSource light in lights) { @@ -161,7 +161,7 @@ namespace Barotrauma.Lights graphics.SetRenderTarget(losTexture); graphics.Clear(Color.Black); - spriteBatch.Begin(SpriteSortMode.Immediate, null, null, null, null, null, cam.Transform); + spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, cam.Transform); Vector2 diff = lookAtPosition - ViewPos; diff.Y = -diff.Y; @@ -185,7 +185,7 @@ namespace Barotrauma.Lights private void ClearAlphaToOne(GraphicsDevice graphics, SpriteBatch spriteBatch) { - spriteBatch.Begin(SpriteSortMode.Immediate, CustomBlendStates.WriteToAlpha); + spriteBatch.Begin(SpriteSortMode.Deferred, CustomBlendStates.WriteToAlpha); spriteBatch.Draw(alphaClearTexture, new Rectangle(0, 0,graphics.Viewport.Width, graphics.Viewport.Height), Color.White); spriteBatch.End(); } @@ -195,7 +195,7 @@ namespace Barotrauma.Lights if (!LightingEnabled) return; //multiply scene with lightmap - spriteBatch.Begin(SpriteSortMode.Immediate, CustomBlendStates.Multiplicative); + spriteBatch.Begin(SpriteSortMode.Deferred, CustomBlendStates.Multiplicative); spriteBatch.Draw(lightMap, Vector2.Zero, Color.White); spriteBatch.End(); } diff --git a/Subsurface/Source/Map/Submarine.cs b/Subsurface/Source/Map/Submarine.cs index baf5dcc31..5289b6029 100644 --- a/Subsurface/Source/Map/Submarine.cs +++ b/Subsurface/Source/Map/Submarine.cs @@ -22,7 +22,8 @@ namespace Barotrauma class Submarine : Entity { - public const string SavePath = "Data/SavedSubs"; + + public static string SavePath = "Data" + System.IO.Path.DirectorySeparatorChar + "SavedSubs"; public static List SavedSubmarines = new List(); @@ -102,8 +103,12 @@ namespace Barotrauma public Vector2 Speed { - get { return subBody.Speed; } - set { subBody.Speed = value; } + get { return subBody==null ? Vector2.Zero : subBody.Speed; } + set + { + if (subBody == null) return; + subBody.Speed = value; + } } public List HullVertices @@ -433,18 +438,13 @@ namespace Barotrauma //saving/loading ---------------------------------------------------- - public void Save() + public bool Save() { - SaveAs(filePath); + return SaveAs(filePath); } - public void SaveAs(string filePath) + public bool SaveAs(string filePath) { - //if (filePath=="") - //{ - // DebugConsole.ThrowError("No save file selected"); - // return; - //} XDocument doc = new XDocument(new XElement("Submarine")); doc.Root.Add(new XAttribute("name", name)); @@ -464,13 +464,13 @@ namespace Barotrauma catch (Exception e) { DebugConsole.ThrowError("Saving submarine ''" + filePath + "'' failed!", e); + return false; } - - //doc.Save(filePath); + return true; } - public static void SaveCurrent(string fileName) + public static bool SaveCurrent(string fileName) { if (loaded==null) { @@ -478,7 +478,7 @@ namespace Barotrauma // return; } - loaded.SaveAs(SavePath+"/"+fileName); + return loaded.SaveAs(SavePath+System.IO.Path.DirectorySeparatorChar+fileName); } public static void Preload() @@ -646,7 +646,12 @@ namespace Barotrauma loaded = this; } - public static Submarine Load(string fileName, string folder = SavePath) + public static Submarine Load(string fileName) + { + return Load(fileName, SavePath); + } + + public static Submarine Load(string fileName, string folder) { Unload(); diff --git a/Subsurface/Source/Map/SubmarineBody.cs b/Subsurface/Source/Map/SubmarineBody.cs index 20dad48f6..dc03390e7 100644 --- a/Subsurface/Source/Map/SubmarineBody.cs +++ b/Subsurface/Source/Map/SubmarineBody.cs @@ -129,6 +129,11 @@ namespace Barotrauma private List GenerateConvexHull() { + if (!Structure.wallList.Any()) + { + return new List() { new Vector2(-1.0f, 1.0f), new Vector2(1.0f, 1.0f), new Vector2(0.0f, -1.0f) }; + } + List points = new List(); Vector2 leftMost = Vector2.Zero; diff --git a/Subsurface/Source/Map/WaterRenderer.cs b/Subsurface/Source/Map/WaterRenderer.cs index b1a1382bc..c774a3ee2 100644 --- a/Subsurface/Source/Map/WaterRenderer.cs +++ b/Subsurface/Source/Map/WaterRenderer.cs @@ -57,12 +57,12 @@ namespace Barotrauma public void RenderBack(SpriteBatch spriteBatch, RenderTarget2D texture, float blurAmount = 0.0f) { - spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.LinearWrap); + spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Opaque, SamplerState.LinearWrap, null, null, waterEffect); waterEffect.CurrentTechnique = waterEffect.Techniques["WaterShader"]; waterEffect.Parameters["xWavePos"].SetValue(wavePos); waterEffect.Parameters["xBlurDistance"].SetValue(blurAmount); - waterEffect.CurrentTechnique.Passes[0].Apply(); + //waterEffect.CurrentTechnique.Passes[0].Apply(); wavePos.X += 0.0001f; wavePos.Y += 0.0001f; @@ -74,7 +74,6 @@ namespace Barotrauma spriteBatch.Draw(texture, new Rectangle(0, 0, GameMain.GraphicsWidth, GameMain.GraphicsHeight), Color.White); #endif - spriteBatch.End(); } diff --git a/Subsurface/Source/Screens/GameScreen.cs b/Subsurface/Source/Screens/GameScreen.cs index f53399678..dce192bf7 100644 --- a/Subsurface/Source/Screens/GameScreen.cs +++ b/Subsurface/Source/Screens/GameScreen.cs @@ -174,7 +174,7 @@ namespace Barotrauma graphics.SetRenderTarget(renderTarget); graphics.Clear(new Color(11, 18, 26, 255)); - spriteBatch.Begin(SpriteSortMode.Immediate, BlendState.AlphaBlend, SamplerState.LinearWrap); + spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.LinearWrap); Vector2 backgroundPos = cam.Position; if (Level.Loaded != null) backgroundPos -= Level.Loaded.Position; @@ -203,8 +203,8 @@ namespace Barotrauma spriteBatch.End(); spriteBatch.Begin(SpriteSortMode.BackToFront, - BlendState.AlphaBlend, - SamplerState.LinearWrap, null, null, null, + BlendState.NonPremultiplied, + SamplerState.LinearWrap, DepthStencilState.Default, null, null, cam.Transform); BackgroundSpriteManager.Draw(spriteBatch); @@ -237,29 +237,27 @@ namespace Barotrauma spriteBatch.End(); - GameMain.LightManager.DrawLightMap(spriteBatch, cam); //---------------------------------------------------------------------------------------- //draw the rendertarget and particles that are only supposed to be drawn in water into renderTargetWater - graphics.SetRenderTarget(renderTargetWater); - spriteBatch.Begin(SpriteSortMode.Immediate, - BlendState.AlphaBlend); + spriteBatch.Begin(SpriteSortMode.Deferred, + BlendState.Opaque); spriteBatch.Draw(renderTarget, new Rectangle(0, 0, GameMain.GraphicsWidth, GameMain.GraphicsHeight), new Color(0.75f, 0.8f, 0.9f, 1.0f)); spriteBatch.End(); - spriteBatch.Begin(SpriteSortMode.Immediate, - BlendState.AlphaBlend, - null, DepthStencilState.DepthRead, null, null, + spriteBatch.Begin(SpriteSortMode.Deferred, + BlendState.NonPremultiplied, + null, DepthStencilState.Default, null, null, cam.Transform); GameMain.ParticleManager.Draw(spriteBatch, true, Particles.ParticleBlendState.AlphaBlend); spriteBatch.End(); - spriteBatch.Begin(SpriteSortMode.Immediate, + spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Additive, - null, DepthStencilState.DepthRead, null, null, + null, DepthStencilState.Default, null, null, cam.Transform); GameMain.ParticleManager.Draw(spriteBatch, true, Particles.ParticleBlendState.Additive); spriteBatch.End(); @@ -268,19 +266,19 @@ namespace Barotrauma //draw the rendertarget and particles that are only supposed to be drawn in air into renderTargetAir graphics.SetRenderTarget(renderTargetAir); - spriteBatch.Begin(SpriteSortMode.Immediate, - BlendState.AlphaBlend); + spriteBatch.Begin(SpriteSortMode.Deferred, + BlendState.Opaque); spriteBatch.Draw(renderTarget, new Rectangle(0, 0, GameMain.GraphicsWidth, GameMain.GraphicsHeight), Color.White); spriteBatch.End(); - spriteBatch.Begin(SpriteSortMode.Immediate, - BlendState.AlphaBlend, + spriteBatch.Begin(SpriteSortMode.Deferred, + BlendState.NonPremultiplied, null, DepthStencilState.DepthRead, null, null, cam.Transform); GameMain.ParticleManager.Draw(spriteBatch, false, Particles.ParticleBlendState.AlphaBlend); spriteBatch.End(); - spriteBatch.Begin(SpriteSortMode.Immediate, + spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Additive, null, DepthStencilState.DepthRead, null, null, cam.Transform); diff --git a/Subsurface/Source/Utils/SaveUtil.cs b/Subsurface/Source/Utils/SaveUtil.cs index 327d8919b..abfd0e901 100644 --- a/Subsurface/Source/Utils/SaveUtil.cs +++ b/Subsurface/Source/Utils/SaveUtil.cs @@ -10,13 +10,13 @@ namespace Barotrauma { public class SaveUtil { - private const string SaveFolder = "Data/Saves/"; + private static string SaveFolder = "Data"+Path.DirectorySeparatorChar+"Saves"; public delegate void ProgressDelegate(string sMessage); public static void SaveGame(string fileName) { - fileName = SaveFolder + fileName; + fileName = Path.Combine(SaveFolder, fileName); string tempPath = Path.Combine(SaveFolder, "temp"); diff --git a/Subsurface_Solution.v12.suo b/Subsurface_Solution.v12.suo index 2aac018130b93abc5958d6d9398dc3e3a26e047d..dc61639bc1e3ccb925bdb1775f5e76a96c3c785a 100644 GIT binary patch delta 13675 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 F^1ns8(%1k1 delta 12401 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