diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2023-02-02 00:13:30 +0100 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2025-08-20 15:46:38 +0200 |
| commit | e8f44219976edf8cf57cbd9e964f66fe9d145a9c (patch) | |
| tree | 8618f3b22d94ff443227d7ebbc84014e2a786fae /go/game/attack.go | |
| parent | e64e268155c4398a82245626cf36bc39f3bea6a8 (diff) | |
| download | muhqs-game-e8f44219976edf8cf57cbd9e964f66fe9d145a9c.tar.gz muhqs-game-e8f44219976edf8cf57cbd9e964f66fe9d145a9c.zip | |
change unit attack representation and implement sword
Diffstat (limited to 'go/game/attack.go')
| -rw-r--r-- | go/game/attack.go | 39 |
1 files changed, 29 insertions, 10 deletions
diff --git a/go/game/attack.go b/go/game/attack.go index 97881d48..35af7ff2 100644 --- a/go/game/attack.go +++ b/go/game/attack.go @@ -8,28 +8,41 @@ import ( ) type Attack struct { - Damage int - Range int + attacks []int } -func INVALID_ATTACK() Attack { - return Attack{-1, -1} +func INVALID_ATTACK(a Attack) bool { + return a.attacks == nil +} + +func (a Attack) MaxRange() int { + return len(a.attacks) +} + +func (a Attack) DamageInRange(r int) int { + if r > a.MaxRange() { + return 0 + } + + return a.attacks[r-1] } func (a Attack) String() string { - if a == INVALID_ATTACK() { + if INVALID_ATTACK(a) { return "invalid attack" } - if a.Range == 1 { - return fmt.Sprintf("%d", a.Damage) + if len(a.attacks) == 1 { + return fmt.Sprintf("%d", a.attacks[0]) } - return fmt.Sprintf("%d range %d", a.Damage, a.Range) + + r := a.MaxRange() + return fmt.Sprintf("%d range %d", a.DamageInRange(r), r) } func parseAttack(attack interface{}) Attack { if damage, ok := attack.(int); ok { - return Attack{damage, 1} + return Attack{[]int{damage}} } attackStr := attack.(string) @@ -46,5 +59,11 @@ func parseAttack(attack interface{}) Attack { log.Fatalf("Attack %s has no valid Range value\n", attackStr) } } - return Attack{a, r} + + attacks := make([]int, 0, r) + for i := 0; i < r; i++ { + attacks = append(attacks, a) + } + + return Attack{attacks} } |
