Spell-Mastery-Game-Prototype / Scripts / Item / ItemSlot.js
ItemSlot.js
Raw
class ItemSlot extends GameObject
{
  constructor(layerIndex, position, dimension)
  {
    super(position.x, position.y)
    
    this.layerIndex = layerIndex
    this.position = position
    this.dimension = dimension
    
    this.setupComponents()
  }
  
  setupComponents()
  {
    this.spriteComp = new SpriteComponent(null, new Vector2(-1))
    this.addComponent(this.spriteComp)
    
    this.setupEquipWheelComponent()
    
    this.back = new RectangleRenderComponent(this.dimension, '#00000000')
    this.addComponent(this.back)
    
    this.frame = new RectangleRenderComponent(this.dimension, 'black',2)
    this.addComponent(this.frame)
  }
  
  setupEquipWheelComponent()
  {
    this.addComponent(new EquipWheelComponent(
      this.layerIndex, this.dimension,
      (index) => {this.equip(index)}, 
      () => {this.onSelection()}
    ))
  }
  
  onSelection()
  {
    this.item.display()
    this.checkInspection()
  }
  
  checkInspection()
  {
    if(this.item.isInspected)
      return
    
    this.back.color = '#00000000'
    this.item.isInspected = true
  }
  
  equip(index)
  {
    _gameManager.player.equipment.moveItemToSlot(index, this.item)
  }
  
  setItem(item)
  {
    if(item == null)
      return this.frame.color = 'black'

    this.item = item
    this.spriteComp.setImageSource(item.getComponent("SPRITE").src)
    
    this.setupColors()
  }
  
  setupColors()
  {
    this.frame.color = this.item.rarity[2]
    this.setupBackgroundColor()
  }
  
  setupBackgroundColor()
  {
    if(!this.item.isInspected)
      this.back.color = '#FFFFFF99'
    if(this.item.isLocked)
      this.back.color = '#00000099'
  }
  
  removeItem()
  {
    this.item = null
    this.spriteComp.setImageSource(null)
  }
}

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