mirror of
https://github.com/ConjureETS/DeathBook.git
synced 2026-03-24 04:20:58 +00:00
Started implementing game time, player awareness update after death.
Signed-off-by: RosimInc <rosim_inc@hotmail.com>
This commit is contained in:
parent
1a05475a6a
commit
9d06c3fe30
@ -135,7 +135,7 @@ Transform:
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 195142}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: -.573046267, y: -.809006572, z: 0}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_Children:
|
||||
- {fileID: 495136}
|
||||
@ -151,7 +151,7 @@ MonoBehaviour:
|
||||
m_GameObject: {fileID: 195142}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: c495d00d780bd3d49866ec60f5efbf66, type: 3}
|
||||
m_Script: {fileID: 11500000, guid: 9c9bbff116cac264d9d7fdcce8cf92e5, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
HighlightedColor: {r: 1, g: 1, b: 1, a: .501960814}
|
||||
|
||||
@ -75,7 +75,7 @@ Transform:
|
||||
m_PrefabInternal: {fileID: 100100000}
|
||||
m_GameObject: {fileID: 136744}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: -.0500000007}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: .800000012, y: .800000012, z: 1}
|
||||
m_Children:
|
||||
- {fileID: 498100}
|
||||
|
||||
@ -581,7 +581,7 @@ Prefab:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 22417254, guid: c993e87661906234fba410e55ed66832, type: 2}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: .590630949
|
||||
value: .549793065
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 22417254, guid: c993e87661906234fba410e55ed66832, type: 2}
|
||||
propertyPath: m_AnchorMax.x
|
||||
@ -1082,6 +1082,18 @@ Prefab:
|
||||
propertyPath: DetailsPanel
|
||||
value:
|
||||
objectReference: {fileID: 724043967}
|
||||
- target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2}
|
||||
propertyPath: FriendshipLikeliness
|
||||
value: .600000024
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2}
|
||||
propertyPath: NumPeople
|
||||
value: 50
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 11432906, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2}
|
||||
propertyPath: AvgNumFriends
|
||||
value: 4
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_ParentPrefab: {fileID: 100100000, guid: 136ea38d5deb4c9418beb879167d9b03, type: 2}
|
||||
m_IsPrefabParent: 0
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
using System.Collections;
|
||||
|
||||
[RequireComponent(typeof(LineRenderer))]
|
||||
public class FriendshipLink : MonoBehaviour
|
||||
public class Link : MonoBehaviour
|
||||
{
|
||||
public Color HighlightedColor = new Color(1f, 1f, 1f, 0.5f);
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a24d489629b440b4d9fcfafc24239241
|
||||
timeCreated: 1439446791
|
||||
guid: 9c9bbff116cac264d9d7fdcce8cf92e5
|
||||
timeCreated: 1439591140
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
@ -1,25 +1,53 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using DeathBook.Util;
|
||||
|
||||
namespace DeathBook.Model
|
||||
{
|
||||
public class Friendship
|
||||
public class Friendship : Observable, Updatable
|
||||
{
|
||||
public Person friend1, friend2;
|
||||
private int importance; //on a scale from 1 to 100
|
||||
private Person self;
|
||||
public Person Self { get { return self; } }
|
||||
private Person friend;
|
||||
public Person Friend { get { return friend; } }
|
||||
|
||||
public Friendship(Person p1, Person p2, int scale)
|
||||
private Friendship other;
|
||||
public Friendship Other { get { return other; } set { other = value; } }
|
||||
|
||||
private FriendshipLink link;
|
||||
public FriendshipLink Link { get { return link; } }
|
||||
|
||||
private float awareness = 0; //on a scale from 0 to 1
|
||||
public float Awareness { get { return awareness; } }
|
||||
|
||||
public Friendship(Person self, Person friend)
|
||||
{
|
||||
friend1 = p1;
|
||||
friend2 = p2;
|
||||
importance = scale;
|
||||
this.self = self;
|
||||
this.friend = friend;
|
||||
}
|
||||
|
||||
public Person GetFriend(Person p)
|
||||
public void Update(float deltaTime)
|
||||
{
|
||||
if (p == friend1)
|
||||
return friend2;
|
||||
return friend1;
|
||||
//This function is only called when friend is dead
|
||||
awareness = Mathf.Max(awareness + deltaTime * CalculateWeight(), 100);
|
||||
|
||||
NotifyObservers();
|
||||
}
|
||||
|
||||
//returns a number between 0 and 1
|
||||
private float CalculateWeight()
|
||||
{
|
||||
float weight = 0;
|
||||
|
||||
weight += link.Importance;
|
||||
|
||||
return weight;
|
||||
}
|
||||
|
||||
internal enum Knowledge
|
||||
{
|
||||
Alive, Doubt, Dead
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
26
Assets/Scripts/Models/FriendshipLink.cs
Normal file
26
Assets/Scripts/Models/FriendshipLink.cs
Normal file
@ -0,0 +1,26 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using DeathBook.Util;
|
||||
|
||||
namespace DeathBook.Model
|
||||
{
|
||||
public class FriendshipLink : Observable
|
||||
{
|
||||
private Person friend1, friend2;
|
||||
public Person Friend1 { get { return friend1; } }
|
||||
public Person Friend2 { get { return friend2; } }
|
||||
|
||||
private float importance; //on a scale from 0 to 1
|
||||
public float Importance { get { return importance; } }
|
||||
|
||||
private float risk = 0; //on a scale from 0 to 1
|
||||
public float Risk { get { return risk; } }
|
||||
|
||||
public FriendshipLink(Person p1, Person p2, float importance)
|
||||
{
|
||||
friend1 = p1;
|
||||
friend2 = p2;
|
||||
this.importance = importance;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c495d00d780bd3d49866ec60f5efbf66
|
||||
timeCreated: 1439307989
|
||||
guid: 5c672f95914b3f04088de0f562834941
|
||||
timeCreated: 1439578834
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
@ -1,24 +1,40 @@
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic;
|
||||
using DeathBook.Util;
|
||||
|
||||
namespace DeathBook.Model
|
||||
{
|
||||
public class Level
|
||||
public class Level : Observable, Updatable
|
||||
{
|
||||
private const float TimeScale = 30f;
|
||||
|
||||
private int score;
|
||||
public int Score { get { return score; } }
|
||||
|
||||
public List<Person> people;
|
||||
public List<Friendship> friendships;
|
||||
private List<Person> people;
|
||||
public List<Person> People { get { return people; } }
|
||||
private List<FriendshipLink> friendships;
|
||||
public List<FriendshipLink> Friendships { get { return friendships; } }
|
||||
|
||||
//1 = 1 minute
|
||||
private float gameTime;
|
||||
public int GameTime { get { return (int)(gameTime * TimeScale); } }
|
||||
|
||||
//private Generator gen;
|
||||
private int gameTime;
|
||||
private int globalAwareness;
|
||||
private float globalAwareness; //on a scale from 0 to 1
|
||||
public float GlobalAwareness { get { return globalAwareness; } }
|
||||
|
||||
public Level(List<Person> people, List<Friendship> friendships)
|
||||
public Level(List<Person> people, List<FriendshipLink> friendships)
|
||||
{
|
||||
this.people = people;
|
||||
this.friendships = friendships;
|
||||
}
|
||||
|
||||
public void Update(float deltaTime)
|
||||
{
|
||||
gameTime += deltaTime;
|
||||
NotifyObservers();
|
||||
|
||||
//TODO Global awareness - start trends
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -21,7 +21,7 @@ namespace DeathBook.Model
|
||||
this.radius = radius;
|
||||
|
||||
List<Person> people = CreatePeople();
|
||||
List<Friendship> friendships = CreateFriendships(people);
|
||||
List<FriendshipLink> friendships = CreateFriendships(people);
|
||||
|
||||
return new Level(people, friendships);
|
||||
}
|
||||
@ -60,16 +60,12 @@ namespace DeathBook.Model
|
||||
longitude += dlong;
|
||||
}
|
||||
|
||||
Debug.Log("People: " + people.Count);
|
||||
|
||||
return people;
|
||||
}
|
||||
|
||||
private List<Friendship> CreateFriendships(List<Person> people)
|
||||
private List<FriendshipLink> CreateFriendships(List<Person> people)
|
||||
{
|
||||
Debug.Log("Creating friendships" + probability);
|
||||
|
||||
List<Friendship> friendships = new List<Friendship>();
|
||||
List<FriendshipLink> friendships = new List<FriendshipLink>();
|
||||
Person p1, p2;
|
||||
|
||||
int totalCount = people.Count;
|
||||
@ -80,7 +76,7 @@ namespace DeathBook.Model
|
||||
for (int i = 0; i < totalCount; i++)
|
||||
{
|
||||
p1 = people[i];
|
||||
missing = avgConnections - p1.numFriends; // TODO Add randomness
|
||||
missing = avgConnections - p1.FriendCount; // TODO Add randomness
|
||||
|
||||
if (missing <= 0)
|
||||
continue;
|
||||
@ -90,7 +86,7 @@ namespace DeathBook.Model
|
||||
for (int j = i+1; j < totalCount; j++)
|
||||
{
|
||||
p2 = people[j];
|
||||
if (p2.numFriends < avgConnections * 1.2)
|
||||
if (p2.FriendCount < avgConnections * 1.2)
|
||||
list.AddLast(new DistanceNode(p1, p2));
|
||||
}
|
||||
|
||||
@ -115,16 +111,24 @@ namespace DeathBook.Model
|
||||
}
|
||||
list.Remove(smallest);
|
||||
}
|
||||
|
||||
Debug.Log("Friends + " + p1.FriendCount);
|
||||
}
|
||||
Debug.Log(friendships.Count);
|
||||
|
||||
return friendships;
|
||||
}
|
||||
|
||||
private Friendship CreateFriendship(Person p1, Person p2)
|
||||
private FriendshipLink CreateFriendship(Person p1, Person p2)
|
||||
{
|
||||
Friendship f = new Friendship(p1, p2, Random.Range(1,100));
|
||||
p1.AddFriendship(f);
|
||||
p2.AddFriendship(f);
|
||||
FriendshipLink f = new FriendshipLink(p1, p2, Random.Range(1,100));
|
||||
Friendship f1 = new Friendship(p1, p2);
|
||||
Friendship f2 = new Friendship(p2, p1);
|
||||
f1.Other = f2;
|
||||
f2.Other = f1;
|
||||
|
||||
p1.AddFriendship(f1);
|
||||
p2.AddFriendship(f2);
|
||||
|
||||
return f;
|
||||
}
|
||||
|
||||
@ -133,9 +137,7 @@ namespace DeathBook.Model
|
||||
Vector3 pos = new Vector3(x, y, z);
|
||||
//Vector2 times =
|
||||
|
||||
//Person p = new Person(id, pos,);
|
||||
Person p = new Person(id, pos);
|
||||
p.initialPosition = pos;
|
||||
|
||||
return p;
|
||||
}
|
||||
@ -149,19 +151,7 @@ namespace DeathBook.Model
|
||||
public DistanceNode(Person p1, Person p2)
|
||||
{
|
||||
p = p2;
|
||||
dist = (p2.initialPosition - p1.initialPosition).sqrMagnitude;
|
||||
dist = (p2.InitialPosition - p1.InitialPosition).sqrMagnitude;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* 1. Friendship urgency - 0-1
|
||||
* Number of friends missing
|
||||
* VS number of nodes left
|
||||
*
|
||||
* 2. Friendship possibility
|
||||
* Closeness
|
||||
* 0 < distance^2 < root(2)*rSq < 4*rSq
|
||||
*
|
||||
*/
|
||||
}
|
||||
|
||||
23
Assets/Scripts/Models/LevelManager.cs
Normal file
23
Assets/Scripts/Models/LevelManager.cs
Normal file
@ -0,0 +1,23 @@
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace DeathBook.Model
|
||||
{
|
||||
public class LevelManager
|
||||
{
|
||||
private static LevelManager instance = new LevelManager();
|
||||
public static LevelManager Instance { get {return instance; } }
|
||||
|
||||
private Level level = null;
|
||||
public Level GameLevel { get { return level; } }
|
||||
|
||||
private LevelGenerator gen = new LevelGenerator();
|
||||
|
||||
private LevelManager() {}
|
||||
|
||||
public void NewLevel(int numPeople, int avgFriends, float probability, float radius)
|
||||
{
|
||||
level = gen.GenerateLevel(numPeople, avgFriends, probability, radius);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 43fe8f02e31afb5499ff01247a389c14
|
||||
timeCreated: 1439506745
|
||||
guid: ccfb5fe3d9ad971499b807bde15217c4
|
||||
timeCreated: 1439591141
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
@ -1,82 +1,86 @@
|
||||
using UnityEngine;
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using DeathBook.Util;
|
||||
|
||||
namespace DeathBook.Model
|
||||
{
|
||||
public class Person : Observable
|
||||
public class Person : Observable, Updatable
|
||||
{
|
||||
public int id;
|
||||
private string name;
|
||||
private List<Friendship> friendList = new List<Friendship>();
|
||||
public Vector3 initialPosition;
|
||||
public int numFriends;
|
||||
public int Id { get { return id; } }
|
||||
|
||||
private string firstName;
|
||||
private string lastName;
|
||||
public string Name { get { return firstName + " " + lastName; } }
|
||||
public string FirstName { get { return firstName; } }
|
||||
|
||||
private Vector3 initialPosition;
|
||||
public Vector3 InitialPosition { get { return initialPosition; } }
|
||||
|
||||
private List<Friendship> friendsList = new List<Friendship>();
|
||||
public List<Friendship> FriendList { get { return friendsList; } }
|
||||
private List<Friendship> deadFriendsList = new List<Friendship>();
|
||||
public List<Friendship> DeadFriendList { get { return deadFriendsList; } }
|
||||
|
||||
private int numAliveFriends = 0;
|
||||
private int numDeadFriends = 0;
|
||||
private int friendCount = 0;
|
||||
public int FriendCount { get { return friendCount; } }
|
||||
|
||||
private int timeBetweenPosts; // f = 1/T;
|
||||
private int connectionTime;
|
||||
private int disconnectionTime;
|
||||
private int awarenessLevel;
|
||||
private bool alive;
|
||||
public int TimeBetweenPosts { get { return timeBetweenPosts; } }
|
||||
|
||||
private int happiness;
|
||||
private bool connected;
|
||||
private float connectionTime;
|
||||
public float ConnectionTime { get { return connectionTime; } }
|
||||
|
||||
//private Node node;
|
||||
private float disconnectionTime;
|
||||
public float DisconnectionTime { get { return disconnectionTime; } }
|
||||
|
||||
public string Name
|
||||
{
|
||||
get { return name; }
|
||||
}
|
||||
private float awarenessLevel = 0; //on a scale from 0 to 1
|
||||
public float AwarenessLevel { get { return awarenessLevel; } }
|
||||
|
||||
public bool Alive
|
||||
{
|
||||
get { return alive; }
|
||||
}
|
||||
private bool alive = true;
|
||||
public bool Alive { get { return alive; } }
|
||||
|
||||
public int AwarenessLevel
|
||||
{
|
||||
get { return awarenessLevel; }
|
||||
}
|
||||
//private int happiness = 1; //on a scale from 0 to 1
|
||||
//public int Happiness { get { return happiness; } }
|
||||
|
||||
public List<Friendship> FriendList
|
||||
{
|
||||
get { return friendList; }
|
||||
}
|
||||
|
||||
public int FriendsCount
|
||||
{
|
||||
get { return numFriends; }
|
||||
}
|
||||
|
||||
public bool Online
|
||||
{
|
||||
get { return connected; }
|
||||
}
|
||||
private bool online = false;
|
||||
public bool Online { get { return online; } }
|
||||
|
||||
public Person(int id, Vector3 pos)
|
||||
{
|
||||
this.id = id;
|
||||
initialPosition = pos;
|
||||
alive = true;
|
||||
|
||||
// TODO Use names from db
|
||||
name = String.Format("Firstname{0} Lastname{0}", id);
|
||||
firstName = "Mark";
|
||||
lastName = "Zuckerberg";
|
||||
}
|
||||
|
||||
public void AddFriendship(Friendship f)
|
||||
{
|
||||
friendList.Add(f);
|
||||
numFriends++;
|
||||
friendsList.Add(f);
|
||||
numAliveFriends++;
|
||||
friendCount++;
|
||||
}
|
||||
|
||||
private bool isConnected(int time)
|
||||
public void KillFriend(Friendship f)
|
||||
{
|
||||
return disconnectionTime > time && time > connectionTime;
|
||||
numAliveFriends--;
|
||||
numDeadFriends++;
|
||||
deadFriendsList.Add(f);
|
||||
}
|
||||
|
||||
private int calculateWeight()
|
||||
public void Update(float deltaTime)
|
||||
{
|
||||
//friendCount * ____ + 1/timeBetweenPosts + }
|
||||
return 0;
|
||||
//TODO Update if connected
|
||||
int time = LevelManager.Instance.GameLevel.GameTime;
|
||||
|
||||
//The following actions are only performed if user is online
|
||||
if (!Online)
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -5,7 +5,7 @@ using DeathBook.Model;
|
||||
|
||||
public class NetworkingSphere : MonoBehaviour
|
||||
{
|
||||
public FriendshipLink LinkObj;
|
||||
public Link LinkObj;
|
||||
public PersonNode PersonObj;
|
||||
public int NumPeople = 50;
|
||||
public int AvgNumFriends = 20;
|
||||
@ -22,14 +22,14 @@ public class NetworkingSphere : MonoBehaviour
|
||||
private Rigidbody rb;
|
||||
|
||||
private PersonNode[] peopleNodes;
|
||||
//TODO private Friendship[] friendships;
|
||||
|
||||
private PersonNode _selectedNode;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
LevelGenerator lGen = new LevelGenerator();
|
||||
Level lvl = lGen.GenerateLevel(NumPeople, AvgNumFriends, FriendshipLikeliness, SphereRadius);
|
||||
LevelManager manager = LevelManager.Instance;
|
||||
manager.NewLevel(NumPeople, AvgNumFriends, FriendshipLikeliness, SphereRadius);
|
||||
Level lvl = manager.GameLevel;
|
||||
|
||||
InstantiateNodes(lvl);
|
||||
AssignLinks(lvl);
|
||||
@ -87,13 +87,13 @@ public class NetworkingSphere : MonoBehaviour
|
||||
|
||||
private void InstantiateNodes(Level lvl)
|
||||
{
|
||||
peopleNodes = new PersonNode[lvl.people.Count];
|
||||
peopleNodes = new PersonNode[lvl.People.Count];
|
||||
|
||||
for (int i = 0; i < lvl.people.Count; i++)
|
||||
for (int i = 0; i < lvl.People.Count; i++)
|
||||
{
|
||||
Person person = lvl.people[i];
|
||||
Person person = lvl.People[i];
|
||||
|
||||
PersonNode pInst = Instantiate(PersonObj, person.initialPosition, Quaternion.identity) as PersonNode;
|
||||
PersonNode pInst = Instantiate(PersonObj, person.InitialPosition, Quaternion.identity) as PersonNode;
|
||||
|
||||
pInst.OnClicked += OnNodeClicked;
|
||||
|
||||
@ -119,11 +119,11 @@ public class NetworkingSphere : MonoBehaviour
|
||||
|
||||
private void AssignLinks(Level lvl)
|
||||
{
|
||||
foreach (Friendship f in lvl.friendships)
|
||||
foreach (FriendshipLink f in lvl.Friendships)
|
||||
{
|
||||
FriendshipLink link = Instantiate(LinkObj) as FriendshipLink;
|
||||
int id1 = f.friend1.id;
|
||||
int id2 = f.friend2.id;
|
||||
Link link = Instantiate(LinkObj) as Link;
|
||||
int id1 = f.Friend1.id;
|
||||
int id2 = f.Friend2.id;
|
||||
link.AttachToObjects(peopleNodes[id1].gameObject, peopleNodes[id2].gameObject);
|
||||
|
||||
// Temporary stuff, for testing
|
||||
|
||||
@ -1,8 +1,10 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
// Using an abstract class to avoid repeating code, but could be implemented as an interface if inheritance is somehow needed for the subjects
|
||||
public abstract class Observable
|
||||
namespace DeathBook.Util
|
||||
{
|
||||
// Using an abstract class to avoid repeating code, but could be implemented as an interface if inheritance is somehow needed for the subjects
|
||||
public abstract class Observable
|
||||
{
|
||||
private List<IObserver> observers;
|
||||
|
||||
public Observable()
|
||||
@ -27,4 +29,5 @@ public abstract class Observable
|
||||
observer.Notify();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,4 +1,7 @@
|
||||
public interface IObserver
|
||||
namespace DeathBook.Util
|
||||
{
|
||||
public interface IObserver
|
||||
{
|
||||
void Notify();
|
||||
}
|
||||
}
|
||||
9
Assets/Scripts/ObserverPattern/IUpdatable.cs
Normal file
9
Assets/Scripts/ObserverPattern/IUpdatable.cs
Normal file
@ -0,0 +1,9 @@
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace DeathBook.Util
|
||||
{
|
||||
public interface Updatable
|
||||
{
|
||||
void Update(float deltaTime);
|
||||
}
|
||||
}
|
||||
12
Assets/Scripts/ObserverPattern/IUpdatable.cs.meta
Normal file
12
Assets/Scripts/ObserverPattern/IUpdatable.cs.meta
Normal file
@ -0,0 +1,12 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 897f94f455c7ce64394a644bd3cf070b
|
||||
timeCreated: 1439591140
|
||||
licenseType: Free
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -2,6 +2,7 @@
|
||||
using System.Collections;
|
||||
using UnityEngine.UI;
|
||||
using DeathBook.Model;
|
||||
using DeathBook.Util;
|
||||
|
||||
public class PersonDetailsPanel : MonoBehaviour, IObserver
|
||||
{
|
||||
|
||||
@ -2,6 +2,7 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using DeathBook.Model;
|
||||
using DeathBook.Util;
|
||||
using System;
|
||||
|
||||
[RequireComponent(typeof(Collider))]
|
||||
@ -18,7 +19,7 @@ public class PersonNode : MonoBehaviour, IObserver
|
||||
public Renderer internQuad;
|
||||
public Renderer xQuad;
|
||||
|
||||
private List<FriendshipLink> _links;
|
||||
private List<Link> _links;
|
||||
private bool _highlighted = false;
|
||||
private bool _selected = false;
|
||||
|
||||
@ -39,7 +40,7 @@ public class PersonNode : MonoBehaviour, IObserver
|
||||
|
||||
void Awake()
|
||||
{
|
||||
_links = new List<FriendshipLink>();
|
||||
_links = new List<Link>();
|
||||
_renderer = GetComponent<Renderer>();
|
||||
_transform = GetComponent<Transform>();
|
||||
}
|
||||
@ -50,7 +51,7 @@ public class PersonNode : MonoBehaviour, IObserver
|
||||
_transform.LookAt(new Vector3(_transform.position.x, _transform.position.y, _transform.position.z + 1));
|
||||
}
|
||||
|
||||
public void AddLink(FriendshipLink link)
|
||||
public void AddLink(Link link)
|
||||
{
|
||||
_links.Add(link);
|
||||
}
|
||||
@ -72,7 +73,7 @@ public class PersonNode : MonoBehaviour, IObserver
|
||||
|
||||
private void UpdateLinks(bool state)
|
||||
{
|
||||
foreach (FriendshipLink link in _links)
|
||||
foreach (Link link in _links)
|
||||
{
|
||||
link.Highlight(state, 1f);
|
||||
}
|
||||
|
||||
1231
Assets/Tests/Gameplay_SR.unity
Normal file
1231
Assets/Tests/Gameplay_SR.unity
Normal file
File diff suppressed because it is too large
Load Diff
8
Assets/Tests/Gameplay_SR.unity.meta
Normal file
8
Assets/Tests/Gameplay_SR.unity.meta
Normal file
@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 43c96e134d44b1646b218de6f0e4c659
|
||||
timeCreated: 1439592514
|
||||
licenseType: Free
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -1,16 +0,0 @@
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
using DeathBook.Model;
|
||||
|
||||
public class SRTest : MonoBehaviour {
|
||||
|
||||
// Use this for initialization
|
||||
void Start () {
|
||||
Utils.Test();
|
||||
}
|
||||
|
||||
// Update is called once per frame
|
||||
void Update () {
|
||||
|
||||
}
|
||||
}
|
||||
@ -1,114 +0,0 @@
|
||||
using UnityEngine;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using DeathBook.Model;
|
||||
|
||||
public class SphereSR : MonoBehaviour
|
||||
{
|
||||
public FriendshipLink LinkObj;
|
||||
public PersonNode PersonObj;
|
||||
public int NumPeople = 50;
|
||||
public int AvgNumFriends = 20;
|
||||
public float FriendshipLikeliness = 0.4f;
|
||||
public float SphereRadius = 1f;
|
||||
public float rotationSpeed = 0.7f;
|
||||
|
||||
public float torqueForce = 50f;
|
||||
private bool dragging = false;
|
||||
private Vector3 delta = new Vector3();
|
||||
private Rigidbody rb;
|
||||
|
||||
private PersonNode[] peopleNodes;
|
||||
//TODO private Friendship[] friendships;
|
||||
private GameObject[] nodes;
|
||||
|
||||
void Awake()
|
||||
{
|
||||
LevelGenerator lGen = new LevelGenerator();
|
||||
Level lvl = lGen.GenerateLevel(NumPeople, AvgNumFriends, FriendshipLikeliness, SphereRadius);
|
||||
|
||||
InstantiateNodes(lvl);
|
||||
AssignLinks(lvl);
|
||||
rb = GetComponent<Rigidbody>();
|
||||
}
|
||||
|
||||
void Update()
|
||||
{
|
||||
Vector3 screenMousePos = Input.mousePosition;
|
||||
|
||||
screenMousePos.z = transform.position.z - Camera.main.transform.position.z;
|
||||
|
||||
Vector3 worldMousePos = Camera.main.ScreenToWorldPoint(screenMousePos);
|
||||
|
||||
// If the world position of the mouse is greater than the radius of the sphere, we are outside
|
||||
if (Mathf.Sqrt(worldMousePos.x * worldMousePos.x + worldMousePos.y * worldMousePos.y) > SphereRadius + 1f)
|
||||
{
|
||||
transform.Rotate(Vector3.one * Time.deltaTime * rotationSpeed);
|
||||
}
|
||||
|
||||
//when right btn clicked, call the chnge rotation
|
||||
if (Input.GetMouseButtonDown(1))
|
||||
{
|
||||
dragging = true;
|
||||
}
|
||||
else if (Input.GetMouseButtonUp(1))
|
||||
{
|
||||
dragging = false;
|
||||
delta = new Vector3();
|
||||
}
|
||||
|
||||
if (dragging)
|
||||
{
|
||||
MoveSphere();
|
||||
}
|
||||
}
|
||||
|
||||
void MoveSphere()
|
||||
{
|
||||
float deltaX = Input.GetAxis("Mouse X");
|
||||
float deltaY = Input.GetAxis("Mouse Y");
|
||||
if (deltaX == 0 && deltaY == 0)
|
||||
{
|
||||
delta = new Vector3();
|
||||
rb.angularVelocity *= 0.8f;
|
||||
}
|
||||
delta += new Vector3(deltaX, deltaY, 0);
|
||||
//rigidbody.AddTorque();
|
||||
rb.AddTorque(Vector3.down * delta.x * torqueForce * Time.deltaTime, ForceMode.Impulse);
|
||||
rb.AddTorque(Vector3.right * delta.y * torqueForce * Time.deltaTime, ForceMode.Impulse);
|
||||
Debug.Log(delta.x + ", " + delta.y);
|
||||
|
||||
|
||||
}
|
||||
|
||||
private void InstantiateNodes(Level lvl)
|
||||
{
|
||||
peopleNodes = new PersonNode[lvl.people.Count];
|
||||
|
||||
int ctr = 0;
|
||||
foreach (Person p in lvl.people)
|
||||
{
|
||||
|
||||
PersonNode pInst = Instantiate(PersonObj, p.initialPosition, Quaternion.identity) as PersonNode;
|
||||
|
||||
pInst.transform.parent = this.transform;
|
||||
|
||||
peopleNodes[ctr++] = pInst;
|
||||
}
|
||||
}
|
||||
|
||||
private void AssignLinks(Level lvl)
|
||||
{
|
||||
foreach (Friendship f in lvl.friendships)
|
||||
{
|
||||
FriendshipLink link = Instantiate(LinkObj) as FriendshipLink;
|
||||
int id1 = f.friend1.id;
|
||||
int id2 = f.friend2.id;
|
||||
link.AttachToObjects(peopleNodes[id1].gameObject, peopleNodes[id2].gameObject);
|
||||
|
||||
// Temporary stuff, for testing
|
||||
peopleNodes[id1].AddLink(link);
|
||||
peopleNodes[id2].AddLink(link);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user