Skip to content

Commit

Permalink
fix: 记录了当前模型的索引值, 修复了切换模型后刷新还是从第一个模型开始展示
Browse files Browse the repository at this point in the history
  • Loading branch information
hacxy committed Mar 21, 2024
1 parent e9828b8 commit 34d83fc
Show file tree
Hide file tree
Showing 7 changed files with 78 additions and 19 deletions.
23 changes: 13 additions & 10 deletions packages/oh-my-live2d/src/modules/oml2d.ts
Expand Up @@ -4,12 +4,14 @@ import { Menus } from './menus.js';
import { Models } from './models.js';
import { Stage } from './stage.js';
import { StatusBar } from './status-bar.js';
import { Store } from './store.js';
import { Tips } from './tips.js';
import { WindowSizeType } from '../constants/index.js';
import type { DefaultOptions, PixiLive2dDisplayModule, PixiModule } from '../types/index.js';
import { checkVersion, getWindowSizeType, onChangeWindowSize, printProjectInfo } from '../utils/index.js';

export class OhMyLive2D {
private store: Store;
private globalStyle: GlobalStyle;
private stage: Stage;
private statusBar: StatusBar;
Expand All @@ -29,10 +31,10 @@ export class OhMyLive2D {
this.statusBar = new StatusBar(options);
this.tips = new Tips(options); // 提示框
this.menus = new Menus(options); // 菜单
this.models = new Models(options, PixiLive2dDisplay);
this.models = new Models(options, this.PixiLive2dDisplay);
this.application = new Application(this.PIXI);

this.modelIndex = 0;
this.store = new Store();
this.modelIndex = this.store.getModelCurrentIndex(this.options.models);
}

/**
Expand All @@ -46,6 +48,7 @@ export class OhMyLive2D {
this.currentModelIndex = index;
this.stage.modelIndex = index;
this.models.modelIndex = index;
this.store.updateModelInfo(this.options.models, index);
}

private get modelIndex(): number {
Expand Down Expand Up @@ -174,7 +177,7 @@ export class OhMyLive2D {
}

// 切换状态. 休息/活动
private switchStatus(): void {
switchStatus(): void {
void this.stage.slideOut();
this.tips.clear();

Expand Down Expand Up @@ -230,12 +233,12 @@ export class OhMyLive2D {
*/
private registerModelEvent(): void {
this.models.onHit();
}

// this.models.model?.focus
// window.document.addEventListener('touchend', (e) => {
// console.log(e);
// console.log('ssssssssssss');
// // this.models.model?.focus(0, 0);
// });
/**
* 主动提示消息
*/
tipsMessage(message: string, duration?: number, priority?: number): void {
this.tips.notification(message, duration, priority);
}
}
38 changes: 38 additions & 0 deletions packages/oh-my-live2d/src/modules/store.ts
@@ -0,0 +1,38 @@
import { StoreModelInfo } from '../types/common.js';
import { ModelOptions } from '../types/model.js';

export class Store {
setModelInfo(value: StoreModelInfo): void {
const finalValue = JSON.stringify(value);

localStorage.setItem('OML2D_MODEL_INFO', finalValue);
}

getModuleInfo(modelOptions: ModelOptions[]): StoreModelInfo {
const key = this.getModelDataKey(modelOptions);

const value = JSON.parse(localStorage.getItem('OML2D_MODEL_INFO') as string) as StoreModelInfo;

if (value?.key === key) {
return value;
}
}

getModelDataKey(modelOptions: ModelOptions[]): string {
const keys = modelOptions?.map((item: ModelOptions): string => {
return item.path;
});

return keys.join();
}

updateModelInfo(modelOptions: ModelOptions[], currentIndex: number): void {
const key = this.getModelDataKey(modelOptions);

this.setModelInfo({ key, currentIndex });
}

getModelCurrentIndex(modelOptions: ModelOptions[]): number {
return this.getModuleInfo(modelOptions)?.currentIndex || 0;
}
}
2 changes: 1 addition & 1 deletion packages/oh-my-live2d/src/modules/tips.ts
Expand Up @@ -28,7 +28,7 @@ export class Tips {
this.idlePlayer = this.createIdleMessagePlayer();
}

get tipsOptions(): DefaultTipsOptions {
private get tipsOptions(): DefaultTipsOptions {
return this.options.tips;
}

Expand Down
2 changes: 2 additions & 0 deletions packages/oh-my-live2d/src/types/common.ts
Expand Up @@ -43,3 +43,5 @@ export type LoadOml2dSDK = (
PixiLive2dDisplay: PixiLive2dDisplayModule;
}>;
export type OML2D = Omit<OhMyLive2D, 'unMount' | 'initialize'>;

export type StoreModelInfo = { key: string; currentIndex: number } | undefined;
2 changes: 1 addition & 1 deletion packages/vite-plugin/package.json
@@ -1,5 +1,5 @@
{
"name": "vite-plugin-oml2d",
"name": "vite-plugin-oh-my-live2d",
"version": "0.12.0",
"description": "",
"main": "dist/index.js",
Expand Down
18 changes: 17 additions & 1 deletion tests/vite-app/index.html
Expand Up @@ -8,13 +8,29 @@
</head>
<body>
<div id="app"></div>

<!-- <script src="https://cdn.jsdelivr.net/npm/oh-my-live2d/dist/index.min.js"></script>
<script>
OML2D.loadOml2d({
models: [
{
path: 'https://cdn.jsdelivr.net/gh/Eikanya/Live2d-model/Live2D/Senko_Normals/senko.model3.json',
scale: 0.12,
position: [-50, 50],
stageStyle: {
width: 320
}
}
]
});
</script> -->
<!-- <script src="complete.js" async></script> -->

<script src="./src/main.ts" type="module" async></script>
<!-- <script src="index.min.js"></script> -->

<!-- <script>
OML2D.loadOml2d({
models: [
Expand Down
12 changes: 6 additions & 6 deletions tests/vite-app/src/main.ts
Expand Up @@ -13,12 +13,12 @@ const foo = async () => {
mobileDisplay: true,
primaryColor: 'pink',
models: [
// {
// path: 'https://registry.npmmirror.com/oml2d-models/latest/files/models/shizuku/shizuku.model.json',
// scale: 0.2,
// motionPreloadStrategy: 'ALL',
// volume: 0
// },
{
path: 'https://registry.npmmirror.com/oml2d-models/latest/files/models/shizuku/shizuku.model.json',
scale: 0.2,
motionPreloadStrategy: 'ALL',
volume: 0
},
{
path: 'https://registry.npmmirror.com/oml2d-models/latest/files/models/Senko_Normals/senko.model3.json',
stageStyle: {},
Expand Down

0 comments on commit 34d83fc

Please sign in to comment.