This repository has been archived on 2022-05-21. You can view files and clone it, but cannot push or open issues or pull requests.
LEFTONE/core/loplayer/entity.h
falsycat 84c3a02b9a [RELEASE] u22-v03
This version is submitted to U22 breau.
2020-09-14 00:00:00 +00:00

94 lines
1.9 KiB
C

#pragma once
#include <stdbool.h>
#include <msgpack.h>
#include "util/math/vector.h"
#include "core/locommon/ticker.h"
#include "core/loentity/character.h"
#include "core/loentity/store.h"
#include "core/loresource/sound.h"
#include "core/loshader/character.h"
#include "./event.h"
#include "./status.h"
typedef struct {
loentity_character_t super;
/* injected deps */
const locommon_ticker_t* ticker;
loresource_sound_t* sound;
loshader_character_drawer_t* drawer;
loentity_store_t* entities;
const loplayer_event_t* event;
loplayer_status_t* status;
/* read-only mutable params */
float direction;
/* public params */
vec2_t movement;
vec2_t knockback;
float gravity;
/* temporary cache for update */
bool on_ground;
vec2_t last_velocity;
/* temporary cache for draw */
struct {
loshader_character_motion_id_t from;
loshader_character_motion_id_t to;
float time;
} motion;
} loplayer_entity_t;
void
loplayer_entity_initialize(
loplayer_entity_t* player,
loentity_id_t id,
loresource_sound_t* sound,
loshader_character_drawer_t* drawer,
const locommon_ticker_t* ticker,
loentity_store_t* entities,
const loplayer_event_t* event,
loplayer_status_t* status
);
void
loplayer_entity_deinitialize(
loplayer_entity_t* player
);
void
loplayer_entity_move(
loplayer_entity_t* player,
const locommon_position_t* pos
);
void
loplayer_entity_aim(
loplayer_entity_t* player,
const locommon_position_t* pos
);
bool
loplayer_entity_affect_bullet(
loplayer_entity_t* player
);
void
loplayer_entity_pack(
const loplayer_entity_t* player,
msgpack_packer* packer
);
bool
loplayer_entity_unpack(
loplayer_entity_t* player,
const msgpack_object* obj
);