tins2020/flower.go
Sander Schobers 2413c7d3d4 Added flowers (+ basic simulation).
Added resource loader (load list of textures).
2020-05-09 19:34:43 +02:00

47 lines
1.1 KiB
Go

package tins2020
type Flower struct {
Traits FlowerTraits
}
type FlowerTraits struct {
Spread float32
Life float32
LifeModifier float32
Resistance FlowerResistance
}
func (t *FlowerTraits) UpdateModifier(temp, humid float32) {
mod := float32(1)
cold := temp * 2
mod *= Min32(1, Sqrt32(t.Resistance.Cold*t.Resistance.Cold+cold*cold))
hot := (1 - temp) * 2
mod *= Min32(1, Sqrt32(t.Resistance.Hot*t.Resistance.Hot+hot*hot))
dry := humid * 2
mod *= Min32(1, Sqrt32(t.Resistance.Dry*t.Resistance.Dry+dry*dry))
wet := (1 - humid) * 2
mod *= Min32(1, Sqrt32(t.Resistance.Wet*t.Resistance.Wet+wet*wet))
t.LifeModifier = mod
}
type FlowerResistance struct {
Cold float32 // 0 will die almost instantly, 1 is completely resistant.
Hot float32
Dry float32
Wet float32
}
// NewPoppyTraits creates the traits of a poppy, a very generic flower that thrives in a moderate climate.
func NewPoppyTraits() FlowerTraits {
return FlowerTraits{
Spread: 0.01,
Life: 0.9991,
Resistance: FlowerResistance{
Cold: 0.3,
Hot: 0.3,
Dry: 0.3,
Wet: 0.3,
},
}
}