const HANDSHAKE_SCOPE = ["Room"];
// Based on logs, Ping and most game actions use ["Room", "Quinoa"]
const GAME_SCOPE = ["Room", "Quinoa"];

module.exports = {
    SCOPES: {
        HANDSHAKE: HANDSHAKE_SCOPE,
        GAME: GAME_SCOPE
    },

    TYPES: {
        VOTE: 'VoteForGame',
        SELECT: 'SetSelectedGame',
        PING: 'Ping',
        PONG: 'Pong',
        WELCOME: 'Welcome',
        PARTIAL_STATE: 'PartialState',
        TELEPORT: 'Teleport',
        PLANT: 'PlantSeed',
        HARVEST: 'HarvestCrop',
        SELL: 'SellAllCrops',
        PURCHASE: 'PurchaseSeed'
    },

    createHandshakeMessages: (gameName = 'Quinoa') => [
        {
            scopePath: HANDSHAKE_SCOPE,
            type: 'VoteForGame',
            gameName: gameName
        },
        {
            scopePath: HANDSHAKE_SCOPE,
            type: 'SetSelectedGame',
            gameName: gameName
        }
    ],

    createPing: () => ({
        type: 'Ping',
        id: Date.now(),
        scopePath: GAME_SCOPE
    }),

    createTeleport: (x, y) => ({
        type: 'Teleport',
        position: { x, y },
        scopePath: GAME_SCOPE
    }),

    createPlant: (slot, species) => ({
        type: 'PlantSeed',
        slot: parseInt(slot),
        species: species,
        scopePath: GAME_SCOPE
    }),

    createHarvest: (slot) => ({
        type: 'HarvestCrop',
        slot: parseInt(slot),
        slotsIndex: 0, // Default to 0 as seen in logs
        scopePath: GAME_SCOPE
    }),

    createSellAll: () => ({
        type: 'SellAllCrops',
        scopePath: GAME_SCOPE
    }),

    createPurchase: (species) => ({
        type: 'PurchaseSeed',
        species: species,
        scopePath: GAME_SCOPE
    })
};
