Spell-Mastery-Game-Prototype / Scripts / PassiveTree / PassiveTree.js
PassiveTree.js
Raw
class PassiveTree
{
  //pos/node
  nodes = {}
  
  constructor(owner)
  {
    this.owner = owner
  }
  
  addStartingNode()
  {
    let node = new NodeItem(0,0, 'cross', new Vector2())
    node.modifierList.clear()
    this.addNode(node, new Vector2())
  }
  
  addNode(node, pos)
  {
    if(pos == null)
      return
    
    let key = pos.x + ',' + pos.y
    
    if(this.nodes[key] != null)
      return
    
    this.handleNode(pos,key,node)
    this.nodes[key] = node
  }
  
  handleNode(pos,key,node)
  {
    if(node != null)
    {
      node.moveTo(pos)
      this.collectModifier(node)
      this.addEmptyOpeningNodes(node, pos)
    }
  }
  
  addEmptyOpeningNodes(node, pos)
  {
    for(let o of NodeTypes[node.typeKey].openings)
        this.addNode(null, pos.copy().add(o))
  }
  
  collectModifier(node)
  {
    this.owner.distributeModifierList(node.modifierList)
  }
  
  getNode(tilePos)
  {
    let key = tilePos.x + ',' + tilePos.y
    
    return this.nodes[key]
  }
}

console.log(PassiveTree.name+' loaded...')