Example #1
0
        /// <summary>
        /// Removes a <see cref="PlayerIdentity"/> from the dictionary of tracked <see cref="PlayerIdentity"/> instances.
        /// </summary>
        /// <param name="identity"></param>
        public void RemovePlayerEntry(PlayerIdentity identity)
        {
            if (!entries[identity].Equals(null))
            {
                Destroy(entries[identity].gameObject);
            }

            entries.Remove(identity);
        }
Example #2
0
        /// <summary>
        /// Adds a <see cref="PlayerIdentity"/> to the dictionary of tracked <see cref="PlayerIdentity"/> instances.
        /// </summary>
        /// <param name="identity"></param>
        public void AddPlayerEntry(PlayerIdentity identity)
        {
            GameObject newEntry = (GameObject)Instantiate(Resources.Load("Prefabs/PlayerEntry"), gameObject.transform);

            PlayerEntry entry = newEntry.GetComponent <PlayerEntry>();

            entry.PlayerIdentity = identity;

            entries.Add(identity, entry);
        }
Example #3
0
        public void GatherResources()
        {
            HashSet <PlayerIdentity> remainingIdentities = new HashSet <PlayerIdentity>(FindObjectsOfType <PlayerIdentity>());

            foreach (KeyValuePair <int, HashSet <int> > entry in dependencyMap.Where(e => e.Key >= 0 && e.Key != PlayerIdentity.LocalInstance.id))
            {
                PlayerIdentity identity = PlayerIdentity.FindById(entry.Key);
                remainingIdentities.Remove(identity);
                identity.TransferResources();
            }

            foreach (PlayerIdentity identity in remainingIdentities)
            {
                identity.ready               = true;
                identity.transferProgress    = 1f;
                identity.LocalRobotFileCount = Directory.GetFiles(identity.RobotFolder).Length;
            }
        }
Example #4
0
        public void DistributeResources()
        {
            foreach (PlayerIdentity identity in FindObjectsOfType <PlayerIdentity>())
            {
                if (dependants.Contains(identity.id))
                {
                    identity.transferProgress = 0f;
                }
                else
                {
                    identity.transferProgress = 1f;
                    identity.ready            = true;
                }
            }

            foreach (KeyValuePair <int, HashSet <int> > entry in dependencyMap.Where(e => e.Key >= 0))
            {
                PlayerIdentity hostIdentity = PlayerIdentity.FindById(entry.Key);

                foreach (PlayerIdentity dependant in FindObjectsOfType <PlayerIdentity>()
                         .Where(p => entry.Value.Contains(p.id)))
                {
                    dependant.dependencyCount += hostIdentity.LocalRobotFileCount;
                }
            }

            if (dependencyMap.ContainsKey(-1))
            {
                DistributeField(dependencyMap[-1]);
            }

            foreach (KeyValuePair <int, HashSet <int> > entry in dependencyMap.Where(e => e.Key >= 0))
            {
                PlayerIdentity.FindById(entry.Key).DistributeResources(entry.Value);
            }
        }