Implemented color changes for friendship links

Online/offline functionality tested and running

Signed-off-by: RosimInc <rosim_inc@hotmail.com>
This commit is contained in:
RosimInc 2015-08-16 00:43:36 -04:00
parent 4d41e5948b
commit 08f85edc51
5 changed files with 34 additions and 23 deletions

View File

@ -1101,15 +1101,15 @@ Prefab:
objectReference: {fileID: 724043967}
- target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2}
propertyPath: levelOptions.NumPeople
value: 2
value: 50
objectReference: {fileID: 0}
- target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2}
propertyPath: levelOptions.AvgNumFriends
value: 1
value: 8
objectReference: {fileID: 0}
- target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2}
propertyPath: levelOptions.FriendshipLikeliness
value: 1
value: .600000024
objectReference: {fileID: 0}
m_RemovedComponents: []
m_ParentPrefab: {fileID: 100100000, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2}

View File

@ -9,8 +9,10 @@ public class Link : MonoBehaviour, IObserver
private float highlightAlpha = 0.8f;
private float defaultAlpha = 0.5f;
private Color currentDefaultColor;
private Color currentHighlightColor;
private Color color;
private Color baseColor = new Color(0.3f, 0.7f, 1f);
private Color inactiveColor = new Color(0.15f, 0.15f, 0.05f);
private static float defaultScale = 0.03f;
private float hightlightScale = 0.2f;
@ -40,7 +42,7 @@ public class Link : MonoBehaviour, IObserver
model.Subscribe(this);
//Make it between 0.1 and 0.4
GetColors(Model.Awareness);
GetColors();
hightlightScale = Model.Importance * 0.3f + 0.1f;
Highlight(false);
}
@ -66,8 +68,10 @@ public class Link : MonoBehaviour, IObserver
public void Notify()
{
GetColors(Model.Awareness);
GetColors();
UpdateBeam();
if (Model.KillCount == 2)
hightlightScale = 0.1f;
//TODO SR
}
@ -115,22 +119,14 @@ public class Link : MonoBehaviour, IObserver
UpdateBeam();
}
private void GetColors(float level)
private void GetColors()
{
//If level is 0.0, green [0,1,0].
//If level is 0.5, yellow [1,1,0].
//If level is 1.0, red [1,0,0].
float r = 1f;
float g = 1f;
if (level < 0.5f)
r = Mathf.Lerp(0, 1, level*2);
if (Model.KillCount == 0)
color = baseColor;
else if (Model.KillCount == 2)
color = inactiveColor;
else
g = Mathf.Lerp(1, 0, level * 2 - 1);
currentDefaultColor = new Color(r, g, 0f, defaultAlpha);
currentHighlightColor = new Color(r, g, 0f, highlightAlpha);
color = new Color(1f, Mathf.Lerp(1, 0, Model.Awareness), 0f);
}
private void UpdateBeam()
@ -138,6 +134,8 @@ public class Link : MonoBehaviour, IObserver
float width = isHighlighted ? hightlightScale : defaultScale;
BeamLine.SetWidth(width, width);
_renderer.material.SetColor("_TintColor", isHighlighted ? currentHighlightColor : currentDefaultColor);
color.a = isHighlighted ? highlightAlpha : defaultAlpha;
_renderer.material.SetColor("_TintColor", color);
}
}

View File

@ -27,6 +27,12 @@ namespace DeathBook.Model
this.link = link;
}
public void NotifyFriendWasKilled()
{
Link.KillCount++;
Self.NotifyFriendWasKilled(this);
}
public void Update(float deltaTime)
{
if (noticedDeath)

View File

@ -20,6 +20,13 @@ namespace DeathBook.Model
set { awareness = value; NotifyObservers(); }
}
private int killCount = 0; //Number of people dead in this relationship
public int KillCount
{
get { return killCount; }
set { killCount = value; NotifyObservers(); }
}
public FriendshipLink(Person p1, Person p2, float importance)
{
friend1 = p1;

View File

@ -87,7 +87,7 @@ namespace DeathBook.Model
Debug.Log("Person " + id + " died!");
alive = false;
foreach (Friendship f in friendsList)
f.Friend.NotifyFriendWasKilled(f.Other);
f.Other.NotifyFriendWasKilled();
NotifyObservers();
return true;