Spell-Mastery-Game-Prototype / Scripts / SpellModules / Module.js
Module.js
Raw
class Module
{
  constructor()
  {
    this.active = false
  }
  
  setActive(state)
  {
    this.active = state
  }
  
  onEvent(event){
    if(!this.active)
      return
    
    switch(event.type)
    {
      case ExecutionTypes.onTrigger:
        this.onTrigger(event)
        break;
      case ExecutionTypes.beforeCast:
        this.beforeCast(event.spellCore)
        break;
      case ExecutionTypes.onCastRequest:
        this.onCastRequest(event.caster, event.targetPosition, event.spellCore, event.castIndex)
        break;
      case ExecutionTypes.onCast:
        this.onCast(event.spellCore)
        break;
      case ExecutionTypes.afterCast:
        this.afterCast(event.spellEntity)
        break
      case ExecutionTypes.beforeHit:
        this.beforeHit(event.spellEntity)
        break;
      case ExecutionTypes.onHit:
        this.onHit(event.spellEntity, event.hitEntity)
        break;
      case ExecutionTypes.afterHit:
        this.afterHit(event.spellEntity, event.hitEntity)
        break;
      case ExecutionTypes.onHitComplete:
        this.onHitComplete(event.spellEntity)
        break;
      case ExecutionTypes.onDestroy:
        this.onDestroy(event.spellEntity)
        break;
      case ExecutionTypes.onTurningPhysical:
        this.onTurningPhysical(event.spellEntity)
        break;
      default:
        console.log('Module: undefined execution type: '+ event.type)
    }
  }
  
  onEquip(spellCore){}
  onRemove(moduleManager){}
  
  onTargetReached(spellComponent){return false}
  beforeCast(spellCore){}
  onCastRequest(caster, targetPosition, spellCore, castIndex){return false}
  onCast(spellCore){return true}
  afterCast(spellEntity, castIndex){}
  beforeHit(spellEntity){}
  onHit(spellEntity, hitEntity, castIndex){}
  afterHit(spellEntity, hitEntity){}
  onHitComplete(spellEntity){}
  onDestroy(spellEntity){}
  onTurningPhysical(spellEntity){}
  
  onTrigger(triggerType, spellCore, castIndex){}
}

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