public List <NetworkPlayer> GetDirtiesPlayers() { List <NetworkPlayer> awarded = new List <NetworkPlayer>(); float dirtValue = 0; for (int i = 0; i < Segments.Length; i++) { TableSegment current = Segments[i]; NetworkPlayer player = _slotter.GetPlayer(current); if (player == null) { continue; } float value = current.GetDisgustingValue(); if (value > dirtValue) { dirtValue = value; awarded.Clear(); awarded.Add(player); } else if (value == dirtValue) { awarded.Add(player); } } return(awarded); }
public TableSegment GetDirtiestSegment(bool playerRequired) { int _dirtIndex = -1; float _dirt = 0; for (int i = 0; i < Segments.Length; i++) { TableSegment current = Segments[i]; NetworkPlayer player = _slotter.GetPlayer(current.GetSlot()); if (playerRequired && player == null) { continue; } float disgustingValue = current.GetDisgustingValue(); if (disgustingValue > 0) { _dirt = disgustingValue; _dirt = i; } } if (_dirtIndex < 0) { return(null); } return(Segments[_dirtIndex]); }
public TableSegment GetSegment(NetworkPlayer player) { for (int i = 0; i < Segments.Length; i++) { TableSegment current = Segments[i]; PlayerSlot currentSlot = current.GetSlot(); if (_slotter == null) { _slotter = PlayerSlotter.Singleton(); } NetworkPlayer currentPlayer = _slotter.GetPlayer(currentSlot); if (currentPlayer == null) { continue; } if (currentPlayer == player) { return(current); } } return(null); }
private void DeserializeProperty(EndianBinaryReader reader, object declaringObj, PropertyInfo property) { var propertyType = property.PropertyType; object propertyValue = null; if (propertyType == typeof(TableSegment)) { propertyValue = new TableSegment(((MemoryStream)reader.BaseStream).ToArray()); } else if (propertyType.IsArray) { var fixedLengthAttrib = property.GetCustomAttribute <FixedArrayLengthAttribute>(); if (fixedLengthAttrib == null) { throw new Exception(); } if (propertyType == typeof(string[])) { var fixedStrLengthAttrib = property.GetCustomAttribute <FixedStringLengthAttribute>(); if (fixedStrLengthAttrib == null) { throw new Exception(); } string[] strings = new string[fixedLengthAttrib.Length]; for (int i = 0; i < strings.Length; i++) { unsafe { fixed(sbyte *pBytes = (sbyte[])DeserializeArray(reader, fixedStrLengthAttrib.Length, typeof(sbyte))) { strings[i] = new string(pBytes); } } } propertyValue = strings; } else { propertyValue = DeserializeArray(reader, fixedLengthAttrib.Length, propertyType.GetElementType()); } } else { propertyValue = DeserializeType(reader, propertyType); } property.SetValue(declaringObj, propertyValue); }
void ResetAwards() { for (int i = 0; i < _segmentCollection.Count; i++) { TableSegment current = _segmentCollection[i]; NetworkPlayer player = _slotter.GetPlayer(current); if (player != null) { player.ResetAwards(); } } }
List <NetworkPlayer> GetMostEatenPlayers() { List <NetworkPlayer> awarded = new List <NetworkPlayer>(); int mostAmount = 0; for (int i = 0; i < _objectives.Count; i++) { TableSegment segment = _segmentCollection[i]; Objective current = _objectives[segment]; if (!current.HasEaten()) { continue; } if (current.Progress > mostAmount) { mostAmount = current.Progress; awarded.Clear(); NetworkPlayer player = _slotter.GetPlayer(segment); if (player != null) { awarded.Add(player); } } else if (current.Progress == mostAmount) { NetworkPlayer player = _slotter.GetPlayer(segment); if (player != null) { awarded.Add(player); } } } return(awarded); }
void CheckSegments() { //Debug.Log("Checking Segments"); for (int i = 0; i < _tableSegments.Length; i++) { TableSegment current = _tableSegments[i]; if (current.GetDisgustingValue() > _distgustThreshold) { NetworkPlayer player = _slotter.GetPlayer(current.GetSlot()); if (player == null) { continue; } player.PunishPlayer(); // TODO: Punish player connected to segment } } }
public void OnAteEdible(NetworkPlayer player) { if (_segmentCollection == null) { return; } if (player == null) { return; } TableSegment segment = _segmentCollection.GetSegment(player); if (segment == null) { return; } Objective objective = _objectives[segment]; objective.Progress++; }
void SpawnObjects() { int amount = Random.Range((int)_spawnRange.x, (int)_spawnRange.y); for (int i = 0; i < _segmentCollection.Count; i++) { TableSegment current = _segmentCollection[i]; SpawnSphere spawner = current.SpawnLocation; Vector3 pos; Quaternion rot; for (int j = 0; j < amount; j++) { spawner.GetSpawn(out pos, out rot); GameObject newObject = Instantiate(GetRandomEdiblePrefab(), pos, rot, _objectContainer); _edibles.Add(newObject); // IObjective stuff NetworkServer.Spawn(newObject); } } }
public NetworkPlayer GetPlayer(TableSegment segment) { return(GetPlayer(segment.GetSlot())); }