diff --git a/index.html b/index.html index 0a58bf0..7d27232 100644 --- a/index.html +++ b/index.html @@ -1213,62 +1213,62 @@ // handles interactions with objects // displays the object's data in an alert function handleObjectInteraction(sprite) { - if (!sprite || !sprite.scenarioData) { - console.warn('Invalid sprite or missing scenario data'); - return; - } - - // Skip range check for inventory items - const isInventoryItem = inventory.items.includes(sprite); - if (!isInventoryItem) { - // Check if player is in range - const dx = player.x - sprite.x; - const dy = player.y - sprite.y; - const distanceSq = dx * dx + dy * dy; - - if (distanceSq > INTERACTION_RANGE_SQ) { + if (!sprite || !sprite.scenarioData) { + console.warn('Invalid sprite or missing scenario data'); return; } - } - - const data = sprite.scenarioData; - let message = `${data.name}\n\n`; - message += `Observations: ${data.observations}\n\n`; - - // Check for locked state in scenarioData - if (data.locked === true) { - console.log('Item is locked:', data); - handleUnlock(sprite, 'item'); - return; - } - - if (data.readable && data.text) { - message += `Text: ${data.text}\n\n`; - } - - // Only handle contents if they exist and haven't been collected yet - if (data.contents && data.contents.length > 0) { - message += `You found the following items:\n`; - data.contents.forEach(item => { - message += `- ${item.name}\n`; - }); - alert(message); - // Add all contents to inventory - data.contents.forEach(item => { - const contentSprite = createInventorySprite({ - ...item, - type: item.type.toLowerCase() - }); - if (contentSprite) { - addToInventory(contentSprite); + // Skip range check for inventory items + const isInventoryItem = inventory.items.includes(sprite); + if (!isInventoryItem) { + // Check if player is in range + const dx = player.x - sprite.x; + const dy = player.y - sprite.y; + const distanceSq = dx * dx + dy * dy; + + if (distanceSq > INTERACTION_RANGE_SQ) { + return; } - }); + } - // Clear contents after adding to inventory - data.contents = []; - return; - } + const data = sprite.scenarioData; + let message = `${data.name}\n\n`; + message += `Observations: ${data.observations}\n\n`; + + // Check for locked state in scenarioData + if (data.locked === true) { + console.log('Item is locked:', data); + handleUnlock(sprite, 'item'); + return; + } + + if (data.readable && data.text) { + message += `Text: ${data.text}\n\n`; + } + + // Only handle contents if they exist and haven't been collected yet + if (data.contents && data.contents.length > 0) { + message += `You found the following items:\n`; + data.contents.forEach(item => { + message += `- ${item.name}\n`; + }); + alert(message); + + // Add all contents to inventory + data.contents.forEach(item => { + const contentSprite = createInventorySprite({ + ...item, + type: item.type.toLowerCase() + }); + if (contentSprite) { + addToInventory(contentSprite); + } + }); + + // Clear contents after adding to inventory + data.contents = []; + return; + } if (data.takeable) { message += `This item can be taken\n\n`;