Saving (wip), statuseffect refactoring, multiple character faces
This commit is contained in:
@@ -115,47 +115,13 @@ namespace Subsurface.Items.Components
|
||||
|
||||
foreach (StatusEffect effect in ri.statusEffects)
|
||||
{
|
||||
if (effect.Targets.HasFlag(StatusEffect.Target.This)) effect.Apply(ActionType.OnContaining, deltaTime, item);
|
||||
if (effect.Targets.HasFlag(StatusEffect.Target.Contained)) effect.Apply(ActionType.OnContaining, deltaTime, contained);
|
||||
if (effect.Targets.HasFlag(StatusEffect.TargetType.This)) effect.Apply(ActionType.OnContaining, deltaTime, item.SimPosition, item.AllPropertyObjects);
|
||||
if (effect.Targets.HasFlag(StatusEffect.TargetType.Contained)) effect.Apply(ActionType.OnContaining, deltaTime, item.SimPosition, contained.AllPropertyObjects);
|
||||
}
|
||||
|
||||
contained.ApplyStatusEffects(ActionType.OnContained, deltaTime);
|
||||
}
|
||||
|
||||
//if (hideItems) return;
|
||||
|
||||
//Vector2 transformedItemPos;
|
||||
//Vector2 transformedItemInterval = itemInterval;
|
||||
////float transformedItemRotation = itemRotation;
|
||||
//if (item.body==null)
|
||||
//{
|
||||
// transformedItemPos = new Vector2(item.Rect.X, item.Rect.Y);
|
||||
// transformedItemPos = ConvertUnits.ToSimUnits(transformedItemPos) + itemPos;
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// Matrix transform = Matrix.CreateRotationZ(item.body.Rotation);
|
||||
|
||||
// transformedItemPos = item.body.Position + Vector2.Transform(itemPos, transform);
|
||||
// transformedItemInterval = Vector2.Transform(transformedItemInterval, transform);
|
||||
// //transformedItemRotation += item.body.Rotation;
|
||||
//}
|
||||
|
||||
//foreach (Item containedItem in inventory.items)
|
||||
//{
|
||||
// if (containedItem == null) continue;
|
||||
|
||||
// Vector2 itemDist = (transformedItemPos - containedItem.body.Position);
|
||||
// Vector2 force = (itemDist - containedItem.body.LinearVelocity * 0.1f) * containedItem.body.Mass * 60.0f;
|
||||
|
||||
// containedItem.body.ApplyForce(force);
|
||||
|
||||
// containedItem.body.SmoothRotate(itemRotation);
|
||||
|
||||
// transformedItemPos += transformedItemInterval;
|
||||
//}
|
||||
|
||||
|
||||
}
|
||||
|
||||
public override void Draw(SpriteBatch spriteBatch)
|
||||
|
||||
@@ -233,9 +233,12 @@ namespace Subsurface.Items.Components
|
||||
|
||||
public override void Update(float deltaTime, Camera cam)
|
||||
{
|
||||
OpenState += deltaTime * ((isOpen) ? 3.0f : -3.0f);
|
||||
if (!isStuck)
|
||||
{
|
||||
OpenState += deltaTime * ((isOpen) ? 3.0f : -3.0f);
|
||||
LinkedGap.Open = openState;
|
||||
}
|
||||
|
||||
LinkedGap.Open = openState;
|
||||
|
||||
item.SendSignal((isOpen) ? "1" : "0", "state_out");
|
||||
}
|
||||
@@ -309,8 +312,6 @@ namespace Subsurface.Items.Components
|
||||
|
||||
public override void ReceiveSignal(string signal, Connection connection, Item sender)
|
||||
{
|
||||
if (isStuck) return;
|
||||
|
||||
if (connection.name=="toggle")
|
||||
{
|
||||
isOpen = !isOpen;
|
||||
|
||||
@@ -291,7 +291,13 @@ namespace Subsurface
|
||||
return false;
|
||||
}
|
||||
|
||||
public virtual void Remove() { }
|
||||
public virtual void Remove()
|
||||
{
|
||||
if (loopingSound!=null)
|
||||
{
|
||||
Sounds.SoundManager.Stop(loopingSoundIndex);
|
||||
}
|
||||
}
|
||||
|
||||
public bool HasRequiredContainedItems(bool addMessage)
|
||||
{
|
||||
|
||||
@@ -147,8 +147,8 @@ namespace Subsurface.Items.Components
|
||||
|
||||
foreach (StatusEffect effect in statusEffects)
|
||||
{
|
||||
if (Array.IndexOf(effect.TargetNames, targetItem.Name) == -1) continue;
|
||||
effect.Apply(ActionType.OnUse, deltaTime, targetItem);
|
||||
//if (Array.IndexOf(effect.TargetNames, targetItem.Name) == -1) continue;
|
||||
effect.Apply(ActionType.OnUse, deltaTime, item.SimPosition, targetItem.AllPropertyObjects);
|
||||
//targetItem.ApplyStatusEffect(effect, ActionType.OnUse, deltaTime);
|
||||
}
|
||||
//ApplyStatusEffects(ActionType.OnUse, 1.0f, null, targ);
|
||||
|
||||
@@ -115,22 +115,14 @@ namespace Subsurface.Items.Components
|
||||
|
||||
Item[] containedItems = item.ContainedItems;
|
||||
|
||||
ApplyStatusEffects(ActionType.OnWearing, deltaTime, picker);
|
||||
|
||||
for (int i = 0; i < limb.Length; i++)
|
||||
if (containedItems == null) return;
|
||||
for (int j = 0; j<containedItems.Length; j++)
|
||||
{
|
||||
if (limb[i] == null) continue;
|
||||
ApplyStatusEffects(ActionType.OnWearing, deltaTime, picker);
|
||||
|
||||
if (containedItems == null) continue;
|
||||
for (int j = 0; j<containedItems.Length; j++)
|
||||
{
|
||||
if (containedItems[j] == null) continue;
|
||||
containedItems[j].ApplyStatusEffects(ActionType.OnWearing, deltaTime, picker);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (containedItems[j] == null) continue;
|
||||
containedItems[j].ApplyStatusEffects(ActionType.OnWearing, deltaTime, picker);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+36
-11
@@ -144,6 +144,20 @@ namespace Subsurface
|
||||
get { return prefab.IsLinkable; }
|
||||
}
|
||||
|
||||
public List<IPropertyObject> AllPropertyObjects
|
||||
{
|
||||
get
|
||||
{
|
||||
List<IPropertyObject> pobjects = new List<IPropertyObject>();
|
||||
pobjects.Add(this);
|
||||
foreach (ItemComponent ic in components)
|
||||
{
|
||||
pobjects.Add(ic);
|
||||
}
|
||||
return pobjects;
|
||||
}
|
||||
}
|
||||
|
||||
List<string> highlightText;
|
||||
|
||||
public List<string> HighlightText
|
||||
@@ -334,9 +348,11 @@ namespace Subsurface
|
||||
}
|
||||
}
|
||||
|
||||
List<IPropertyObject> targets = new List<IPropertyObject>();
|
||||
|
||||
if (containedItems!=null)
|
||||
{
|
||||
if (effect.Targets.HasFlag(StatusEffect.Target.Contained))
|
||||
if (effect.Targets.HasFlag(StatusEffect.TargetType.Contained))
|
||||
{
|
||||
foreach (Item containedItem in containedItems)
|
||||
{
|
||||
@@ -344,7 +360,8 @@ namespace Subsurface
|
||||
if (effect.TargetNames != null && !effect.TargetNames.Contains(containedItem.Name)) continue;
|
||||
|
||||
hasTargets = true;
|
||||
effect.Apply(type, deltaTime, containedItem);
|
||||
targets.Add(containedItem);
|
||||
//effect.Apply(type, deltaTime, containedItem);
|
||||
//containedItem.ApplyStatusEffect(effect, type, deltaTime, containedItem);
|
||||
}
|
||||
}
|
||||
@@ -353,19 +370,27 @@ namespace Subsurface
|
||||
|
||||
if (hasTargets)
|
||||
{
|
||||
if (effect.Targets.HasFlag(StatusEffect.Target.This))
|
||||
effect.Apply(type, deltaTime, this);
|
||||
if (effect.Targets.HasFlag(StatusEffect.TargetType.This))
|
||||
{
|
||||
foreach (var pobject in AllPropertyObjects)
|
||||
{
|
||||
targets.Add(pobject);
|
||||
}
|
||||
}
|
||||
//effect.Apply(type, deltaTime, this);
|
||||
//ApplyStatusEffect(effect, type, deltaTime, this);
|
||||
|
||||
if (effect.Targets.HasFlag(StatusEffect.Target.Character))
|
||||
effect.Apply(type, deltaTime, null, character);
|
||||
if (effect.Targets.HasFlag(StatusEffect.TargetType.Character)) targets.Add(character);
|
||||
//effect.Apply(type, deltaTime, null, character);
|
||||
//ApplyStatusEffect(effect, type, deltaTime, null, character, limb);
|
||||
|
||||
if (container != null && effect.Targets.HasFlag(StatusEffect.Target.Parent))
|
||||
{
|
||||
effect.Apply(type, deltaTime, container);
|
||||
//container.ApplyStatusEffect(effect, type, deltaTime, container);
|
||||
}
|
||||
if (container != null && effect.Targets.HasFlag(StatusEffect.TargetType.Parent)) targets.Add(container);
|
||||
//{
|
||||
// effect.Apply(type, deltaTime, container);
|
||||
// //container.ApplyStatusEffect(effect, type, deltaTime, container);
|
||||
//}
|
||||
|
||||
effect.Apply(type, deltaTime, SimPosition, targets);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user