package protocol

import (
	"encoding/binary"
	"io"
)

type MsgGCSetItemPosition struct {
	AssetId, Position uint64
}

func (m *MsgGCSetItemPosition) Serialize(w io.Writer) error {
	return binary.Write(w, binary.LittleEndian, m)
}

type MsgGCCraft struct {
	Recipe   int16 // -2 = wildcard
	numItems int16
	Items    []uint64
}

func (m *MsgGCCraft) Serialize(w io.Writer) error {
	m.numItems = int16(len(m.Items))
	return binary.Write(w, binary.LittleEndian, m)
}

type MsgGCDeleteItem struct {
	ItemId uint64
}

func (m *MsgGCDeleteItem) Serialize(w io.Writer) error {
	return binary.Write(w, binary.LittleEndian, m.ItemId)
}

type MsgGCNameItem struct {
	Tool, Target uint64
	Name         string
}

func (m *MsgGCNameItem) Serialize(w io.Writer) error {
	err := binary.Write(w, binary.LittleEndian, m.Tool)
	if err != nil {
		return err
	}
	err = binary.Write(w, binary.LittleEndian, m.Target)
	if err != nil {
		return err
	}
	_, err = w.Write([]byte(m.Name))
	return err
}