33 lines
833 B
Go
33 lines
833 B
Go
package main
|
|
|
|
const (
|
|
BULLET_LINEAR = iota
|
|
)
|
|
|
|
const (
|
|
STAGE_WIDTH float64 = 90.0
|
|
STAGE_HEIGHT float64 = 160.0
|
|
BULLET_KILL_BUFFER_WIDTH float64 = 16.0
|
|
)
|
|
|
|
type Bullet struct {
|
|
Class int
|
|
SpawnTime int64
|
|
SpawnX float64
|
|
SpawnY float64
|
|
Parameters []float64
|
|
}
|
|
|
|
func (b Bullet) GetCurrentPos(tick int64) (float64, float64) {
|
|
switch b.Class {
|
|
case BULLET_LINEAR:
|
|
return b.SpawnX + (b.Parameters[0] * float64(tick-b.SpawnTime)), b.SpawnY + (b.Parameters[1] * float64(tick-b.SpawnTime))
|
|
default:
|
|
return b.SpawnX, b.SpawnY
|
|
}
|
|
}
|
|
|
|
func (b Bullet) BeyondKillBoundary(tick int64) bool {
|
|
x, y := b.GetCurrentPos(tick)
|
|
return (x < 0.0-BULLET_KILL_BUFFER_WIDTH) || (x > STAGE_WIDTH+BULLET_KILL_BUFFER_WIDTH) || (y < 0.0-BULLET_KILL_BUFFER_WIDTH) || (y > STAGE_HEIGHT+BULLET_KILL_BUFFER_WIDTH)
|
|
}
|