Archived
1
0
Fork 0
This repository has been archived on 2026-01-19. You can view files and clone it, but cannot push or open issues or pull requests.
Danmaku/server/bullets.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)
}