59 lines
1.9 KiB
JavaScript
59 lines
1.9 KiB
JavaScript
class AgentsModel extends WindozModel {
|
|
|
|
constructor() {
|
|
super()
|
|
this.ressource = '/agents'
|
|
this.agentProps = {}
|
|
}
|
|
|
|
async getTypes(family) {
|
|
let endpoint = {...app.config.api[this.ressource].getTypes}
|
|
endpoint.uri = endpoint.uri.replace('{family}', family)
|
|
return (
|
|
this.request(endpoint.uri, endpoint.method)
|
|
.then( async serverData => serverData.payload.agentTypes)
|
|
)
|
|
}
|
|
|
|
async getSprites(group) {
|
|
let endpoint = {...app.config.api[this.ressource].getSprites}
|
|
endpoint.uri = endpoint.uri.replace('{group}', group)
|
|
return (
|
|
this.request(endpoint.uri, endpoint.method)
|
|
.then( async serverData => serverData.payload.agentSprites)
|
|
)
|
|
}
|
|
|
|
async getProperties(id, force=false) {
|
|
if((!(id in this.agentProps)) || force){
|
|
let endpoint = {...app.config.api[this.ressource].getProperties}
|
|
endpoint.uri = endpoint.uri.replace('{id}', id)
|
|
return (
|
|
this.request(endpoint.uri, endpoint.method)
|
|
.then( async serverData => {
|
|
this.agentProps[id] = serverData.payload.agentProperties.atp_props
|
|
return(serverData.payload.agentProperties.atp_props)
|
|
})
|
|
)
|
|
} else {
|
|
return(this.agentProps[id])
|
|
}
|
|
}
|
|
|
|
async getDefaultProps(id){
|
|
const aprops = await this.getProperties(id)
|
|
const defaults={ position: { x:0, y:0, z:0 }, speed: { x:0, y:0, z:0 }}
|
|
for(const p in aprops) {
|
|
const prop = aprops[p]
|
|
if(prop?.type === 'number') {
|
|
const n = Number(prop.default)
|
|
defaults[p] = Number.isFinite(n) ? n : 0
|
|
} else {
|
|
defaults[p] = prop.default
|
|
}
|
|
}
|
|
return(defaults)
|
|
}
|
|
}
|
|
|
|
app.registerClass('AgentsModel', AgentsModel); |