package game import ( "fmt" "log" "time" "github.com/mdiluz/rove/pkg/objects" "github.com/mdiluz/rove/pkg/vector" ) // RoverLogEntry describes a single log entry for the rover type RoverLogEntry struct { // Time is the timestamp of the entry Time time.Time `json:"time"` // Text contains the information in this log entry Text string `json:"text"` } // Rover describes a single rover in the world type Rover struct { // Unique name of this rover Name string `json:"name"` // Pos represents where this rover is in the world Pos vector.Vector `json:"pos"` // Range represents the distance the unit's radar can see Range int `json:"range"` // Inventory represents any items the rover is carrying Inventory []objects.Object `json:"inventory"` // Capacity is the maximum number of inventory items Capacity int `json:"capacity"` // Integrity represents current rover health Integrity int `json:"integrity"` // MaximumIntegrity is the full integrity of the rover MaximumIntegrity int `json:"maximum-integrity"` // Charge is the amount of energy the rover has Charge int `json:"charge"` // MaximumCharge is the maximum charge able to be stored MaximumCharge int `json:"maximum-Charge"` // Logs Stores log of information Logs []RoverLogEntry `json:"logs"` } // AddLogEntryf adds an entry to the rovers log func (r *Rover) AddLogEntryf(format string, args ...interface{}) { text := fmt.Sprintf(format, args...) log.Printf("%s log entry: %s", r.Name, text) r.Logs = append(r.Logs, RoverLogEntry{ Time: time.Now(), Text: text, }, ) }