@ganziliang/desktop-pet 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json ADDED
@@ -0,0 +1,58 @@
1
+ {
2
+ "name": "@ganziliang/desktop-pet",
3
+ "version": "0.1.0",
4
+ "description": "桌面动漫角色小控件:透明置顶窗 + 像素级命中测试 + 鼠标交互 + 本地 HTTP 消息接口(Electron 桌宠)",
5
+ "main": "main.js",
6
+ "bin": {
7
+ "desktop-pet": "bin/desktop-pet.js"
8
+ },
9
+ "files": [
10
+ "bin/",
11
+ "main.js",
12
+ "preload.js",
13
+ "renderer/",
14
+ "assets/",
15
+ "!assets/source/",
16
+ "!assets/character_green*.png",
17
+ "!assets/_snapshot.png",
18
+ "!assets/*-preview.png",
19
+ "!assets/pet-*-f[0-9].png",
20
+ "scripts/",
21
+ "!scripts/__pycache__/",
22
+ "examples/",
23
+ "README.md"
24
+ ],
25
+ "scripts": {
26
+ "start": "electron .",
27
+ "snapshot": "electron . --snapshot"
28
+ },
29
+ "keywords": [
30
+ "electron",
31
+ "desktop-pet",
32
+ "desktop-companion",
33
+ "桌宠",
34
+ "透明窗口",
35
+ "tray"
36
+ ],
37
+ "author": "ganziliang",
38
+ "license": "MIT",
39
+ "homepage": "https://gitee.com/zilianggan/ai_work/tree/master/desktop-pet",
40
+ "repository": {
41
+ "type": "git",
42
+ "url": "git+https://gitee.com/zilianggan/ai_work.git",
43
+ "directory": "desktop-pet"
44
+ },
45
+ "bugs": {
46
+ "url": "https://gitee.com/zilianggan/ai_work/issues"
47
+ },
48
+ "publishConfig": {
49
+ "access": "public",
50
+ "registry": "https://registry.npmjs.org/"
51
+ },
52
+ "engines": {
53
+ "node": ">=18"
54
+ },
55
+ "dependencies": {
56
+ "electron": "^44.4.2"
57
+ }
58
+ }
package/preload.js ADDED
@@ -0,0 +1,29 @@
1
+ 'use strict';
2
+
3
+ const { contextBridge, ipcRenderer } = require('electron');
4
+
5
+ contextBridge.exposeInMainWorld('pet', {
6
+ getConfig: () => ipcRenderer.invoke('pet:get-config'),
7
+ dragStart: () => ipcRenderer.send('pet:drag-start'),
8
+ dragMove: () => ipcRenderer.send('pet:drag-move'),
9
+ dragEnd: () => ipcRenderer.send('pet:drag-end'),
10
+ contextMenu: () => ipcRenderer.send('pet:context-menu'),
11
+ setInteractive: (interactive) => ipcRenderer.send('pet:set-interactive', interactive),
12
+ setScale: (scale) => ipcRenderer.send('pet:set-scale', scale),
13
+ quit: () => ipcRenderer.send('pet:quit'),
14
+ onSay: (cb) => ipcRenderer.on('pet:say', (_e, payload) => cb(payload)),
15
+ onAction: (cb) => ipcRenderer.on('pet:action', (_e, payload) => cb(payload)),
16
+ onScale: (cb) => ipcRenderer.on('pet:scale', (_e, scale) => cb(scale)),
17
+ onDragging: (cb) => ipcRenderer.on('pet:dragging', (_e, dragging) => cb(dragging)),
18
+ onPollHit: (cb) => ipcRenderer.on('pet:poll-hit', (_e, point) => cb(point)),
19
+ // 自动活动:主进程算轨迹推窗口,渲染层只播动画
20
+ roam: (mode) => ipcRenderer.invoke('pet:roam', { mode }),
21
+ haltRoam: () => ipcRenderer.send('pet:halt-roam'),
22
+ // 觉醒演出:放大窗口 / 还原窗口。返回生效的 bounds,渲染层照它算角色缩放
23
+ awakenOpen: () => ipcRenderer.invoke('pet:awaken-open'),
24
+ awakenClose: () => ipcRenderer.send('pet:awaken-close'),
25
+ onLocoEnd: (cb) => ipcRenderer.on('pet:loco-end', (_e, payload) => cb(payload)),
26
+ onAuto: (cb) => ipcRenderer.on('pet:auto', (_e, payload) => cb(payload)),
27
+ onDemo: (cb) => ipcRenderer.on('pet:demo', (_e, payload) => cb(payload)),
28
+ debug: (msg) => ipcRenderer.send('pet:debug', msg),
29
+ });