From 09fc5ef46b911f9d7e31cdedd240e7afc4c11c92 Mon Sep 17 00:00:00 2001 From: realtradam Date: Wed, 7 Jul 2021 17:49:00 -0400 Subject: completed functionality --- docs/FelFlame/ComponentManager.html | 1627 +++++++++++++++++++++++++++++++++++ 1 file changed, 1627 insertions(+) create mode 100644 docs/FelFlame/ComponentManager.html (limited to 'docs/FelFlame/ComponentManager.html') diff --git a/docs/FelFlame/ComponentManager.html b/docs/FelFlame/ComponentManager.html new file mode 100644 index 0000000..ef75405 --- /dev/null +++ b/docs/FelFlame/ComponentManager.html @@ -0,0 +1,1627 @@ + + + + + + + Class: FelFlame::ComponentManager + + — Documentation by YARD 0.9.26 + + + + + + + + + + + + + + + + + + + +
+ + +

Class: FelFlame::ComponentManager + + + +

+
+ +
+
Inherits:
+
+ Object + +
    +
  • Object
  • + + + +
+ show all + +
+
+ + + + + + + + + + + +
+
Defined in:
+
component_manager.rb
+
+ +
+ +

Overview

+
+ +

Component Managers are what is used to create individual components which can be attached to entities. When a Component is created from a Component Manager that has accessors given to it, you can set or get the values of those accessors using standard ruby message sending (e.g @component.var = 5), or by using the #attrs and #update_attrs methods instead.

+ + +
+
+
+ + +
+ + + +

Class Attribute Summary collapse

+
    + +
  • + + + .addition_triggers ⇒ Array<System> + + + + + + + + + readonly + + + + + + + + + +
    +

    Stores references to systems that should be triggered when this component is added to an enitity.

    +
    + +
  • + + +
  • + + + .attr_triggers ⇒ Hash<Symbol, System> + + + + + + + + + readonly + + + + + + + + + +
    +

    Stores references to systems that should be triggered when an attribute from this component changed.

    +
    + +
  • + + +
  • + + + .removal_triggers ⇒ Array<System> + + + + + + + + + readonly + + + + + + + + + +
    +

    Stores references to systems that should be triggered when this component is removed from an enitity.

    +
    + +
  • + + +
+ +

Instance Attribute Summary collapse

+
    + +
  • + + + #addition_triggers ⇒ Array<System> + + + + + + + + + readonly + + + + + + + + + +
    +

    Stores references to systems that should be triggered when a component from this manager is added.

    +
    + +
  • + + +
  • + + + #attr_triggers ⇒ Hash<Symbol, Array<System>> + + + + + + + + + readonly + + + + + + + + + +
    +

    Stores references to systems that should be triggered when an attribute from this manager is changed.

    +
    + +
  • + + +
  • + + + #id ⇒ Integer + + + + + + + + + readonly + + + + + + + + + +
    +

    Holds the unique ID of a component.

    +
    + +
  • + + +
  • + + + #removal_triggers ⇒ Array<System> + + + + + + + + + readonly + + + + + + + + + +
    +

    Stores references to systems that should be triggered when a component from this manager is removed.

    +
    + +
  • + + +
+ + + + + +

+ Class Method Summary + collapse +

+ + + +

+ Instance Method Summary + collapse +

+ + + + +
+

Constructor Details

+ +
+

+ + #initialize(**attrs) ⇒ Component + + + + + +

+
+ +

Creates a new component and sets the values of the attributes given to it. If an attritbute is not passed then it will remain as the default.

+ + +
+
+
+

Parameters:

+
    + +
  • + + attrs + + + (Keyword: Value) + + + + — +
    +

    You can pass any number of Keyword-Value pairs

    +
    + +
  • + +
+ + +
+ + + + +
+
+
+
+104
+105
+106
+107
+108
+109
+110
+111
+112
+113
+114
+115
+116
+117
+118
+119
+120
+121
+122
+
+
# File 'component_manager.rb', line 104
+
+def initialize(**attrs)
+  # Prepare the object
+  # (this is a function created with metaprogramming
+  # in FelFlame::Components
+  set_defaults
+
+  # Generate ID
+  new_id = self.class.data.find_index { |i| i.nil? }
+  new_id = self.class.data.size if new_id.nil?
+  @id = new_id
+
+  # Fill params
+  attrs.each do |key, value|
+    send "#{key}=", value
+  end
+
+  # Save Component
+  self.class.data[new_id] = self
+end
+
+
+ +
+ +
+

