Files
quakespasm/wprog/entity.wren
T
2026-09-03 22:18:23 -05:00

126 lines
3.0 KiB
Plaintext

class TempEntity {
static SPIKE { 0 }
static SUPERSPIKE { 1 }
static GUNSHOT { 2 }
static EXPLOSION { 3 }
static TAREXPLOSION { 4 }
static LIGHTNING1 { 5 }
static LIGHTNING2 { 6 }
static WIZSPIKE { 7 }
static KNIGHTSPIKE { 8 }
static LIGHTNING3 { 9 }
static LAVASPLASH { 10 }
static TELEPORT { 11 }
}
class ServerCommand {
static BAD { 0 }
static NOP { 1 }
static DISCONNECT { 2 }
static UPDATESTAT { 3 }
static VERSION { 4 }
static SETVIEW { 5 }
static SOUND { 6 }
static TIME { 7 }
static PRINT { 8 }
static STUFFTEXT { 9 }
static SETANGLE { 10 }
static SERVERINFO { 11 }
static LIGHTSTYLE { 12 }
static UPDATENAME { 13 }
static UPDATEFRAGS { 14 }
static CLIENTDATA { 15 }
static STOPSOUND { 16 }
static UPDATECOLORS { 17 }
static PARTICLE { 18 }
static DAMAGE { 19 }
static SPAWNstatic { 20 }
static SPAWNBASELINE { 22 }
static TEMP_ENTITY { 23 }
static SETPAUSE { 24 }
static SIGNONNUM { 25 }
static CENTERPRINT { 26 }
static KILLEDMONSTER { 27 }
static FOUNDSECRET { 28 }
static SPAWNstaticSOUND { 29 }
static INTERMISSION { 30 }
static FINALE { 31 }
static CDTRACK { 32 }
static SELLSCREEN { 33 }
static CUTSCENE { 34 }
}
class Quake {
foreign static sound(entity, channel, sample, volume, attenuation)
foreign static precache_sound(sound)
foreign static error(err)
foreign static normalize(vec)
foreign static write_byte(dest, value)
foreign static write_coord(dest, value)
foreign static write_char(dest, value)
static MSG_BROADCAST { 0 }
static MSG_ALL { 2 }
foreign static time
static spawn_particle(dest, origin, dir, count, colour) {
Quake.write_byte(dest, ServerCommand.PARTICLE)
Quake.write_coord(dest, origin[0])
Quake.write_coord(dest, origin[1])
Quake.write_coord(dest, origin[2])
Quake.write_char(dest, dir[0])
Quake.write_char(dest, dir[1])
Quake.write_char(dest, dir[2])
Quake.write_byte(dest, count)
Quake.write_byte(dest, colour)
}
}
foreign class EntityVariables {
construct new() {}
foreign origin
foreign next_think
foreign origin=(origin)
foreign next_think=(nt)
}
class EntityBase {
construct new() {
_vars = EntityVariables.new()
}
setThink(think) {
_thinkFn = think
}
think() {
if (_thinkFn) {
_thinkFn.call()
}
}
vars { _vars }
}
class monster_ogre is EntityBase {
construct new() {
super()
setThink { test_think() }
}
test_think() {
super.vars.next_think = Quake.time + 0.1
//Quake.precache_sound("demon/djump.wav")
Quake.spawn_particle(Quake.MSG_BROADCAST, vars.origin, [0, (Quake.time.cos * 127), (Quake.time.sin * 127)], 5, (Quake.time / 2).sin * 128)
}
}