bool IRegistry.LookUp(string id, out IRegistrable registrable) { var flag = LookUp(id, out var parameter); registrable = parameter; return(flag); }
public void Unregister(IRegistrable registrable) { if (Parent.LookUp(registrable.Id, out _)) { throw new AccessViolationException(); } Registry.Unregister(registrable); }
internal void CheckType(IRegistrable registrable) { if (registrable == null) { throw new ArgumentNullException(nameof(registrable)); } if (!TargetType.IsInstanceOfType(registrable)) { throw new ArgumentException($"type not match, required: {TargetType}, given: {registrable.GetType()}"); } }
public bool LookUp(string id, out IRegistrable registrable) { if (Registry.LookUp(id, out registrable)) { return(true); } if (Parent.LookUp(id, out registrable)) { return(true); } registrable = default; return(false); }
public bool LookUp(string id, out IRegistrable registrable) { if (id != null) { lock (_registered) // ReSharper disable once AssignmentInConditionalExpression if (_registered.TryGetValue(id, out registrable)) { return(true); } } registrable = default; return(false); }
public void Unregister(IRegistrable registrable) { CheckType(registrable); var id = registrable.Id; lock (_registered) if (!_registered.ContainsKey(id) || !ReferenceEquals(_registered[id], registrable)) { throw new ArgumentException($"unregistered: {id}"); } else { _registered.Remove(id); } }
public void Register(IRegistrable registrable) { CheckType(registrable); var id = registrable.Id; lock (_registered) if (_registered.ContainsKey(id)) { throw new ArgumentException($"identifier already used: {id}"); } else { _registered[id] = registrable; } }
/* * Return the entity otherwise null * **/ public IRegistrable FindEntity(Type _entityType,uint _gameObjectUniqueKey) { IRegistrable result = null; if (TypeRegisterMap.ContainsKey(_entityType)) { var mapType = TypeRegisterMap[_entityType]; if (mapType.ContainsKey(_gameObjectUniqueKey)) result = mapType[_gameObjectUniqueKey]; else Debug.LogWarning("Player with netword id " + _gameObjectUniqueKey + " not found"); } else { Debug.LogWarning("Type "+ _entityType.ToString() + " not found in the types map"); } return result; }
public static int Register(IRegistrable registrable) { var info = registrable.GetRegistrationInfo(); if (info == null) { return(-1); } info.Id = _nextId; RegisteredList.Add(info); _nextId = RegisteredList.Count + 1; return(info.Id); }
//With BRIDGE pattern, implement Register method so it will accept both a Person and an Item public static int Register(IRegistrable registarable) { //get info from an lib object var info = registarable.GetRegistrationInfo(); if (info == null) { return(-1); } //get new id for for the registered object info.Id = _nextId; //add to registration repository _registeredList.Add(info); //store next available id _nextId = _registeredList.Count + 1; //return success return(info.Id); }
void IRegistry.Unregister(IRegistrable registrable) => Unregister((GlobalParameter)registrable);
public bool RemoveEntity(IRegistrable _entity) { var aEntityType = _entity.GetType(); var networkId = _entity.GetUniqueKey(); return TypeRegisterMap[aEntityType].Remove(networkId); }
public void AddEntity(IRegistrable _entity) { var aEntityType = _entity.GetType(); var networkId = _entity.GetUniqueKey(); TypeRegisterMap[aEntityType][networkId] = _entity; }
//Implement Register method by utilizing RegistrationRepository (complete missing parts) public int Register(IRegistrable registrableItem) { return(RegistrationRepository.Register(registrableItem)); }