Class Attribute Details

+ + + +
+

+ + .addition_triggersArray<System> + + + + + +

+
+ +

Stores references to systems that should be triggered when this component is added to an enitity. Do not edit this array as it is managed by FelFlame automatically.

+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Array<System>) + + + +
  • + +
+ +
+ + + + +
+
+
+
+136
+137
+138
+
+
# File 'component_manager.rb', line 136
+
+def addition_triggers
+  @addition_triggers ||= []
+end
+
+
+ + + +
+

+ + .attr_triggersHash<Symbol, System> + + + + + +

+
+ +

Stores references to systems that should be triggered when an attribute from this component changed. Do not edit this hash as it is managed by FelFlame automatically.

+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Hash<Symbol, System>) + + + +
  • + +
+ +
+ + + + +
+
+
+
+152
+153
+154
+
+
# File 'component_manager.rb', line 152
+
+def attr_triggers
+  @attr_triggers ||= {}
+end
+
+
+ + + +
+

+ + .removal_triggersArray<System> + + + + + +

+
+ +

Stores references to systems that should be triggered when this component is removed from an enitity. Do not edit this array as it is managed by FelFlame automatically.

+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Array<System>) + + + +
  • + +
+ +
+ + + + +
+
+
+
+144
+145
+146
+
+
# File 'component_manager.rb', line 144
+
+def removal_triggers
+  @removal_triggers ||= []
+end
+
+
+ +
+ +
+

Instance Attribute Details

+ + + +
+

+ + #addition_triggersArray<System> + + + + + +

+
+ +

Stores references to systems that should be triggered when a component from this manager is added. Do not edit this array as it is managed by FelFlame automatically.

+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Array<System>) + + + +
  • + +
+ +
+ + + + +
+
+
+
+81
+82
+83
+
+
# File 'component_manager.rb', line 81
+
+def addition_triggers
+  @addition_triggers ||= []
+end
+
+
+ + + +
+

+ + #attr_triggersHash<Symbol, Array<System>> + + + + + +

+
+ +

Stores references to systems that should be triggered when an attribute from this manager is changed. Do not edit this hash as it is managed by FelFlame automatically.

+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Hash<Symbol, Array<System>>) + + + +
  • + +
+ +
+ + + + +
+
+
+
+97
+98
+99
+
+
# File 'component_manager.rb', line 97
+
+def attr_triggers
+  @attr_triggers ||= {}
+end
+
+
+ + + +
+

+ + #idInteger + + + + + +

+
+ +

Holds the unique ID of a component. The ID is only unique within the scope of the component manager it was created from.

+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Integer) + + + +
  • + +
+ +
+ + + + +
+
+
+
+63
+64
+65
+
+
# File 'component_manager.rb', line 63
+
+def id
+  @id
+end
+
+
+ + + +
+

+ + #removal_triggersArray<System> + + + + + +

+
+ +

Stores references to systems that should be triggered when a component from this manager is removed. Do not edit this array as it is managed by FelFlame automatically.

+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Array<System>) + + + +
  • + +
+ +
+ + + + +
+
+
+
+89
+90
+91
+
+
# File 'component_manager.rb', line 89
+
+def removal_triggers
+  @removal_triggers ||= []
+end
+
+
+ +
+ + +
+

Class Method Details

+ + +
+

+ + .[](component_id) ⇒ Component + + + + + +

+
+ +

Gets a Component from the given unique ID. Usage is simular to how an Array lookup works.

+ + +
+
+
+ +
+

Examples:

+ + +
# this gets the 'Health' Component with ID 7
+FelFlame::Components::Health[7]
+ +
+

Parameters:

+
    + +
  • + + component_id + + + (Integer) + + + +
  • + +
+ +

Returns:

+
    + +
  • + + + (Component) + + + + — +
    +

    Returns the Component that uses the given unique ID, nil if there is no Component associated with the given ID

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+169
+170
+171
+
+
# File 'component_manager.rb', line 169
+
+def [](component_id)
+  data[component_id]
+end
+
+
+ +
+

