first steps towards real inventory
This commit is contained in:
parent
fb3279fb13
commit
fc05b00775
3 changed files with 49 additions and 13 deletions
38
src/level/items.ts
Normal file
38
src/level/items.ts
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
import type { BlockType } from './def'
|
||||||
|
|
||||||
|
export type ItemQuality = 'wood' | 'iron' | 'silver' | 'gold' | 'diamond'
|
||||||
|
export type ItemType = 'tool' | 'weapon'
|
||||||
|
|
||||||
|
export interface Item = {
|
||||||
|
name: string
|
||||||
|
type: ItemType
|
||||||
|
icon: string
|
||||||
|
hasQuality: boolean
|
||||||
|
}
|
||||||
|
|
||||||
|
export const items: Item[] = [
|
||||||
|
{ name: 'Shovel', type: 'tool', icon: 'shovel', hasQuality: true },
|
||||||
|
{ name: 'Pick Axe', type: 'tool', icon: 'pick', hasQuality: true },
|
||||||
|
{ name: 'Sword', type: 'weapon', icon: 'sword', hasQuality: true },
|
||||||
|
|
||||||
|
{ name: 'leaves', type: 'block', icon: 'leaves', hasQuality: false },
|
||||||
|
{ name: 'dirt', type: 'block', icon: 'dirt', hasQuality: false },
|
||||||
|
{ name: 'wood', type: 'block', icon: 'wood', hasQuality: false },
|
||||||
|
{ name: 'stone', type: 'block', icon: 'stone', hasQuality: false },
|
||||||
|
|
||||||
|
{ name: 'coal', type: 'ore', icon: 'ore_coal', hasQuality: false },
|
||||||
|
{ name: 'iron', type: 'ore', icon: 'ore_iron', hasQuality: false },
|
||||||
|
{ name: 'silver', type: 'ore', icon: 'ore_silver', hasQuality: false },
|
||||||
|
{ name: 'gold', type: 'ore', icon: 'ore_gold', hasQuality: false },
|
||||||
|
{ name: 'ruby', type: 'ore', icon: 'ore_ruby', hasQuality: false },
|
||||||
|
{ name: 'diamond', type: 'ore', icon: 'ore_diamond', hasQuality: false },
|
||||||
|
{ name: 'emerald', type: 'ore', icon: 'ore_emerald', hasQuality: false },
|
||||||
|
]
|
||||||
|
|
||||||
|
export const damage: Record<ItemQuality, number> = {
|
||||||
|
wood: 1,
|
||||||
|
iron: 2,
|
||||||
|
silver: 3,
|
||||||
|
gold: 5,
|
||||||
|
diamond: 8,
|
||||||
|
}
|
|
@ -1,7 +1,17 @@
|
||||||
import { computed, reactive } from 'vue'
|
import { computed, reactive } from 'vue'
|
||||||
import { RECIPROCAL, STAGE_WIDTH, STAGE_HEIGHT } from '../level/def'
|
import { RECIPROCAL, STAGE_WIDTH, STAGE_HEIGHT } from '../level/def'
|
||||||
|
import type { Item, ItemQuality } from '../level/items'
|
||||||
|
|
||||||
const player: Player = reactive({
|
export interface InventoryItem extends Item {
|
||||||
|
amount: number
|
||||||
|
quality: ItemQuality | null
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface Player extends Moveable {
|
||||||
|
inventory: InventoryItem[]
|
||||||
|
}
|
||||||
|
|
||||||
|
const player = reactive<Player>({
|
||||||
x: Math.round((STAGE_WIDTH + 2) / 2),
|
x: Math.round((STAGE_WIDTH + 2) / 2),
|
||||||
y: Math.round((STAGE_HEIGHT + 2) / 2),
|
y: Math.round((STAGE_HEIGHT + 2) / 2),
|
||||||
lastDir: 0,
|
lastDir: 0,
|
||||||
|
|
12
src/vite-env.d.ts
vendored
12
src/vite-env.d.ts
vendored
|
@ -9,18 +9,6 @@ declare global {
|
||||||
vy: number // velocity on the y-axis
|
vy: number // velocity on the y-axis
|
||||||
}
|
}
|
||||||
|
|
||||||
type InventoryItem = {
|
|
||||||
name: string
|
|
||||||
type: string
|
|
||||||
icon: string
|
|
||||||
amount: number
|
|
||||||
quality?: 'bronze' | 'iron' | 'silver' | 'gold' | 'diamond'
|
|
||||||
}
|
|
||||||
|
|
||||||
interface Player extends Moveable {
|
|
||||||
inventory: InventoryItem[]
|
|
||||||
}
|
|
||||||
|
|
||||||
interface Npc extends Moveable {
|
interface Npc extends Moveable {
|
||||||
hostile: boolean
|
hostile: boolean
|
||||||
inventory: InventoryItem[]
|
inventory: InventoryItem[]
|
||||||
|
|
Loading…
Add table
Reference in a new issue