statuseffect setvalue, new diving suit sprite & character slowdown, welded door sprite

This commit is contained in:
Regalis
2015-09-26 00:41:43 +03:00
parent 53e729ea11
commit da00b083ed
21 changed files with 137 additions and 57 deletions
+21 -5
View File
@@ -98,7 +98,7 @@ namespace Subsurface.Items.Components
PhysicsBody body;
Sprite doorSprite;
Sprite doorSprite, weldedSprite;
public Door(Item item, XElement element)
: base(item, element)
@@ -108,9 +108,15 @@ namespace Subsurface.Items.Components
// isOpen = false;
foreach (XElement subElement in element.Elements())
{
if (subElement.Name.ToString().ToLower() != "sprite") continue;
doorSprite = new Sprite(subElement, Path.GetDirectoryName(item.Prefab.ConfigFile));
break;
switch (subElement.Name.ToString().ToLower())
{
case "sprite":
doorSprite = new Sprite(subElement, Path.GetDirectoryName(item.Prefab.ConfigFile));
break;
case "weldedsprite":
weldedSprite = new Sprite(subElement, Path.GetDirectoryName(item.Prefab.ConfigFile));
break;
}
}
doorRect = new Rectangle(
@@ -258,6 +264,11 @@ namespace Subsurface.Items.Components
//prefab.sprite.Draw(spriteBatch, new Vector2(rect.X, -rect.Y), new Vector2(rect.Width, rect.Height), color);
if (stuck>0.0f && weldedSprite!=null)
{
weldedSprite.Draw(spriteBatch, new Vector2(item.Rect.X, -item.Rect.Y), Color.White*(stuck/100.0f), 0.0f, 1.0f);
}
if (openState == 1.0f)
{
body.Enabled = false;
@@ -311,6 +322,8 @@ namespace Subsurface.Items.Components
public override void ReceiveSignal(string signal, Connection connection, Item sender, float power=0.0f)
{
if (isStuck) return;
if (connection.Name=="toggle")
{
isOpen = !isOpen;
@@ -318,7 +331,10 @@ namespace Subsurface.Items.Components
else if (connection.Name == "set_state")
{
isOpen = (signal!="0");
}
}
//opening a partially stuck door makes it less stuck
if (isOpen) stuck = MathHelper.Clamp(stuck-30.0f, 0.0f, 100.0f); ;
}
}
}
@@ -59,10 +59,9 @@ namespace Subsurface.Items.Components
{
float hullPercentage = 0.0f;
if (hull1 != null) hullPercentage = (hull1.Volume / hull1.FullVolume) * 100.0f;
flowPercentage = ((float)targetLevel - hullPercentage);
FlowPercentage = ((float)targetLevel - hullPercentage) * 10.0f;
}
currPowerConsumption = powerConsumption * Math.Abs(flowPercentage / 100.0f);
if (voltage < minVoltage) return;
@@ -72,11 +71,8 @@ namespace Subsurface.Items.Components
float powerFactor = (currPowerConsumption==0.0f) ? 1.0f : voltage;
//flowPercentage = maxFlow * powerFactor;
float deltaVolume = 0.0f;
deltaVolume = (flowPercentage/100.0f) * maxFlow * powerFactor;
float deltaVolume = (flowPercentage/100.0f) * maxFlow * powerFactor;
hull1.Volume += deltaVolume;
if (hull1.Volume > hull1.FullVolume) hull1.Pressure += 0.5f;
@@ -171,7 +167,7 @@ namespace Subsurface.Items.Components
float tempTarget;
if (float.TryParse(signal, NumberStyles.Any, CultureInfo.InvariantCulture, out tempTarget))
{
targetLevel = MathHelper.Clamp(tempTarget, 0.0f, 100.0f);
targetLevel = MathHelper.Clamp((tempTarget+100.0f)/2.0f, 0.0f, 100.0f);
}
}
@@ -152,7 +152,7 @@ namespace Subsurface.Items.Components
if (PlayerInput.LeftButtonDown())
{
targetVelocity = PlayerInput.MousePosition - new Vector2(velRect.Center.X, velRect.Center.Y);
TargetVelocity = PlayerInput.MousePosition - new Vector2(velRect.Center.X, velRect.Center.Y);
targetVelocity.Y = -targetVelocity.Y;
valueChanged = true;
+10 -6
View File
@@ -9,11 +9,14 @@ namespace Subsurface.Items.Components
{
public Sprite Sprite;
public bool HideLimb;
public LimbType DepthLimb;
public WearableSprite(Sprite sprite, bool hideLimb)
public WearableSprite(Sprite sprite, bool hideLimb, LimbType depthLimb = LimbType.None)
{
Sprite = sprite;
HideLimb = hideLimb;
DepthLimb = depthLimb;
}
}
@@ -31,8 +34,8 @@ namespace Subsurface.Items.Components
var sprites = element.Elements().Where(x => x.Name.ToString() == "sprite").ToList();
int spriteCount = sprites.Count();
wearableSprite = new WearableSprite[spriteCount];
limbType = new LimbType[spriteCount];
limb = new Limb[spriteCount];
limbType = new LimbType[spriteCount];
limb = new Limb[spriteCount];
int i = 0;
foreach (XElement subElement in sprites)
@@ -53,11 +56,12 @@ namespace Subsurface.Items.Components
spritePath = Path.GetDirectoryName( item.Prefab.ConfigFile)+"/"+spritePath;
var sprite = new Sprite(subElement, "", spritePath);
wearableSprite[i] = new WearableSprite(sprite, ToolBox.GetAttributeBool(subElement, "hidelimb", false));
//sprite[i].origin = new Vector2(sourceRect.Width / 2.0f, sourceRect.Height / 2.0f);
wearableSprite[i] = new WearableSprite(sprite, ToolBox.GetAttributeBool(subElement, "hidelimb", false),
(LimbType)Enum.Parse(typeof(LimbType),
ToolBox.GetAttributeString(subElement, "depthlimb", "None"), true));
limbType[i] = (LimbType)Enum.Parse(typeof(LimbType),
ToolBox.GetAttributeString(subElement, "limb", "Head"));
ToolBox.GetAttributeString(subElement, "limb", "Head"), true);
i++;
}