/ engine / components / spawner.go
spawner.go
 1  package components
 2  
 3  // Spawner holds spawning configuration and runtime timers
 4  type Spawner struct {
 5  	PacketSpawnElapsed  float64
 6  	PacketSpawnRate     float64
 7  	PowerUpSpawnElapsed float64
 8  	PowerUpSpawnRate    float64
 9  	PacketSpeed         float64
10  	Level               int
11  	// DDoS state
12  	IsDDoSActive bool
13  	DDOSTimer    float64
14  	DDoSDuration float64
15  	DDoSMult     float64
16  	DDoSCooldown float64
17  }
18  
19  func NewSpawner() *Spawner {
20  	return &Spawner{
21  		PacketSpawnElapsed:  0,
22  		PacketSpawnRate:     1.0,
23  		PowerUpSpawnElapsed: 0,
24  		PowerUpSpawnRate:    10.0,
25  		PacketSpeed:         100.0,
26  		Level:               1,
27  		IsDDoSActive:        false,
28  		DDOSTimer:           0,
29  		DDoSDuration:        5.0,
30  		DDoSMult:            3.0,
31  		DDoSCooldown:        10.0,
32  	}
33  }
34  
35  func (s *Spawner) GetType() string { return "Spawner" }
36  
37  func (s *Spawner) IncreasePacketSpeed(percent float64) {
38  	s.PacketSpeed *= (1.0 + percent/100.0)
39  }
40  
41  func (s *Spawner) SetLevel(level int) {
42  	s.Level = level
43  	s.PacketSpawnRate = 1.0 / (1.0 + float64(level-1)*0.2)
44  }