tankstat.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package tankstat
  2. import (
  3. "fmt"
  4. "log"
  5. "wartank/pkg/types"
  6. "wartank/server/serv_bots/warbot/tank/tankstat/static_param"
  7. )
  8. /*
  9. Исходник предоставляет статические параметры танка.
  10. Броня, атака, прочность и т.п.
  11. */
  12. // TankStat -- статические параметры танка
  13. type TankStat struct {
  14. атака types.ИСтатПарам // Сила атаки танка
  15. точность types.ИСтатПарам // Точность танка
  16. прочность types.ИСтатПарам // Броня танка
  17. броня types.ИСтатПарам // Броня танка
  18. power types.ИСтатПарам // Танковая мощь (может не совпадать по сумме, если есть усиление)
  19. усиление types.ИСтатПарам
  20. }
  21. // NewTankStat -- возвращает новый *TankStat
  22. func NewTankStat() (*TankStat, error) {
  23. атака, ош := static_param.НовСтатПарам("атака")
  24. if ош != nil {
  25. return nil, fmt.Errorf("НовТанкСтат(): при создании статы атаки, ош=\n\t%w", ош)
  26. }
  27. точность, ош := static_param.НовСтатПарам("точность")
  28. if ош != nil {
  29. return nil, fmt.Errorf("НовТанкСтат(): при создании статы точности, ош=\n\t%w", ош)
  30. }
  31. прочность, ош := static_param.НовСтатПарам("прочность")
  32. if ош != nil {
  33. return nil, fmt.Errorf("НовТанкСтат(): при создании статы прочности, ош=\n\t%w", ош)
  34. }
  35. броня, ош := static_param.НовСтатПарам("броня")
  36. if ош != nil {
  37. return nil, fmt.Errorf("НовТанкСтат(): при создании статы брони, ош=\n\t%w", ош)
  38. }
  39. мощь, ош := static_param.НовСтатПарам("мощь")
  40. if ош != nil {
  41. return nil, fmt.Errorf("НовТанкСтат(): при создании статы мощи, ош=\n\t%w", ош)
  42. }
  43. усиление, ош := static_param.НовСтатПарам("усиление")
  44. if ош != nil {
  45. return nil, fmt.Errorf("НовТанкСтат(): при создании статы усиления, ош=\n\t%w", ош)
  46. }
  47. сам := &TankStat{
  48. атака: атака,
  49. точность: точность,
  50. прочность: прочность,
  51. броня: броня,
  52. power: мощь,
  53. усиление: усиление,
  54. }
  55. return сам, nil
  56. }
  57. // Атака -- возвращает объект силы атаки
  58. func (сам *TankStat) Атака() types.ИСтатПарам {
  59. return сам.атака
  60. }
  61. // Прочность -- возвращает объект прочности танка
  62. func (сам *TankStat) Прочность() types.ИСтатПарам {
  63. return сам.броня
  64. }
  65. // Точность -- возвращает объект точности танка
  66. func (сам *TankStat) Точность() types.ИСтатПарам {
  67. return сам.точность
  68. }
  69. // Броня -- возвращает объект брони танка
  70. func (сам *TankStat) Броня() types.ИСтатПарам {
  71. return сам.прочность
  72. }
  73. // Мощь -- возвращает объект мощи танка
  74. func (сам *TankStat) Мощь() types.ИСтатПарам {
  75. return сам.power
  76. }
  77. // Форсаж -- возвращает объект форсированного параметра
  78. func (сам *TankStat) Форсаж() types.ИСтатПарам {
  79. return сам.усиление
  80. }
  81. // Форсаж -- возвращает объект форсированного параметра
  82. func (сам *TankStat) ФорсажОбнов(парам string, знач int) {
  83. var ош error
  84. сам.усиление, ош = static_param.НовСтатПарам("force")
  85. if ош != nil {
  86. log.Printf("НовТанкСтат(): при создании статы усиления, ош=\n\t%v\n", ош)
  87. panic("TanStat.ФорсажОбнов()")
  88. }
  89. сам.усиление.Уст(знач)
  90. }