Aller au contenu

Inventaire

Anton
  1. load.js
    const PNG = [
    'apple',
    'pineapple',
    'watermelon',
    'grape',
    'grass',
    ];
  2. load.js
    const MP3 = [
    'score',
    'wooosh',
    'off',
    ];
  3. config.js
    const TILE_CONFIG = {
    // pastèque
    q: () => [
    sprite('watermelon'),
    collectible({
    goesToInventory: true,
    type: 'watermelon',
    }),
    area({ isSensor: true }),
    respawn(),
    anchor('center'),
    pos(32, 32),
    ],
    // pomme
    p: () => [
    sprite('apple'),
    collectible({
    goesToInventory: true,
    type: 'apple',
    }),
    area({ isSensor: true }),
    respawn(),
    anchor('center'),
    pos(32, 32),
    ],
    // raisins
    r: () => [
    sprite('grape'),
    collectible({
    goesToInventory: true,
    type: 'grape',
    }),
    area({ isSensor: true }),
    respawn(),
    anchor('center'),
    pos(32, 32),
    ],
    // ananas
    n: () => [
    sprite('pineapple'),
    collectible({
    goesToInventory: true,
    type: 'pineapple',
    }),
    area({ isSensor: true }),
    respawn(),
    anchor('center'),
    pos(32, 32),
    ],
    // player
    '#': () => [
    sprite('bean'),
    platformerController(),
    jumpController(),
    sleep(),
    alive(),
    opacity(),
    scale(),
    health(1, 4),
    area(),
    body(),
    respawn(),
    falling(),
    rotate(),
    pos(0, -20),
    anchor('center'),
    'player',
    ],
    // block
    '=': () => [
    sprite('grass-tileset'),
    offscreen({ hide: true }),
    tile({ isObstacle: true }),
    autoTiling(),
    area(),
    body({ isStatic: true }),
    ],
    };
  4. config.js
    // player
    '#': () => [
    inventory(),
    sprite('bean'),
    platformerController(),
    jumpController(),
    sleep(),
    alive(),
    opacity(),
    scale(),
    health(1, 4),
    area(),
    body(),
    respawn(),
    falling(),
    rotate(),
    pos(0, -20),
    anchor('center'),
    'player',
    ],
  5. game.js
    function events() {
    return {
    add() {
    on('disapear', 'collectible', (obj) => splashFX(obj.pos, { offset: vec2(0, -20) }))
    on('disapear', 'collectible', () => play('score'))
    // personnages
    on('respawn', 'alive', (obj) => (obj.flipY = false));
    on('hurt', 'alive', (obj) => {
    play('hit');
    colorShiftFx(obj, { color: 'ff9b9b' });
    });
    on('death', 'alive', (obj) => {
    obj.flipY = true;
    wait(0.2, () => {
    if (!obj.isAlive) {
    obj.hidden = true;
    obj.collisionIgnore = ['*'];
    obj.isStatic = true;
    }
    });
    });
    // joueur
    on('respawn', 'player', (obj) => obj.play('idle'));
    on('sleep', 'player', (obj) => obj.play('sleep'));
    on('awake', 'player', (obj) => obj.play('idle'));
    on('jump', 'player', (obj) => {
    play('wooosh');
    obj.play('jump', {
    speed: 4,
    onEnd: () => obj.play('idle'),
    });
    });
    on('drop', 'player', (obj) => {
    play('off');
    obj.play('worry');
    });
    on('hurt', 'player', (obj) => {
    obj.play('worry', {
    speed: 2,
    onEnd: () => obj.play('idle'),
    });
    });
    },
    };
    }
  6. level.js
    const LEVELS = [
    {
    map: `
    p p
    ===
    = q
    r r ===
    ===
    n
    ===
    #
    ======
    `,
    },
    ]
collectible()
example
config.js
collectible({
tag: 'player',
offset: vec2(0, -20),
type: 'item',
goesToInventory: false,
autoDestroy: true,
interactToPick: false
}),
inventory()
example
config.js
inventory({
giveKey: 'space',
payDistance: 200,
deleteOnRespawn: true,
numbers: false,
itemSize: 40,
speakHeight: 60,
speakPadding: 4,
stackMargin: 20,
margin: 10,
updateDelay: 0.2,
displayDelay: 4,
textSize: 40,
textOffset: vec2(10, 34)
}),