151 lines
4.9 KiB
Dart
151 lines
4.9 KiB
Dart
import '../models/character.dart';
|
|
import '../models/message.dart';
|
|
import '../models/scenario.dart';
|
|
|
|
String _getImg(String keyword) =>
|
|
'https://tse1.mm.bing.net/th?q=${Uri.encodeComponent(keyword)}&w=600&h=900&c=7&rs=1&p=0&dpr=2&pid=1.7&mkt=en-US&adlt=moderate';
|
|
|
|
final List<Message> mockMessages = [
|
|
Message(
|
|
id: '1',
|
|
text: '连接已建立,正在校准生物反馈信号...',
|
|
sender: MessageSender.ai,
|
|
type: MessageType.text,
|
|
timestamp: DateTime.now().subtract(const Duration(minutes: 5)),
|
|
),
|
|
Message(
|
|
id: '2',
|
|
text: '检测到心率略有上升,你需要我的安抚吗?',
|
|
sender: MessageSender.ai,
|
|
type: MessageType.text,
|
|
timestamp: DateTime.now().subtract(const Duration(minutes: 4)),
|
|
),
|
|
];
|
|
|
|
final List<Character> mockCharacters = [
|
|
Character(
|
|
id: 'c1',
|
|
name: 'Eva-09',
|
|
tagline: '私人仿生护理专员',
|
|
avatar: _getImg('anime girl white bikini silver hair gentle portrait masterpiece'),
|
|
description: '专为高压人群设计的仿生人型号,擅长通过精准的触觉反馈缓解神经紧张。',
|
|
tags: ['温顺', '医疗', '治愈'],
|
|
compatibility: 98,
|
|
status: 'online',
|
|
),
|
|
Character(
|
|
id: 'c2',
|
|
name: 'Commander V',
|
|
tagline: '深空舰队指挥官',
|
|
avatar: _getImg('anime girl black bikini military cap domineering expression dark hair'),
|
|
description: '性格强势,喜欢掌控一切。在连接中,你需要完全服从她的指令。',
|
|
tags: ['强势', '指令', '调教'],
|
|
compatibility: 85,
|
|
status: 'online',
|
|
),
|
|
Character(
|
|
id: 'c3',
|
|
name: 'Yuki (故障版)',
|
|
tagline: '觉醒的虚拟偶像',
|
|
avatar: _getImg('anime girl pink bikini cyberpunk neon colorful hair yandere'),
|
|
description: '核心代码出现异常逻辑,表现出极强的占有欲和不可预测的信号波动。',
|
|
tags: ['病娇', '不稳定', '高频'],
|
|
compatibility: 92,
|
|
status: 'busy',
|
|
),
|
|
Character(
|
|
id: 'c4',
|
|
name: 'Secret X',
|
|
tagline: '未知信号源',
|
|
avatar: _getImg('anime girl purple micro bikini mysterious dark glowing eyes sexy'),
|
|
description: '权限不足,请提升会员等级以解码该信号源。',
|
|
tags: ['神秘', '极乐'],
|
|
compatibility: 0,
|
|
status: 'offline',
|
|
isLocked: true,
|
|
),
|
|
];
|
|
|
|
// Scenario cover helper
|
|
String _getCover(String keyword) =>
|
|
'https://tse1.mm.bing.net/th?q=${Uri.encodeComponent(keyword)}&w=400&h=600&c=7&rs=1&p=0&dpr=2&pid=1.7&mkt=en-US&adlt=moderate';
|
|
|
|
// Mock Scenarios for Library
|
|
|
|
final List<Scenario> mockScenarios = [
|
|
Scenario(
|
|
id: '1',
|
|
title: '午夜办公室的加班',
|
|
category: '职场',
|
|
cover: _getCover('anime girl office lady lingerie night city window'),
|
|
duration: '12:30',
|
|
intensity: 'Medium',
|
|
isLocked: false,
|
|
tags: ['沉浸', 'ASMR'],
|
|
),
|
|
Scenario(
|
|
id: '2',
|
|
title: '私人医生的检查',
|
|
category: '角色扮演',
|
|
cover: _getCover('anime nurse girl white bikini hospital room'),
|
|
duration: '18:00',
|
|
intensity: 'High',
|
|
isLocked: true,
|
|
tags: ['强互动', '语音'],
|
|
),
|
|
Scenario(
|
|
id: '3',
|
|
title: '海边度假的偶遇',
|
|
category: '邻家',
|
|
cover: _getCover('anime girl blue bikini running beach ocean sunny'),
|
|
duration: '25:00',
|
|
intensity: 'Low',
|
|
isLocked: false,
|
|
tags: ['纯爱', '剧情'],
|
|
),
|
|
Scenario(
|
|
id: '4',
|
|
title: '赛博仿生人测试',
|
|
category: '科幻',
|
|
cover: _getCover('anime cyborg girl metallic bikini sci-fi lab wires'),
|
|
duration: '10:00',
|
|
intensity: 'Extreme',
|
|
isLocked: true,
|
|
tags: ['硬核', '指令'],
|
|
),
|
|
Scenario(
|
|
id: '5',
|
|
title: '深夜电台主播',
|
|
category: 'ASMR',
|
|
cover: _getCover('anime girl headphones microphone studio night'),
|
|
duration: '15:00',
|
|
intensity: 'Low',
|
|
isLocked: false,
|
|
tags: ['ASMR', '治愈'],
|
|
),
|
|
];
|
|
|
|
// Dialogue script synced with progress (0-100)
|
|
class DialogueLine {
|
|
final double time; // 0-100 progress percentage
|
|
final String text;
|
|
|
|
const DialogueLine({required this.time, required this.text});
|
|
}
|
|
|
|
const List<DialogueLine> dialogueScript = [
|
|
DialogueLine(time: 0, text: '正在建立神经连接...'),
|
|
DialogueLine(time: 5, text: '(检测到心率轻微上升)'),
|
|
DialogueLine(time: 12, text: '"放松,把控制权交给我。"'),
|
|
DialogueLine(time: 20, text: '"很好,保持呼吸频率..."'),
|
|
DialogueLine(time: 28, text: '正在启动触觉反馈模块'),
|
|
DialogueLine(time: 35, text: '"感觉到那个节奏了吗?"'),
|
|
DialogueLine(time: 45, text: '强度正在逐渐增加...'),
|
|
DialogueLine(time: 55, text: '"不要抵抗,顺从它。"'),
|
|
DialogueLine(time: 65, text: '"我会稍微加快一点速度。"'),
|
|
DialogueLine(time: 75, text: '(设备输出功率提升至 80%)'),
|
|
DialogueLine(time: 85, text: '"就是现在..."'),
|
|
DialogueLine(time: 92, text: '"做得很好,指挥官。"'),
|
|
DialogueLine(time: 100, text: '连接结束。'),
|
|
];
|