/** * Copyright (c) 2021 Dominic Masters * * This software is released under the MIT License. * https://opensource.org/licenses/MIT */ #pragma once #include "../libs.h" #include "../display/texture.h" #include "../display/primitive.h" #include "../display/tileset.h" #define VN_CHARACTER_BLINK_TIME_RANGE_MAX 6 #define VN_CHARACTER_SIZE 0.5 /** How many quads the VN Character has. Base, Eyes, Mouth and Eyebrows */ #define VN_CHARACTER_QUAD_COUNT 4 /** The Quads */ #define VN_CHARACTER_QUAD_BASE 0 #define VN_CHARACTER_QUAD_EYEBROWS 1 #define VN_CHARACTER_QUAD_EYES 2 #define VN_CHARACTER_QUAD_MOUTH 3 /** How many frames does each mouth set have */ #define VN_CHARACTER_TALKING_FRAME_COUNT 3 #define VN_CHARACTER_EMOTION_BORED 0x00 #define VN_CHARACTER_EMOTION_BORED_SMILING 0x01 #define VN_CHARACTER_EMOTION_BORED_DISAGREE 0x02 #define VN_CHARACTER_EMOTION_BORED_AGREE 0x03 #define VN_CHARACTER_EMOTION_SHORT 0x04 #define VN_CHARACTER_EMOTION_SMUG_SLIGHT 0x05 #define VN_CHARACTER_EMOTION_BORED_ANNOYED 0x06 #define VN_CHARACTER_EMOTION_BORED_PROUD 0x07 #define VN_CHARACTER_EMOTION_BORED_THINKING 0x08 #define VN_CHARACTER_EMOTION_HAPPY_THINKING 0x09 #define VN_CHARACTER_EMOTION_SERIOUS_THINKING 0x0A #define VN_CHARACTER_EMOTION_SMUG_THINKING_SLIGHT 0x0B #define VN_CHARACTER_EMOTION_XXXX_THINKING 0x0C// "concerned thinking" #define VN_CHARACTER_EMOTION_HAPPY_FAKE_THINKING 0x0D #define VN_CHARACTER_EMOTION_XXXX_THINKING2 0x0E// "serious concerned thinking" #define VN_CHARACTER_EMOTION_XXXX_THINKING3 0x0F // "Happy pleased thinking" #define VN_CHARACTER_EMOTION_BORED_LISTENING 0x10 #define VN_CHARACTER_EMOTION_HUMBLED 0x11 #define VN_CHARACTER_EMOTION_CONCERNED_1 0x12 #define VN_CHARACTER_EMOTION_PROUD 0x13 #define VN_CHARACTER_EMOTION_DEADPAN 0x14 #define VN_CHARACTER_EMOTION_SMIRK 0x15 #define VN_CHARACTER_EMOTION_CONCERNED_2 0x16 #define VN_CHARACTER_EMOTION_TEASING 0x17 #define VN_CHARACTER_EMOTION_XXXX_THINKING4 0x18// "concerned thinking lightly" #define VN_CHARACTER_EMOTION_XXXX_THINKING5 0x19// "daydreaming" #define VN_CHARACTER_EMOTION_XXXX_THINKING6 0x1A// "concerned thinking heavy" #define VN_CHARACTER_EMOTION_XXXX_THINKING7 0x1B// "pleasant daydreaming" #define VN_CHARACTER_EMOTION_XXXX_THINKING8 0x1C// not really sure #define VN_CHARACTER_EMOTION_ANIME_MOM 0x1D #define VN_CHARACTER_EMOTION_XXXX_THINKING9 0x1E// not really sure #define VN_CHARACTER_EMOTION_ANIME_MOM_SMUG 0x1F #define VN_CHARACTER_EMOTION_CURIOUS 0x20 #define VN_CHARACTER_EMOTION_HAPPY 0x21 #define VN_CHARACTER_EMOTION_CONCERNED_WORRIED 0x22 #define VN_CHARACTER_EMOTION_HAPPY_PROUD_SLIGHT 0x23 #define VN_CHARACTER_EMOTION_NOT_BELIEVING 0x24//"Mhm, suuure" #define VN_CHARACTER_EMOTION_HAPPY_TIRED 0x25 #define VN_CHARACTER_EMOTION_CONCERNED_SLIGHT 0x26 #define VN_CHARACTER_EMOTION_HAPPY_PROUD 0x27 #define VN_CHARACTER_EMOTION_XXXX_THINKING10 0x28// sort of tsundere #define VN_CHARACTER_EMOTION_XXXX_THINKING11 0x29// "thinking of something nice" #define VN_CHARACTER_EMOTION_XXXX_THINKING12 0x2A// big sister vibes #define VN_CHARACTER_EMOTION_XXXX_THINKING13 0x2B// "vibin" #define VN_CHARACTER_EMOTION_XXXX_THINKING14 0x2C// not really sure #define VN_CHARACTER_EMOTION_XXXX_THINKING15 0x2D// not really sure #define VN_CHARACTER_EMOTION_XXXX_THINKING16 0x2E// not really sure #define VN_CHARACTER_EMOTION_XXXX_THINKING17 0x2F// not really sure #define VN_CHARACTER_EMOTION_CONCERNED 0x30 #define VN_CHARACTER_EMOTION_RELIEVED 0x31 #define VN_CHARACTER_EMOTION_CONCERNED_VERY 0x32 #define VN_CHARACTER_EMOTION_RELIEVED_SMUG 0x33//"slightly smug" #define VN_CHARACTER_EMOTION_CONCERNED_3 0x34// "slightly worried" #define VN_CHARACTER_EMOTION_CONCERNED_4 0x35// "slightly smug" #define VN_CHARACTER_DISAPPOINTED 0x36// "slightly worried" #define VN_CHARACTER_EMOTION_CONCERNED_5 0x37// "slightly smugger" #define VN_CHARACTER_EMOTION_CONCERNED_THINKING 0x38 #define VN_CHARACTER_EMOTION_SMUG_1 0x39 #define VN_CHARACTER_EMOTION_CONCERNED_THINKING_DEEP 0x3A #define VN_CHARACTER_EMOTION_SMUG_2 0x3B #define VN_CHARACTER_EMOTION_XXXX_THINKING18 0x3C// not really sure #define VN_CHARACTER_EMOTION_XXXX_THINKING19 0x3D// not really sure #define VN_CHARACTER_EMOTION_XXXX_THINKING20 0x3E// not really sure #define VN_CHARACTER_EMOTION_XXXX_THINKING21 0x3F// not really sure #define VN_CHARACTER_EMOTION_SERIOUS 0x40 #define VN_CHARACTER_EMOTION_READY 0x41 #define VN_CHARACTER_EMOTION_SERIOUS_ANGRY 0x42 #define VN_CHARACTER_EMOTION_SMUG 0x43 #define VN_CHARACTER_EMOTION_ANGRY 0x44 #define VN_CHARACTER_EMOTION_ANGRY_PROUD 0x45 #define VN_CHARACTER_EMOTION_ANGRY_VERY 0x46 #define VN_CHARACTER_EMOTION_SMUG_VERY 0x47 #define VN_CHARACTER_EMOTION_SERIOUS_THINKING_VERY 0x48 #define VN_CHARACTER_EMOTION_SMUG_THINKING 0x49 #define VN_CHARACTER_EMOTION_ANGRY_THINKING 0x4A #define VN_CHARACTER_EMOTION_SMUG_THINKING_VERY 0x4B #define VN_CHARACTER_EMOTION_XXXX_THINKING22 0x4C// not really sure #define VN_CHARACTER_EMOTION_HAPPY_FAKE_THINKING_ANGRY 0x4D #define VN_CHARACTER_EMOTION_XXXX_THINKING23 0x4E// not really sure #define VN_CHARACTER_EMOTION_BOASTFUL 0x4F typedef struct { float x, y, z; float yaw, pitch, roll; float scaleX, scaleY; bool talking; float blinkStart; uint8_t emotion; primitive_t primitive; texture_t *texture; int32_t baseWidth, baseHeight; int32_t faceX, faceY; int32_t faceWidth, faceHeight; } vncharacter_t;