location.go 686 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package main
  2. import "fmt"
  3. type Location struct {
  4. System, Planet string
  5. node_s, node_p *Node
  6. }
  7. func (l *Location) Type() string {
  8. return "Location"
  9. }
  10. func (l *Location) String() string {
  11. return fmt.Sprintf("%s, %s", l.Planet, l.System)
  12. }
  13. func (l *Location) Parse(node *Node) error {
  14. switch node.Key() {
  15. case "system":
  16. l.System = node.Value()
  17. l.node_s = node
  18. case "planet":
  19. l.Planet = node.Value()
  20. l.node_p = node
  21. }
  22. return nil
  23. }
  24. func (l *Location) Update() error {
  25. if l.node_s == nil || l.node_p == nil {
  26. return fmt.Errorf("location invalidated, system or planet node pointers are nil")
  27. }
  28. l.node_s.SetValue(l.System)
  29. l.node_p.SetValue(l.Planet)
  30. return nil
  31. }