view-mate: болванка + концепт + эскизы + сценарии (единый коммит, история очищена от hprof/build)
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
plugins {
|
||||
alias(libs.plugins.kotlin.multiplatform)
|
||||
alias(libs.plugins.android.library)
|
||||
alias(libs.plugins.kotlinx.serialization)
|
||||
}
|
||||
|
||||
kotlin {
|
||||
androidTarget {
|
||||
compilerOptions {
|
||||
jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17)
|
||||
}
|
||||
}
|
||||
jvm()
|
||||
|
||||
sourceSets {
|
||||
commonMain.dependencies {
|
||||
implementation(libs.kotlinx.serialization.json)
|
||||
implementation(libs.kotlinx.coroutines.core)
|
||||
}
|
||||
androidMain.dependencies {
|
||||
implementation(libs.kotlinx.coroutines.android)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
android {
|
||||
namespace = "pw.binom.viewmate.core"
|
||||
compileSdk = 35
|
||||
defaultConfig {
|
||||
minSdk = 26
|
||||
}
|
||||
compileOptions {
|
||||
sourceCompatibility = JavaVersion.VERSION_17
|
||||
targetCompatibility = JavaVersion.VERSION_17
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package pw.binom.viewmate.core
|
||||
|
||||
import kotlinx.serialization.Serializable
|
||||
|
||||
/**
|
||||
* Режимы очков. Переключаются с телефона (и жестом на очках).
|
||||
* Каталог контента — НЕ режим: он живёт на телефоне (и в будущем —
|
||||
* у голосового ассистента), а очки только показывают выбранное.
|
||||
*/
|
||||
@Serializable
|
||||
enum class GlassesMode {
|
||||
/** Кино: видео на очках (ExoPlayer), звук на телефоне. */
|
||||
MOVIE,
|
||||
|
||||
/** Общение с ассистентом (Hermes): выбор сессии + разговор. */
|
||||
CHAT,
|
||||
}
|
||||
|
||||
/**
|
||||
* Состояния режима кино. BROWSING здесь нет — выбор контента
|
||||
* происходит на телефоне (каталог Jellyfin), очки получают готовое.
|
||||
*/
|
||||
@Serializable
|
||||
enum class MovieState {
|
||||
PLAYING,
|
||||
PAUSED,
|
||||
}
|
||||
|
||||
/**
|
||||
* Состояния режима общения.
|
||||
*/
|
||||
@Serializable
|
||||
enum class ChatState {
|
||||
/** Выбор сессии (список сессий Hermes). */
|
||||
SESSION_SELECT,
|
||||
|
||||
/** Разговор в активной сессии. */
|
||||
TALKING,
|
||||
}
|
||||
|
||||
/** Команды управления медиа — единые для очков и телефона. */
|
||||
@Serializable
|
||||
enum class MediaCommand {
|
||||
PLAY,
|
||||
PAUSE,
|
||||
TOGGLE,
|
||||
SEEK_FORWARD,
|
||||
SEEK_BACKWARD,
|
||||
NEXT_AUDIO,
|
||||
PREV_AUDIO,
|
||||
CLOSE,
|
||||
}
|
||||
|
||||
/** Состояние воспроизведения (синхронизация очки ↔ телефон). */
|
||||
@Serializable
|
||||
data class PlaybackState(
|
||||
val itemId: String? = null,
|
||||
val positionMs: Long = 0,
|
||||
val durationMs: Long = 0,
|
||||
val audioIndex: Int = 0,
|
||||
val playing: Boolean = false,
|
||||
)
|
||||
Reference in New Issue
Block a user