+ + .each(&block) ⇒ Enumerator + + + + + +

+
+ +

Iterates over all components within the component manager. Special Enumerable methods like map or each_with_index are not implemented

+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Enumerator) + + + +
  • + +
+ +
+ + + + +
+
+
+
+176
+177
+178
+
+
# File 'component_manager.rb', line 176
+
+def each(&block)
+  data.compact.each(&block)
+end
+
+
+ +
+ +
+

Instance Method Details

+ + +
+

+ + #attr_changed_trigger_systems(attr) ⇒ Boolean + + + + + +

+
+ +

Execute systems that have been added to execute on variable change

+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Boolean) + + + + — +
    +

    true

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+203
+204
+205
+206
+207
+208
+209
+210
+211
+
+
# File 'component_manager.rb', line 203
+
+def attr_changed_trigger_systems(attr)
+  systems_to_execute = self.class.attr_triggers[attr]
+  systems_to_execute = [] if systems_to_execute.nil?
+
+  systems_to_execute |= attr_triggers[attr] unless attr_triggers[attr].nil?
+
+  systems_to_execute.sort_by(&:priority).reverse.each(&:call)
+  true
+end
+
+
+ +
+

+ + #attrsHash<Symbol, Value> + + + + + +

+
+ +

Returns A hash, where all the keys are attributes linked to their respective values.

+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Hash<Symbol, Value>) + + + + — +
    +

    A hash, where all the keys are attributes linked to their respective values.

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+234
+235
+236
+237
+238
+239
+240
+
+
# File 'component_manager.rb', line 234
+
+def attrs
+  return_hash = instance_variables.each_with_object({}) do |key, final|
+    final[key.to_s.delete_prefix('@').to_sym] = instance_variable_get(key)
+  end
+  return_hash.delete(:attr_triggers)
+  return_hash
+end
+
+
+ +
+

+ + #deleteBoolean + + + + + +

+
+ +

Removes this component from the list and purges all references to this Component from other Entities, as well as its ID and data.

+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Boolean) + + + + — +
    +

    true.

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+215
+216
+217
+218
+219
+220
+221
+222
+223
+224
+225
+226
+227
+228
+229
+230
+231
+
+
# File 'component_manager.rb', line 215
+
+def delete
+  addition_triggers.each do |system|
+    system.clear_triggers component_or_manager: self
+  end
+  # This needs to be cloned because indices get deleted as
+  # the remove command is called, breaking the loop if it
+  # wasn't referencing a clone(will get Nil errors)
+  iter = entities.map(&:clone)
+  iter.each do |entity_id|
+    FelFlame::Entities[entity_id].remove self #unless FelFlame::Entities[entity_id].nil?
+  end
+  self.class.data[id] = nil
+  instance_variables.each do |var|
+    instance_variable_set(var, nil)
+  end
+  true
+end
+
+
+ +
+

+ + #entitiesArray<Integer> + + + + + +

+
+ +

A list of entity ids that are linked to the component

+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Array<Integer>) + + + +
  • + +
+ +
+ + + + +
+
+
+
+189
+190
+191
+
+
# File 'component_manager.rb', line 189
+
+def entities
+  @entities ||= []
+end
+
+
+ +
+

+ + #to_iInteger + + + + + +

+
+ +

An alias for the ID Reader

+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Integer) + + + +
  • + +
+ +
+ + + + +
+
+
+
+183
+184
+185
+
+
# File 'component_manager.rb', line 183
+
+def to_i
+  id
+end
+
+
+ +
+

+ + #update_attrs(**opts) ⇒ Hash<Symbol, Value> + + + + + +

+
+ +

Update attribute values using a hash or keywords.

+ + +
+
+
+ +

Returns:

+
    + +
  • + + + (Hash<Symbol, Value>) + + + + — +
    +

    Hash of updated attributes

    +
    + +
  • + +
+ +
+ + + + +
+
+
+
+195
+196
+197
+198
+199
+
+
# File 'component_manager.rb', line 195
+
+def update_attrs(**opts)
+  opts.each do |key, value|
+    send "#{key}=", value
+  end
+end
+
+
+ +
+ +
+ + + +
+ + \ No newline at end of file -- cgit v1.2.3