Exemplo n.º 1
0
 public void OnNewResourceable <T>(IResourceable <T> resourceable, T item) where T : IKeyed, INameable
 {
     if (!_resourceHooks.TryGetValue(resourceable, out var hooksObj))
     {
         return;
     }
     ((ResourceHook <T>)hooksObj)(item);
 }
Exemplo n.º 2
0
        public string addRessourcableObject(Player owner, IResourceable resourceObject)
        {
            string resourceId = "";
            Type resourceType = resourceObject.GetType();
            if (resourceType == typeof(clsUnitType))
            {
                // Todo: Anstatt eine neue Instanz erstellen evtl. in der Ressource nur Info-Objekte speichern?
                Resource<clsUnitType> resUnit = new Resource<clsUnitType>();
                resUnit.Owner = owner;
                resUnit.resourceId = Guid.NewGuid();
                resUnit.resourceHandler = this;
                m_lstUnusedUnitResources.Add(resUnit);
                resourceId = resUnit.resourceId.ToString();
            }

            return resourceId;
        }
Exemplo n.º 3
0
        /// <inheritdoc cref="IResourceManager.FreezeResourceable{T}"/>
        public void FreezeResourceable <T>(IResourceable <T> resourceable) where T : IKeyed, INameable
        {
            if (resourceable.IsFrozen)
            {
                throw new ArgumentException("This message is only to be called by IResourceable");
            }
            if (!_resourceHooks.TryGetValue(resourceable, out var hooksObj))
            {
                return;
            }
            var hooks = (ResourceHook <T>)hooksObj;
            var e     = resourceable.GetResourceables();

            foreach (var item in e)
            {
                hooks(item);
            }
        }
Exemplo n.º 4
0
        public void AddHook <T>(IResourceable <T> resourceable, ResourceHook <T> hook) where T : IKeyed, INameable
        {
            if (resourceable.IsFrozen)
            {
                var e = resourceable.GetResourceables();
                foreach (var item in e)
                {
                    hook(item);
                }
            }
            ResourceHook <T> hooks;

            if (_resourceHooks.TryGetValue(resourceable, out var hooksObj))
            {
                hooks  = (ResourceHook <T>)hooksObj;
                hooks += hook;
            }
            else
            {
                hooks = hook;
            }
            _resourceHooks[resourceable] = hooks;
        }