Example #1
0
// Load returns a skeleton with all loaded information.
func (sav *Save) Load() (s *Skeleton, err error) {
	f, err := os.Open(sav.Path)
	if err != nil {
		return nil, errorsutil.ErrorfColor("%s", err)
	}

	sto := new(Skeleton)
	err = gob.NewDecoder(f).Decode(sto)
	if err != nil {
		return nil, errorsutil.ErrorfColor("decode error: %#v", err)
	}

	return sto, nil
}
Example #2
0
// Save writes the current game session to disk.
func (sav *Save) Save(a area.Area) (err error) {
	sBlob := Skeleton{
		a,
		creature.Hero,
	}
	var buffer bytes.Buffer
	err = gob.NewEncoder(&buffer).Encode(&sBlob)
	if err != nil {
		return errorsutil.ErrorfColor("encode error: %#v", err)
	}

	f, err := os.Create(sav.Path)
	if err != nil {
		return errorsutil.ErrorfColor("%s", err)
	}
	_, err = f.Write(buffer.Bytes())
	if err != nil {
		return errorsutil.ErrorfColor("%s", err)
	}

	return nil
}