horsegen: generate skills
This commit is contained in:
133
horsegen/load.go
133
horsegen/load.go
@@ -20,6 +20,9 @@ var characterAffinity3SQL string
|
||||
//go:embed skill-group.sql
|
||||
var skillGroupSQL string
|
||||
|
||||
//go:embed skill.sql
|
||||
var skillSQL string
|
||||
|
||||
type (
|
||||
Character struct{}
|
||||
SkillGroup struct{}
|
||||
@@ -174,3 +177,133 @@ func SkillGroups(ctx context.Context, db *sqlitex.Pool) ([]NamedID[SkillGroup],
|
||||
}
|
||||
return r, nil
|
||||
}
|
||||
|
||||
type Skill struct {
|
||||
ID int
|
||||
Name string
|
||||
Description string
|
||||
GroupID int
|
||||
GroupName string
|
||||
Rarity int
|
||||
GroupRate int
|
||||
GradeValue int
|
||||
WitCheck bool
|
||||
Activations [2]SkillActivation
|
||||
IconID int
|
||||
Index int
|
||||
}
|
||||
|
||||
type SkillActivation struct {
|
||||
Precondition string
|
||||
Condition string
|
||||
Duration float64
|
||||
Cooldown float64
|
||||
Abilities [3]SkillAbility
|
||||
}
|
||||
|
||||
type SkillAbility struct {
|
||||
Type int
|
||||
ValueUsage int
|
||||
Value float64
|
||||
Target int
|
||||
TargetValue int
|
||||
}
|
||||
|
||||
func Skills(ctx context.Context, db *sqlitex.Pool) ([]Skill, error) {
|
||||
conn, err := db.Take(ctx)
|
||||
defer db.Put(conn)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("couldn't get connection for skills: %w", err)
|
||||
}
|
||||
stmt, _, err := conn.PrepareTransient(skillSQL)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("couldn't prepare statement for skills: %w", err)
|
||||
}
|
||||
defer stmt.Finalize()
|
||||
|
||||
var r []Skill
|
||||
for {
|
||||
ok, err := stmt.Step()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error stepping skills: %w", err)
|
||||
}
|
||||
if !ok {
|
||||
break
|
||||
}
|
||||
s := Skill{
|
||||
ID: stmt.ColumnInt(0),
|
||||
Name: stmt.ColumnText(1),
|
||||
Description: stmt.ColumnText(2),
|
||||
GroupID: stmt.ColumnInt(3),
|
||||
GroupName: stmt.ColumnText(4),
|
||||
Rarity: stmt.ColumnInt(5),
|
||||
GroupRate: stmt.ColumnInt(6),
|
||||
GradeValue: stmt.ColumnInt(7),
|
||||
WitCheck: stmt.ColumnInt(8) != 0,
|
||||
Activations: [2]SkillActivation{
|
||||
{
|
||||
Precondition: stmt.ColumnText(9),
|
||||
Condition: stmt.ColumnText(10),
|
||||
Duration: stmt.ColumnFloat(11),
|
||||
Cooldown: stmt.ColumnFloat(12),
|
||||
Abilities: [3]SkillAbility{
|
||||
{
|
||||
Type: stmt.ColumnInt(13),
|
||||
ValueUsage: stmt.ColumnInt(14),
|
||||
Value: stmt.ColumnFloat(15),
|
||||
Target: stmt.ColumnInt(16),
|
||||
TargetValue: stmt.ColumnInt(17),
|
||||
},
|
||||
{
|
||||
Type: stmt.ColumnInt(18),
|
||||
ValueUsage: stmt.ColumnInt(19),
|
||||
Value: stmt.ColumnFloat(20),
|
||||
Target: stmt.ColumnInt(21),
|
||||
TargetValue: stmt.ColumnInt(22),
|
||||
},
|
||||
{
|
||||
Type: stmt.ColumnInt(23),
|
||||
ValueUsage: stmt.ColumnInt(24),
|
||||
Value: stmt.ColumnFloat(25),
|
||||
Target: stmt.ColumnInt(26),
|
||||
TargetValue: stmt.ColumnInt(27),
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
Precondition: stmt.ColumnText(28),
|
||||
Condition: stmt.ColumnText(29),
|
||||
Duration: stmt.ColumnFloat(30),
|
||||
Cooldown: stmt.ColumnFloat(31),
|
||||
Abilities: [3]SkillAbility{
|
||||
{
|
||||
Type: stmt.ColumnInt(32),
|
||||
ValueUsage: stmt.ColumnInt(33),
|
||||
Value: stmt.ColumnFloat(34),
|
||||
Target: stmt.ColumnInt(35),
|
||||
TargetValue: stmt.ColumnInt(36),
|
||||
},
|
||||
{
|
||||
Type: stmt.ColumnInt(37),
|
||||
ValueUsage: stmt.ColumnInt(38),
|
||||
Value: stmt.ColumnFloat(39),
|
||||
Target: stmt.ColumnInt(40),
|
||||
TargetValue: stmt.ColumnInt(41),
|
||||
},
|
||||
{
|
||||
Type: stmt.ColumnInt(42),
|
||||
ValueUsage: stmt.ColumnInt(43),
|
||||
Value: stmt.ColumnFloat(44),
|
||||
Target: stmt.ColumnInt(45),
|
||||
TargetValue: stmt.ColumnInt(46),
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
IconID: stmt.ColumnInt(47),
|
||||
Index: stmt.ColumnInt(48),
|
||||
}
|
||||
r = append(r, s)
|
||||
}
|
||||
return r, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user