last_light/game/model/rpg_entity.go

117 lines
2.6 KiB
Go
Raw Normal View History

2024-06-06 23:17:22 +03:00
package model
// import "slices"
// type RPGEntity interface {
// BaseStat(stat Stat) int
// SetBaseStat(stat Stat, value int)
// CollectModifiersForStat(stat Stat) []StatModifier
// AddStatModifier(modifier StatModifier)
// RemoveStatModifier(id StatModifierId)
// IsDead() bool
// CurrentHealth() int
// Heal(health int)
// Damage(damage int)
// CalculateAttack(other RPGEntity) (hit bool, precisionRoll, evasionRoll int, damage int, damageType DamageType)
// }
// type BasicRPGEntity struct {
// stats map[Stat]int
// statModifiers map[Stat][]StatModifier
// currentHealth int
// }
// func CreateBasicRPGEntity(baseStats map[Stat]int, statModifiers map[Stat][]StatModifier) *BasicRPGEntity {
// ent := &BasicRPGEntity{
// stats: baseStats,
// statModifiers: statModifiers,
// }
// ent.currentHealth = BaseMaxHealth(ent)
// return ent
// }
// func (brpg *BasicRPGEntity) BaseStat(stat Stat) int {
// return brpg.stats[stat]
// }
// func (brpg *BasicRPGEntity) SetBaseStat(stat Stat, value int) {
// brpg.stats[stat] = value
// }
// func (brpg *BasicRPGEntity) CollectModifiersForStat(stat Stat) []StatModifier {
// modifiers := brpg.statModifiers[stat]
// if modifiers == nil {
// return []StatModifier{}
// }
// return modifiers
// }
// func (brpg *BasicRPGEntity) AddStatModifier(modifier StatModifier) {
// existing := brpg.statModifiers[modifier.Stat]
// if existing == nil {
// existing = make([]StatModifier, 0)
// }
// existing = append(existing, modifier)
// brpg.statModifiers[modifier.Stat] = existing
// }
// func (brpg *BasicRPGEntity) RemoveStatModifier(id StatModifierId) {
// for k, v := range brpg.statModifiers {
// for i, sm := range v {
// if sm.Id == id {
// brpg.statModifiers[k] = slices.Delete(v, i, i+1)
// }
// }
// }
// }
// func (brpg *BasicRPGEntity) CurrentHealth() int {
// return brpg.currentHealth
// }
// func (brpg *BasicRPGEntity) IsDead() bool {
// return brpg.CurrentHealth() <= 0
// }
// func (brpg *BasicRPGEntity) Heal(health int) {
// if brpg.IsDead() {
// return
// }
// maxHealth := BaseMaxHealth(brpg)
// if brpg.currentHealth+health > maxHealth {
// brpg.currentHealth = maxHealth
// return
// }
// brpg.currentHealth += health
// }
// func (brpg *BasicRPGEntity) Damage(damage int) {
// if brpg.currentHealth-damage < 0 {
// brpg.currentHealth = 0
// return
// }
// brpg.currentHealth -= damage
// }
// func (brpg *BasicRPGEntity) CalculateAttack(other RPGEntity) (hit bool, precisionRoll, evasionRoll int, damage int, damageType DamageType) {
// return UnarmedAttack(brpg, other)
// }