70 lines
1.3 KiB
Go
70 lines
1.3 KiB
Go
package classes
|
|
|
|
import (
|
|
"dk/internal/database"
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
type Classes struct {
|
|
ID int
|
|
Name string
|
|
Lore string
|
|
BaseHP int
|
|
BaseMP int
|
|
BaseSTR int
|
|
BaseDEX int
|
|
RateHP int
|
|
RateMP int
|
|
RateSTR int
|
|
RateDEX int
|
|
}
|
|
|
|
func New() *Classes {
|
|
return &Classes{
|
|
BaseHP: 15,
|
|
BaseMP: 10,
|
|
BaseSTR: 1,
|
|
BaseDEX: 1,
|
|
RateHP: 2,
|
|
RateMP: 2,
|
|
RateSTR: 2,
|
|
RateDEX: 2,
|
|
}
|
|
}
|
|
|
|
func (c *Classes) Validate() error {
|
|
if strings.TrimSpace(c.Name) == "" {
|
|
return fmt.Errorf("class name cannot be empty")
|
|
}
|
|
if c.BaseHP < 1 {
|
|
return fmt.Errorf("class base HP must be at least 1")
|
|
}
|
|
if c.BaseMP < 0 {
|
|
return fmt.Errorf("class base MP must be at least 0")
|
|
}
|
|
if c.BaseSTR < 0 {
|
|
return fmt.Errorf("class base strength must be at least 0")
|
|
}
|
|
if c.BaseDEX < 0 {
|
|
return fmt.Errorf("class base dexterity must be at least 0")
|
|
}
|
|
if c.RateHP < 0 {
|
|
return fmt.Errorf("class HP rate must be at least 0")
|
|
}
|
|
if c.RateMP < 0 {
|
|
return fmt.Errorf("class MP rate must be at least 0")
|
|
}
|
|
if c.RateSTR < 0 {
|
|
return fmt.Errorf("class strength rate must be at least 0")
|
|
}
|
|
if c.RateDEX < 0 {
|
|
return fmt.Errorf("class dexterity rate must be at least 0")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (c *Classes) Delete() error {
|
|
return database.Exec("DELETE FROM classes WHERE id = %d", c.ID)
|
|
}
|