From 4d41e5948bd538c40876648a10ff30c841b0e5c6 Mon Sep 17 00:00:00 2001 From: RosimInc Date: Sat, 15 Aug 2015 23:43:45 -0400 Subject: [PATCH 1/2] Added connection and disconnection times. Prevented killing online people. Signed-off-by: RosimInc --- Assets/Prefabs/NetworkingSphere.prefab | 14 ++++--- Assets/Scenes/Gameplay.unity | 31 ++++++++++---- Assets/Scenes/UiTweaking.unity | 22 +++++++--- Assets/Scripts/Models/Level.cs | 15 +++++-- Assets/Scripts/Models/LevelGenerator.cs | 15 ++++++- Assets/Scripts/Models/Person.cs | 54 ++++++++++++++++--------- Assets/Scripts/Models/Utils.cs | 5 +++ Assets/Scripts/NetworkingSphere.cs | 7 ++-- 8 files changed, 118 insertions(+), 45 deletions(-) diff --git a/Assets/Prefabs/NetworkingSphere.prefab b/Assets/Prefabs/NetworkingSphere.prefab index 94c7961..05e5e3e 100644 --- a/Assets/Prefabs/NetworkingSphere.prefab +++ b/Assets/Prefabs/NetworkingSphere.prefab @@ -88,12 +88,14 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d0907c1567bad554c8b995de3459e517, type: 3} m_Name: m_EditorClassIdentifier: - LinkObj: {fileID: 11495142, guid: fab430cecad80ad4391987a06b550cb7, type: 2} - PersonObj: {fileID: 11417564, guid: 7a5b1db47a2c30e419038df40dffa79a, type: 2} - NumPeople: 50 - AvgNumFriends: 8 - FriendshipLikeliness: .400000006 - SphereRadius: 7 + gameObjects: + LinkObj: {fileID: 11495142, guid: fab430cecad80ad4391987a06b550cb7, type: 2} + PersonObj: {fileID: 11417564, guid: 7a5b1db47a2c30e419038df40dffa79a, type: 2} + levelOptions: + NumPeople: 50 + AvgNumFriends: 8 + FriendshipLikeliness: .600000024 + SphereRadius: 7 rotationSpeed: .699999988 torqueForce: 1 DetailsPanel: {fileID: 0} diff --git a/Assets/Scenes/Gameplay.unity b/Assets/Scenes/Gameplay.unity index 43717db..c94c8b2 100644 --- a/Assets/Scenes/Gameplay.unity +++ b/Assets/Scenes/Gameplay.unity @@ -438,6 +438,10 @@ MonoBehaviour: type: 2} m_PrefabInternal: {fileID: 1009381200} m_Script: {fileID: 11500000, guid: 88fb1885d6f8fd6409e3866b7707a12a, type: 3} +--- !u!1 &811802576 stripped +GameObject: + m_PrefabParentObject: {fileID: 147852, guid: c993e87661906234fba410e55ed66832, type: 2} + m_PrefabInternal: {fileID: 1009381200} --- !u!1 &997683484 GameObject: m_ObjectHideFlags: 0 @@ -581,7 +585,7 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 22417254, guid: c993e87661906234fba410e55ed66832, type: 2} propertyPath: m_AnchorMin.y - value: .549793065 + value: .590630949 objectReference: {fileID: 0} - target: {fileID: 22417254, guid: c993e87661906234fba410e55ed66832, type: 2} propertyPath: m_AnchorMax.x @@ -619,6 +623,19 @@ Prefab: value: objectReference: {fileID: 21300000, guid: 0c813218655d0a1468d7269b69deb9d5, type: 3} + - target: {fileID: 22458514, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: m_AnchoredPosition.y + value: -65.9512253 + objectReference: {fileID: 0} + - target: {fileID: 11476684, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: Container + value: + objectReference: {fileID: 811802576} + - target: {fileID: 11476684, guid: c993e87661906234fba410e55ed66832, type: 2} + propertyPath: UIFriendPicture + value: + objectReference: {fileID: 11467422, guid: 16a1d168f1ef75b4690435675a9e69b0, + type: 2} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: c993e87661906234fba410e55ed66832, type: 2} m_IsPrefabParent: 0 @@ -1083,16 +1100,16 @@ Prefab: value: objectReference: {fileID: 724043967} - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} - propertyPath: FriendshipLikeliness - value: .600000024 + propertyPath: levelOptions.NumPeople + value: 2 objectReference: {fileID: 0} - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} - propertyPath: NumPeople - value: 50 + propertyPath: levelOptions.AvgNumFriends + value: 1 objectReference: {fileID: 0} - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} - propertyPath: AvgNumFriends - value: 4 + propertyPath: levelOptions.FriendshipLikeliness + value: 1 objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} diff --git a/Assets/Scenes/UiTweaking.unity b/Assets/Scenes/UiTweaking.unity index 2104457..07d0daf 100644 --- a/Assets/Scenes/UiTweaking.unity +++ b/Assets/Scenes/UiTweaking.unity @@ -159,7 +159,6 @@ Camera: m_OcclusionCulling: 1 m_StereoConvergence: 10 m_StereoSeparation: .0219999999 - m_StereoMirrorMode: 0 --- !u!4 &61719365 Transform: m_ObjectHideFlags: 0 @@ -733,15 +732,15 @@ Prefab: objectReference: {fileID: 0} - target: {fileID: 22417254, guid: c993e87661906234fba410e55ed66832, type: 2} propertyPath: m_AnchorMin.y - value: 0 + value: .594142556 objectReference: {fileID: 0} - target: {fileID: 22417254, guid: c993e87661906234fba410e55ed66832, type: 2} propertyPath: m_AnchorMax.x - value: 0 + value: 1 objectReference: {fileID: 0} - target: {fileID: 22417254, guid: c993e87661906234fba410e55ed66832, type: 2} propertyPath: m_AnchorMax.y - value: 0 + value: 1 objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: c993e87661906234fba410e55ed66832, type: 2} @@ -923,7 +922,6 @@ MonoBehaviour: m_SubmitButton: Submit m_CancelButton: Cancel m_InputActionsPerSecond: 10 - m_RepeatDelay: .5 m_AllowActivationOnMobileDevice: 0 --- !u!114 &1999982086 MonoBehaviour: @@ -1056,6 +1054,20 @@ Prefab: propertyPath: DetailsPanel value: objectReference: {fileID: 724043967} + - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: gameObjects.LinkObj + value: + objectReference: {fileID: 11495142, guid: fab430cecad80ad4391987a06b550cb7, + type: 2} + - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: gameObjects.PersonObj + value: + objectReference: {fileID: 11417564, guid: 7a5b1db47a2c30e419038df40dffa79a, + type: 2} + - target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} + propertyPath: levelOptions.SphereRadius + value: 7 + objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2} m_IsPrefabParent: 0 diff --git a/Assets/Scripts/Models/Level.cs b/Assets/Scripts/Models/Level.cs index 83b74b1..fe663d6 100644 --- a/Assets/Scripts/Models/Level.cs +++ b/Assets/Scripts/Models/Level.cs @@ -6,7 +6,7 @@ namespace DeathBook.Model { public class Level : Observable, Updatable { - private const float TimeScale = 30f; + private const float TimeScale = 30*4f; private int score; public int Score { get { return score; } } @@ -17,8 +17,12 @@ namespace DeathBook.Model public List Friendships { get { return friendships; } } //1 = 1 minute - private float gameTime; + private float gameTime; // real seconds elapsed since beginning public int GameTime { get { return (int)(gameTime * TimeScale); } } + //Time of day, between 0 minute to 1440 minutes (a day) + public int DayTime { get { return GameTime % (24*60); } } + + private int lastHour = -1; private float globalAwareness; //on a scale from 0 to 1 public float GlobalAwareness { get { return globalAwareness; } } @@ -32,7 +36,12 @@ namespace DeathBook.Model public void Update(float deltaTime) { gameTime += deltaTime; - NotifyObservers(); + int hour = DayTime / 60; + if (hour != lastHour) + { + lastHour = hour; + NotifyObservers(); + } //TODO Global awareness - start trends } diff --git a/Assets/Scripts/Models/LevelGenerator.cs b/Assets/Scripts/Models/LevelGenerator.cs index b380224..a87f12f 100644 --- a/Assets/Scripts/Models/LevelGenerator.cs +++ b/Assets/Scripts/Models/LevelGenerator.cs @@ -133,9 +133,20 @@ namespace DeathBook.Model private Person CreatePerson(int id, float x, float y, float z) { Vector3 pos = new Vector3(x, y, z); - //Vector2 times = + //Value between 3 and 21 + float connectionDuration = Utils.GetRandomValue(12, 9, 3); + int connectionTime = Random.Range(0, 24 * 60); + int disconnectionTime = (connectionTime + (int)(connectionDuration * 60)) % (24 * 60); + float freq = Utils.GetRandomValue(0, 1, 3); - Person p = new Person(id, pos); + bool isFemale = Random.value <= 0.5; + + string fName = "Fifi"; //isFemale ? NameGenerator.GetFemaleName() : NameGenerator.GetMaleName(); + string lName = "Brindacier"; //NameGenerator.GetLastName(); + + Sprite pic = isFemale ? PictureGenerator.GetFemalePicture() : PictureGenerator.GetMalePicture(); + + Person p = new Person(id, fName, lName, pos, connectionTime, disconnectionTime, freq, pic); return p; } diff --git a/Assets/Scripts/Models/Person.cs b/Assets/Scripts/Models/Person.cs index c6b78b2..857149b 100644 --- a/Assets/Scripts/Models/Person.cs +++ b/Assets/Scripts/Models/Person.cs @@ -28,14 +28,13 @@ namespace DeathBook.Model private int friendCount = 0; public int FriendCount { get { return friendCount; } } - private int timeBetweenPosts; // f = 1/T; - public int TimeBetweenPosts { get { return timeBetweenPosts; } } + private float postFrequency; //on a scale from 0 to 1 + public float PostFrequency { get { return postFrequency; } } - private float connectionTime; - public float ConnectionTime { get { return connectionTime; } } - - private float disconnectionTime; - public float DisconnectionTime { get { return disconnectionTime; } } + private int connectionTime; + public int ConnectionTime { get { return connectionTime; } } + private int disconnectionTime; + public int DisconnectionTime { get { return disconnectionTime; } } private float awarenessLevel = 0; //on a scale from 0 to 1 public float AwarenessLevel { get { return awarenessLevel; } } @@ -44,23 +43,25 @@ namespace DeathBook.Model public bool Alive { get { return alive; } } private bool online = true; - public bool Online { get { return online; } } + public bool Online { get { return online; } set { online = value; NotifyObservers(); } } private Sprite picture; public Sprite Picture { get { return picture; } } - public Person(int id, Vector3 pos) + public Person(int id, string fName, string lName, Vector3 pos, int conn, int disconn, float freq, Sprite pic) { this.id = id; - initialPosition = pos; + this.firstName = fName; + this.lastName = lName; + this.initialPosition = pos; + this.connectionTime = conn; + this.disconnectionTime = disconn; + Debug.Log("I am " + id + " and I connect at " + Utils.GetTimeString(connectionTime) + " until " + Utils.GetTimeString(disconnectionTime)); + this.postFrequency = freq; + this.picture = pic; - // TODO Use names from db - firstName = "Mark"; - lastName = "Zuckerberg"; - - // For testing purposes - picture = UnityEngine.Random.Range(0, 2) == 0 ? PictureGenerator.GetFemalePicture() : PictureGenerator.GetMalePicture(); + online = IsOnline(0); } public void AddFriendship(Friendship f) @@ -78,13 +79,18 @@ namespace DeathBook.Model deadFriendsList.Add(f); } - public void Kill() + public bool Kill() { + if (Online) + return false; + Debug.Log("Person " + id + " died!"); alive = false; foreach (Friendship f in friendsList) f.Friend.NotifyFriendWasKilled(f.Other); NotifyObservers(); + + return true; } public void NoticeDeath(Friendship f) @@ -96,12 +102,22 @@ namespace DeathBook.Model NotifyObservers(); } + //Time in hours + private bool IsOnline(int time) + { + if (ConnectionTime < DisconnectionTime) + return (time > ConnectionTime && time < DisconnectionTime); + return !(time < ConnectionTime && time > DisconnectionTime); + } + public void Update(float deltaTime) { - //TODO Update if connected - int time = LevelManager.Instance.GameLevel.GameTime; + int time = LevelManager.Instance.GameLevel.DayTime; + bool isOnline = IsOnline(time); + if (isOnline != Online) + Online = isOnline; //The following actions are only performed if user is online if (!Online) diff --git a/Assets/Scripts/Models/Utils.cs b/Assets/Scripts/Models/Utils.cs index 08f33ca..fcb58e8 100644 --- a/Assets/Scripts/Models/Utils.cs +++ b/Assets/Scripts/Models/Utils.cs @@ -28,5 +28,10 @@ namespace DeathBook.Model } return (sum / numSteps * 2 - 1) * range + mean; } + + public static string GetTimeString(int time) + { + return time / 60 + "h " + time % 60 + "m"; + } } } diff --git a/Assets/Scripts/NetworkingSphere.cs b/Assets/Scripts/NetworkingSphere.cs index 07a9f52..60d6859 100644 --- a/Assets/Scripts/NetworkingSphere.cs +++ b/Assets/Scripts/NetworkingSphere.cs @@ -51,10 +51,11 @@ public class NetworkingSphere : MonoBehaviour rb = GetComponent(); } - /*void OnGUI() + void OnGUI() { - GUI.Button(new Rect(10, 100, 400, 40), manager.GameLevel.GameTime + ""); - }*/ + int time = manager.GameLevel.DayTime; + GUI.Button(new Rect(50, 50, 100, 40), Utils.GetTimeString(time)); + } void Update() { From 08f85edc51aaf97a125edcf8d7fb42765b0226dd Mon Sep 17 00:00:00 2001 From: RosimInc Date: Sun, 16 Aug 2015 00:43:36 -0400 Subject: [PATCH 2/2] Implemented color changes for friendship links Online/offline functionality tested and running Signed-off-by: RosimInc --- Assets/Scenes/Gameplay.unity | 6 ++--- Assets/Scripts/Link.cs | 36 ++++++++++++------------- Assets/Scripts/Models/Friendship.cs | 6 +++++ Assets/Scripts/Models/FriendshipLink.cs | 7 +++++ Assets/Scripts/Models/Person.cs | 2 +- 5 files changed, 34 insertions(+), 23 deletions(-) diff --git a/Assets/Scenes/Gameplay.unity b/Assets/Scenes/Gameplay.unity index c94c8b2..27da76c 100644 --- a/Assets/Scenes/Gameplay.unity +++ b/Assets/Scenes/Gameplay.unity @@ -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} diff --git a/Assets/Scripts/Link.cs b/Assets/Scripts/Link.cs index f2730c9..865a70e 100644 --- a/Assets/Scripts/Link.cs +++ b/Assets/Scripts/Link.cs @@ -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,29 +119,23 @@ 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() { float width = isHighlighted ? hightlightScale : defaultScale; BeamLine.SetWidth(width, width); + + color.a = isHighlighted ? highlightAlpha : defaultAlpha; - _renderer.material.SetColor("_TintColor", isHighlighted ? currentHighlightColor : currentDefaultColor); + _renderer.material.SetColor("_TintColor", color); } } diff --git a/Assets/Scripts/Models/Friendship.cs b/Assets/Scripts/Models/Friendship.cs index a1ff053..9106811 100644 --- a/Assets/Scripts/Models/Friendship.cs +++ b/Assets/Scripts/Models/Friendship.cs @@ -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) diff --git a/Assets/Scripts/Models/FriendshipLink.cs b/Assets/Scripts/Models/FriendshipLink.cs index 231a861..5357c1a 100644 --- a/Assets/Scripts/Models/FriendshipLink.cs +++ b/Assets/Scripts/Models/FriendshipLink.cs @@ -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; diff --git a/Assets/Scripts/Models/Person.cs b/Assets/Scripts/Models/Person.cs index 857149b..51ec1ff 100644 --- a/Assets/Scripts/Models/Person.cs +++ b/Assets/Scripts/Models/Person.cs @@ -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;