14 Commits

Author SHA1 Message Date
Vick Scarlet
150c991648 Squashed commit of the following:
commit b421082374
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Fri Dec 31 20:26:20 2021 +0800

    update specialthanks

commit 765a69294b
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Tue Dec 14 19:10:03 2021 +0800

    fix ios goto

commit 8eb8c3ca72
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Tue Dec 14 19:03:37 2021 +0800

    add event grade

commit ab705dd46c
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Tue Dec 14 18:48:42 2021 +0800

    build version

commit a1e4232369
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Tue Dec 14 18:47:05 2021 +0800

    change talent replace before property allocate

commit f4d7b3ae3c
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Tue Dec 14 18:06:18 2021 +0800

    add event grade

commit 0567e40ddc
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Thu Dec 2 21:28:10 2021 +0800

    add particle

commit f17003925e
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Thu Dec 2 20:14:26 2021 +0800

    change ui

commit f8beda1d8f
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Thu Dec 2 19:08:30 2021 +0800

    change popup message ui

commit 915a2aa17d
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Thu Dec 2 18:34:29 2021 +0800

    new build

commit b5edabc104
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Thu Dec 2 18:18:46 2021 +0800

    add hint message

commit a143feadaf
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Thu Dec 2 17:57:31 2021 +0800

    fix copy bug

commit eab1975791
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Thu Dec 2 17:56:28 2021 +0800

    add save/load

commit acf9b92134
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Thu Dec 2 14:35:33 2021 +0800

    add theme switch

commit 488a6054ab
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Wed Dec 1 18:30:36 2021 +0800

    fix uiManager bug

commit f0317eaf14
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Wed Dec 1 16:07:03 2021 +0800

    add message popup

commit eb02d1ee6f
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sun Nov 28 21:22:54 2021 +0800

    change relocation

commit 60503eae47
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sun Nov 28 19:27:16 2021 +0800

    change ScaleButton -> Laya.runtime.ScaleButton

commit 52ef5909c1
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sun Nov 28 19:26:31 2021 +0800

    change ScaleButton -> Laya.runtime.ScaleButton

commit 0284f6aa71
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sun Nov 28 19:05:24 2021 +0800

    config webpack

commit 0e272ffd99
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sun Nov 28 13:17:41 2021 +0800

    add thanks

commit e1e2ab4701
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sun Nov 28 11:40:21 2021 +0800

    add light theme

commit 4f55c00f86
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sat Nov 27 22:27:39 2021 +0800

    fix bug

commit 1d07bdfc46
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sat Nov 27 21:48:47 2021 +0800

    daily update

commit 52d6a0ca8f
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Wed Nov 24 23:10:04 2021 +0800

    daily update

commit f8dd720d4d
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Wed Nov 24 19:08:13 2021 +0800

    daily update

commit d088c1a862
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sun Nov 21 21:41:46 2021 +0800

    remove useless

commit a711fcf3ed
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Tue Nov 16 00:53:05 2021 +0800

    add achievement popup
    add page adaptive
    add talent extends

commit 05e02de3db
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sat Nov 13 01:24:04 2021 +0800

    add github and discord

commit bff0109cc5
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sat Nov 13 00:30:01 2021 +0800

    add trajectory auto mode

commit 54c04f65c2
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Fri Nov 12 19:54:31 2021 +0800

    fix property judge negative number bug

commit 660739530b
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Fri Nov 12 19:48:58 2021 +0800

    update achievement

commit c94e9e7433
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Thu Nov 11 21:37:45 2021 +0800

    update daily

commit c06cd9ea62
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Tue Nov 9 00:08:05 2021 +0800

    update daily

commit 2666983f89
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sun Nov 7 23:00:22 2021 +0800

    add uiManager auto scan and load skin resource

commit 22fa5d755a
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sun Nov 7 22:17:04 2021 +0800

    update framework

commit f40698d63e
Author: Vick Scarlet <scarlet_vick@outlook.com>
Date:   Sun Oct 31 00:13:22 2021 +0800

    add laya
2021-12-31 20:31:26 +08:00
Vick Scarlet
99640a5813 update specialthanks 2021-12-23 07:21:54 +08:00
Vick Scarlet
485c1bb48c Merge branch 'master' of https://github.com/VickScarlet/lifeRestart 2021-12-11 13:00:28 +08:00
Vick Scarlet
5799cf635b update specialthanks 2021-12-11 13:00:20 +08:00
Jiang
066f1fd060 support build docker images (#358)
* add docker build file

* add host to avoid host check error

* Revert "add host to avoid host check error"

This reverts commit a0b8507895.
2021-12-10 17:38:45 +08:00
Vick Scarlet
162eaffd1d update specialthanks 2021-12-04 19:55:48 +08:00
Vick Scarlet
b5a4db5224 new bundle 2021-11-24 11:24:01 +08:00
zhowiny
09b3aeb8c5 fix condition bug 2021-11-24 11:14:58 +08:00
Vick Scarlet
c83ceef3c4 update data 2021-11-24 11:13:05 +08:00
Vick Scarlet
221e5219f0 update specialthanks 2021-11-16 23:50:47 +08:00
Vick Scarlet
145dfe964d update specialthanks 2021-11-10 16:11:26 +08:00
Vick Scarlet
bf9702e3a1 update specialthanks 2021-11-05 02:04:48 +08:00
Vick Scarlet
b3f1e6c9c5 update specialthanks 2021-10-31 22:20:17 +08:00
Vick Scarlet
960f3137c6 add halloween theme 2021-10-31 02:09:55 +08:00
96 changed files with 3520 additions and 141 deletions

2
.dockerignore Normal file
View File

@@ -0,0 +1,2 @@
node_modules
npm-debug.log

15
Dockerfile Normal file
View File

@@ -0,0 +1,15 @@
FROM node:alpine
ENV NPM_CONFIG_LOGLEVEL info
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 8080
CMD ["yarn", "dev"]

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 652 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -0,0 +1 @@
{"textureName":"images/texture/texture_1.png","positionVariance":{"0":0,"1":0,"2":0},"minVerticalVelocity":-100,"minVerticalEndRadian":0,"minStartSize":0,"minStartRadius":0,"minRotateSpeed":0,"minHorizontalVelocity":100,"minHorizontalEndRadian":0,"minEndSize":18.55,"minEndRadius":218.75,"minColor":{"0":0.15,"1":0.92,"2":0.91,"3":0.6000000238418579},"maxVerticalVelocity":100,"maxVerticalEndRadian":0,"maxStartSize":2.04,"maxStartRadius":0,"maxRotateSpeed":0,"maxPartices":400,"maxHorizontalVelocity":100,"maxHorizontalEndRadian":0,"maxEndSize":24.35,"maxEndRadius":84.82,"maxColor":{"0":0.57,"1":1,"2":0,"3":1},"gravity":{"0":0,"1":0,"2":0},"endVelocity":2,"emitterVelocitySensitivity":56.89,"duration":9.52,"colorComponentInter":true,"blendState":0,"ageAddScale":10,"backColor":"#ffffff","textureFileName":"comp\\clip_num.png","textureCount":1,"minHorizontalStartRadian":0,"maxHorizontalStartRadian":0,"minVerticalStartRadian":0,"maxVerticalStartRadian":0,"emitterType":"null","emissionRate":0,"sphereEmitterRadius":1,"sphereEmitterVelocity":0,"sphereEmitterVelocityAddVariance":0,"ringEmitterRadius":30,"ringEmitterVelocity":0,"ringEmitterVelocityAddVariance":0,"ringEmitterUp":2,"minStartColor":{"0":0.5,"1":0.5,"2":0.5,"3":0.2},"maxStartColor":{"0":1,"1":1,"2":1,"3":1},"minEndColor":{"0":0,"1":0,"2":0,"3":0.08},"maxEndColor":{"0":1,"1":1,"2":1,"3":1},"pointEmitterPosition":{"0":0,"1":0,"2":0},"pointEmitterPositionVariance":{"0":0,"1":0,"2":0},"pointEmitterVelocity":{"0":0,"1":0,"2":0},"pointEmitterVelocityAddVariance":{"0":0,"1":0,"2":0},"boxEmitterCenterPosition":{"0":0,"1":0,"2":0},"boxEmitterSize":{"0":0,"1":0,"2":0},"boxEmitterVelocity":{"0":0,"1":0,"2":0},"boxEmitterVelocityAddVariance":{"0":0,"1":0,"2":0},"sphereEmitterCenterPosition":{"0":0,"1":0,"2":0},"ringEmitterCenterPosition":{"0":0,"1":0,"2":0},"useEndRadian":true,"disableColor":false}

View File

@@ -2,7 +2,7 @@
"x":0, "x":0,
"type":"View", "type":"View",
"selectedBox":1, "selectedBox":1,
"selecteID":83, "selecteID":12,
"props":{"y":1218,"x":562,"width":1125,"sceneColor":"#000000","sceneBg":"laya/views/view/CyberTheme/CyberMain.png","runtime":"Laya.runtime.ViewBase","height":2436,"anchorY":0.5,"anchorX":0.5}, "props":{"y":1218,"x":562,"width":1125,"sceneColor":"#000000","sceneBg":"laya/views/view/CyberTheme/CyberMain.png","runtime":"Laya.runtime.ViewBase","height":2436,"anchorY":0.5,"anchorX":0.5},
"nodeParent":-1, "nodeParent":-1,
"label":"View", "label":"View",
@@ -18,14 +18,13 @@
"props":{"var":"imgBg","skin":"images/background/background_1@3x.png","name":"imgBg","centerY":0,"centerX":0}, "props":{"var":"imgBg","skin":"images/background/background_1@3x.png","name":"imgBg","centerY":0,"centerX":0},
"nodeParent":1, "nodeParent":1,
"label":"Image(imgBg)", "label":"Image(imgBg)",
"isOpen":true, "isOpen":false,
"isDirectory":true, "isDirectory":true,
"isAniNode":true, "isAniNode":true,
"hasChild":true, "hasChild":true,
"compId":67, "compId":67,
"child":[ "child":[
{ {
"x":30,
"type":"Animation", "type":"Animation",
"props":{"y":0,"x":0,"width":1125,"source":"view/CyberTheme/animation/jumpBackground.ani","interval":80,"height":2436,"blendMode":"lighter","autoPlay":true,"alpha":0.3}, "props":{"y":0,"x":0,"width":1125,"source":"view/CyberTheme/animation/jumpBackground.ani","interval":80,"height":2436,"blendMode":"lighter","autoPlay":true,"alpha":0.3},
"nodeParent":67, "nodeParent":67,
@@ -131,7 +130,7 @@
{ {
"x":15, "x":15,
"type":"Label", "type":"Label",
"props":{"text":"UI_Cyber_Theme_Art_Design","right":50,"fontSize":48,"font":"方正像素12","color":"#00fffd","centerY":1165,"anchorY":0.5,"anchorX":0.5}, "props":{"text":"UI_Cyber_Theme_Art_Design","right":50,"fontSize":48,"font":"方正像素12","color":"#00fffd","bottom":30,"anchorY":0.5,"anchorX":0.5},
"nodeParent":1, "nodeParent":1,
"label":"Label", "label":"Label",
"isDirectory":false, "isDirectory":false,
@@ -474,14 +473,13 @@
"props":{"y":0,"x":1100,"width":1,"top":0,"right":0,"height":1}, "props":{"y":0,"x":1100,"width":1,"top":0,"right":0,"height":1},
"nodeParent":1, "nodeParent":1,
"label":"Box", "label":"Box",
"isOpen":true, "isOpen":false,
"isDirectory":true, "isDirectory":true,
"isAniNode":true, "isAniNode":true,
"hasChild":true, "hasChild":true,
"compId":84, "compId":84,
"child":[ "child":[
{ {
"x":30,
"type":"Box", "type":"Box",
"props":{"y":200,"x":-200,"width":225,"var":"btnAchievement","runtime":"Laya.runtime.ScaleButton","name":"btnAchievement","height":90,"anchorY":0.5,"anchorX":0.5}, "props":{"y":200,"x":-200,"width":225,"var":"btnAchievement","runtime":"Laya.runtime.ScaleButton","name":"btnAchievement","height":90,"anchorY":0.5,"anchorX":0.5},
"nodeParent":84, "nodeParent":84,
@@ -606,6 +604,96 @@
] ]
}] }]
}] }]
},
{
"x":15,
"type":"Box",
"props":{"right":0,"bottom":0},
"nodeParent":1,
"label":"Box",
"isOpen":true,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":88,
"child":[
{
"x":30,
"type":"Box",
"props":{"y":-300,"x":-100,"width":110,"runtime":"Laya.runtime.ScaleButton","height":110,"anchorY":0.5,"anchorX":0.5},
"nodeParent":88,
"label":"Box",
"isOpen":true,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":90,
"child":[
{
"x":45,
"type":"Box",
"props":{"width":110,"var":"btnSaveLoad","runtime":"Laya.runtime.ColorfulBox","name":"btnSmall","height":110,"centerY":0,"centerX":0,"anchorY":0.5,"anchorX":0.5},
"nodeParent":90,
"label":"Box(btnSaveLoad)",
"isOpen":true,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":91,
"child":[
{
"x":60,
"type":"Image",
"props":{"width":80,"skin":"images/icons/icon_save.png","height":80,"centerY":0,"centerX":0},
"nodeParent":91,
"label":"Image",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":92,
"child":[
]
}]
}]
},
{
"x":30,
"type":"Box",
"props":{"y":-175,"x":-100,"width":110,"runtime":"Laya.runtime.ScaleButton","height":110,"anchorY":0.5,"anchorX":0.5},
"nodeParent":88,
"label":"Box",
"isOpen":true,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":89,
"child":[
{
"x":45,
"type":"Box",
"props":{"width":110,"var":"btnThemes","runtime":"Laya.runtime.ColorfulBox","name":"btnThemes","height":110,"centerY":0,"centerX":0,"anchorY":0.5,"anchorX":0.5},
"nodeParent":89,
"label":"Box(btnThemes)",
"isOpen":false,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":86,
"child":[
{
"type":"Image",
"props":{"width":90,"skin":"images/icons/icon_themes.png","height":90,"centerY":0,"centerX":0},
"nodeParent":86,
"label":"Image",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":87,
"child":[
]
}]
}]
}]
}], }],
"animations":[ "animations":[
{ {

View File

@@ -1,8 +1,8 @@
{ {
"x":0, "x":0,
"type":"View", "type":"View",
"selectedBox":14, "selectedBox":88,
"selecteID":13, "selecteID":153,
"props":{"width":1125,"sceneColor":"#000000","sceneBg":"laya/views/view/CyberTheme/CyberTrajectory.png","runtime":"Laya.runtime.ViewBase","height":2436}, "props":{"width":1125,"sceneColor":"#000000","sceneBg":"laya/views/view/CyberTheme/CyberTrajectory.png","runtime":"Laya.runtime.ViewBase","height":2436},
"nodeParent":-1, "nodeParent":-1,
"label":"View", "label":"View",
@@ -550,14 +550,13 @@
"props":{"right":0,"left":0,"height":1,"bottom":-1}, "props":{"right":0,"left":0,"height":1,"bottom":-1},
"nodeParent":1, "nodeParent":1,
"label":"Box", "label":"Box",
"isOpen":true, "isOpen":false,
"isDirectory":true, "isDirectory":true,
"isAniNode":true, "isAniNode":true,
"hasChild":true, "hasChild":true,
"compId":14, "compId":14,
"child":[ "child":[
{ {
"x":30,
"type":"Button", "type":"Button",
"props":{"y":-155,"width":500,"var":"btnSummary","skin":"images/button/button_main@3x.png","name":"btnSummary","label":"UI_Goto_Summary","centerX":0}, "props":{"y":-155,"width":500,"var":"btnSummary","skin":"images/button/button_main@3x.png","name":"btnSummary","label":"UI_Goto_Summary","centerX":0},
"nodeParent":14, "nodeParent":14,
@@ -569,7 +568,6 @@
"compId":13, "compId":13,
"child":[ "child":[
{ {
"x":45,
"type":"Box", "type":"Box",
"props":{}, "props":{},
"nodeParent":13, "nodeParent":13,
@@ -750,7 +748,6 @@
}] }]
}, },
{ {
"x":45,
"type":"Box", "type":"Box",
"props":{}, "props":{},
"nodeParent":13, "nodeParent":13,
@@ -824,7 +821,6 @@
"$HIDDEN":false "$HIDDEN":false
}, },
{ {
"x":30,
"type":"Box", "type":"Box",
"props":{"y":-155,"var":"boxSpeed","right":100,"name":"boxSpeed","left":100,"height":150,"anchorY":0.5,"anchorX":0.5}, "props":{"y":-155,"var":"boxSpeed","right":100,"name":"boxSpeed","left":100,"height":150,"anchorY":0.5,"anchorX":0.5},
"nodeParent":14, "nodeParent":14,
@@ -836,7 +832,6 @@
"compId":104, "compId":104,
"child":[ "child":[
{ {
"x":45,
"type":"ProgressBar", "type":"ProgressBar",
"props":{"var":"prgSpeed","skin":"images/progress/progress_s.png","right":0,"name":"prgSpeed","left":0,"bottom":0}, "props":{"var":"prgSpeed","skin":"images/progress/progress_s.png","right":0,"name":"prgSpeed","left":0,"bottom":0},
"nodeParent":104, "nodeParent":104,
@@ -849,7 +844,6 @@
] ]
}, },
{ {
"x":45,
"type":"HScrollBar", "type":"HScrollBar",
"props":{"var":"scbSpeed","skin":"images/slider/hslider_s.png","right":0,"name":"scbSpeed","min":0,"max":1000,"left":0,"height":60,"bottom":0}, "props":{"var":"scbSpeed","skin":"images/slider/hslider_s.png","right":0,"name":"scbSpeed","min":0,"max":1000,"left":0,"height":60,"bottom":0},
"nodeParent":104, "nodeParent":104,
@@ -862,7 +856,6 @@
] ]
}, },
{ {
"x":45,
"type":"Label", "type":"Label",
"props":{"text":"UI_Manual","fontSize":50,"font":"方正像素12","color":"#55fffe","bottom":70}, "props":{"text":"UI_Manual","fontSize":50,"font":"方正像素12","color":"#55fffe","bottom":70},
"nodeParent":104, "nodeParent":104,
@@ -875,7 +868,6 @@
] ]
}, },
{ {
"x":45,
"type":"Label", "type":"Label",
"props":{"text":"UI_Auto","right":0,"fontSize":50,"font":"方正像素12","color":"#55fffe","bottom":70}, "props":{"text":"UI_Auto","right":0,"fontSize":50,"font":"方正像素12","color":"#55fffe","bottom":70},
"nodeParent":104, "nodeParent":104,
@@ -934,13 +926,14 @@
"props":{"var":"vboxTrajectory","top":0,"right":40,"name":"vboxTrajectory","left":20}, "props":{"var":"vboxTrajectory","top":0,"right":40,"name":"vboxTrajectory","left":20},
"nodeParent":18, "nodeParent":18,
"label":"VBox(vboxTrajectory)", "label":"VBox(vboxTrajectory)",
"isOpen":false, "isOpen":true,
"isDirectory":true, "isDirectory":true,
"isAniNode":true, "isAniNode":true,
"hasChild":true, "hasChild":true,
"compId":17, "compId":17,
"child":[ "child":[
{ {
"x":60,
"type":"Box", "type":"Box",
"props":{"right":0,"name":"boxTrajectoryItem","left":0}, "props":{"right":0,"name":"boxTrajectoryItem","left":0},
"nodeParent":17, "nodeParent":17,
@@ -952,11 +945,25 @@
"compId":88, "compId":88,
"child":[ "child":[
{ {
"x":75,
"type":"Box",
"props":{"y":0,"width":10,"top":0,"runtime":"Laya.runtime.ColorfulBox","name":"boxGrade","left":0,"height":50},
"nodeParent":88,
"label":"Box(boxGrade)",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":153,
"child":[
]
},
{
"x":75,
"type":"HBox", "type":"HBox",
"props":{"y":0,"x":200,"name":"hboxAge","anchorX":1,"align":"middle"}, "props":{"y":0,"x":220,"name":"hboxAge","anchorX":1,"align":"middle"},
"nodeParent":88, "nodeParent":88,
"label":"HBox(hboxAge)", "label":"HBox(hboxAge)",
"isOpen":true, "isOpen":false,
"isDirectory":true, "isDirectory":true,
"isAniNode":true, "isAniNode":true,
"hasChild":true, "hasChild":true,
@@ -1000,8 +1007,9 @@
}] }]
}, },
{ {
"x":75,
"type":"Label", "type":"Label",
"props":{"wordWrap":true,"text":"你的父母开始辅导你数学和英语,智力+1","right":0,"name":"labContent","left":220,"leading":44,"fontSize":50,"font":"方正像素12","color":"#ffffff"}, "props":{"wordWrap":true,"text":"你的父母开始辅导你数学和英语,智力+1","right":0,"name":"labContent","left":240,"leading":44,"fontSize":50,"font":"方正像素12","color":"#ffffff"},
"nodeParent":88, "nodeParent":88,
"label":"Label(labContent)", "label":"Label(labContent)",
"isDirectory":false, "isDirectory":false,
@@ -1113,6 +1121,32 @@
}] }]
}] }]
}] }]
},
{
"x":15,
"type":"Box",
"props":{"width":10,"var":"boxParticle","name":"boxParticle","height":10,"centerY":0,"centerX":0},
"nodeParent":1,
"label":"Box(boxParticle)",
"isOpen":false,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":152,
"child":[
{
"type":"Particle2D",
"source":"particle/fly.part",
"props":{"y":5,"x":5,"url":"particle/fly.part","autoPlay":true},
"nodeParent":152,
"label":"Particle2D",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":151,
"child":[
]
}]
}], }],
"animations":[ "animations":[
{ {

View File

@@ -1,8 +1,8 @@
{ {
"x":0, "x":0,
"type":"View", "type":"View",
"selectedBox":1, "selectedBox":99,
"selecteID":83, "selecteID":100,
"props":{"y":1218,"x":562,"width":1125,"sceneColor":"#000000","runtime":"Laya.runtime.ViewBase","height":2436,"anchorY":0.5,"anchorX":0.5}, "props":{"y":1218,"x":562,"width":1125,"sceneColor":"#000000","runtime":"Laya.runtime.ViewBase","height":2436,"anchorY":0.5,"anchorX":0.5},
"nodeParent":-1, "nodeParent":-1,
"label":"View", "label":"View",
@@ -15,9 +15,9 @@
{ {
"x":15, "x":15,
"type":"Label", "type":"Label",
"props":{"var":"labTitle","text":"UI_Title_Remake","name":"labTitle","fontSize":130,"font":"SimHei","color":"#ffffff","centerY":-260,"centerX":0,"bold":true,"anchorY":0.5,"anchorX":0.5}, "props":{"text":"UI_Title_Remake","name":"title","fontSize":130,"font":"SimHei","color":"#ffffff","centerY":-260,"centerX":0,"bold":true,"anchorY":0.5,"anchorX":0.5},
"nodeParent":1, "nodeParent":1,
"label":"Label(labTitle)", "label":"Label(title)",
"isDirectory":false, "isDirectory":false,
"isAniNode":true, "isAniNode":true,
"hasChild":false, "hasChild":false,
@@ -28,7 +28,7 @@
{ {
"x":15, "x":15,
"type":"Label", "type":"Label",
"props":{"wordWrap":true,"var":"labSubTitle","text":"UI_Title_Subsequent","right":0,"name":"labSubTitle","left":0,"fontSize":70,"font":"SimHei","color":"#999999","centerY":-120,"anchorY":0.5,"anchorX":0.5,"align":"center"}, "props":{"wordWrap":true,"var":"labSubTitle","text":"UI_Title_Subsequent","right":0,"name":"title","left":0,"fontSize":70,"font":"SimHei","color":"#999999","centerY":-120,"anchorY":0.5,"anchorX":0.5,"align":"center"},
"nodeParent":1, "nodeParent":1,
"label":"Label(labSubTitle)", "label":"Label(labSubTitle)",
"isDirectory":false, "isDirectory":false,
@@ -195,14 +195,13 @@
"props":{"width":160,"left":50,"height":160,"bottom":50}, "props":{"width":160,"left":50,"height":160,"bottom":50},
"nodeParent":1, "nodeParent":1,
"label":"Box", "label":"Box",
"isOpen":true, "isOpen":false,
"isDirectory":true, "isDirectory":true,
"isAniNode":true, "isAniNode":true,
"hasChild":true, "hasChild":true,
"compId":92, "compId":92,
"child":[ "child":[
{ {
"x":30,
"type":"Box", "type":"Box",
"props":{"width":160,"var":"btnDiscord","runtime":"Laya.runtime.ScaleButton","name":"btnDiscord","height":160,"centerY":0,"centerX":0,"anchorY":0.5,"anchorX":0.5}, "props":{"width":160,"var":"btnDiscord","runtime":"Laya.runtime.ScaleButton","name":"btnDiscord","height":160,"centerY":0,"centerX":0,"anchorY":0.5,"anchorX":0.5},
"nodeParent":92, "nodeParent":92,
@@ -226,6 +225,57 @@
] ]
}] }]
}] }]
},
{
"x":15,
"type":"Box",
"props":{"y":2201,"x":1020,"width":110,"var":"btnSaveLoad","runtime":"Laya.runtime.ColorfulBox","right":50,"name":"btnSmall","height":110,"bottom":180,"anchorY":0.5,"anchorX":0.5},
"nodeParent":1,
"label":"Box(btnSaveLoad)",
"isOpen":true,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":99,
"child":[
{
"x":30,
"type":"Image",
"props":{"width":80,"skin":"images/icons/icon_save.png","height":80,"centerY":0,"centerX":0},
"nodeParent":99,
"label":"Image",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":100,
"child":[
]
}]
},
{
"x":15,
"type":"Box",
"props":{"width":110,"var":"btnThemes","runtime":"Laya.runtime.ColorfulBox","right":50,"name":"btnThemes","height":110,"bottom":50,"anchorY":0.5,"anchorX":0.5},
"nodeParent":1,
"label":"Box(btnThemes)",
"isOpen":false,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":96,
"child":[
{
"type":"Image",
"props":{"width":90,"skin":"images/icons/icon_themes.png","height":90,"centerY":0,"centerX":0},
"nodeParent":96,
"label":"Image",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":98,
"child":[
]
}]
}], }],
"animations":[ "animations":[
{ {

View File

@@ -2,7 +2,7 @@
"x":0, "x":0,
"type":"View", "type":"View",
"selectedBox":1, "selectedBox":1,
"selecteID":102, "selecteID":153,
"props":{"width":1125,"sceneColor":"#000000","runtime":"Laya.runtime.ViewBase","height":2436}, "props":{"width":1125,"sceneColor":"#000000","runtime":"Laya.runtime.ViewBase","height":2436},
"nodeParent":-1, "nodeParent":-1,
"label":"View", "label":"View",
@@ -501,6 +501,32 @@
}], }],
"$LOCKED":true, "$LOCKED":true,
"$HIDDEN":false "$HIDDEN":false
},
{
"x":15,
"type":"Box",
"props":{"width":10,"var":"boxParticle","name":"boxParticle","height":10,"centerY":0,"centerX":0},
"nodeParent":1,
"label":"Box(boxParticle)",
"isOpen":false,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":153,
"child":[
{
"type":"Particle2D",
"source":"particle/fly.part",
"props":{"y":5,"x":5,"url":"particle/fly.part","autoPlay":true},
"nodeParent":153,
"label":"Particle2D",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":154,
"child":[
]
}]
}], }],
"animations":[ "animations":[
{ {

View File

@@ -0,0 +1,50 @@
{
"x":0,
"type":"View",
"selectedBox":1,
"selecteID":2,
"props":{"width":1100,"sceneColor":"#000000","mouseThrough":true,"mouseEnabled":false,"height":230},
"nodeParent":-1,
"label":"View",
"isOpen":true,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":1,
"child":[
{
"x":15,
"type":"Box",
"props":{"var":"boxBg","top":10,"runtime":"Laya.runtime.ColorfulBox","right":10,"name":"boxBg","left":10,"bottom":10,"alpha":0.75},
"nodeParent":1,
"label":"Box(boxBg)",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":3,
"child":[
]
},
{
"x":15,
"type":"Label",
"props":{"wordWrap":true,"var":"message","text":"消息","right":50,"name":"message","left":50,"fontSize":60,"font":"SimHei","color":"#ffffff","centerY":0,"align":"center"},
"nodeParent":1,
"label":"Label(message)",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":2,
"child":[
]
}],
"animations":[
{
"nodes":[
],
"name":"ani1",
"id":1,
"frameRate":24,
"action":0
}]
}

251
laya/pages/view/SaveLoad.ui Normal file
View File

@@ -0,0 +1,251 @@
{
"x":0,
"type":"Dialog",
"selectedBox":1,
"selecteID":15,
"props":{"width":645,"sceneColor":"#000000","height":250},
"nodeParent":-1,
"label":"Dialog",
"isOpen":true,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":1,
"child":[
{
"x":15,
"type":"Box",
"props":{"top":0,"right":0,"left":0,"bottom":150},
"nodeParent":1,
"label":"Box",
"isOpen":true,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":15,
"child":[
{
"x":30,
"type":"Box",
"props":{"y":0,"x":0,"width":645,"height":2},
"nodeParent":15,
"label":"Box",
"isOpen":null,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":19,
"child":[
{
"type":"Rect",
"props":{"width":645,"lineWidth":1,"height":2,"fillColor":"#97ffe6"},
"nodeParent":19,
"label":"Rect",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":17,
"child":[
]
}]
},
{
"x":30,
"type":"Box",
"props":{"width":645,"height":2,"centerX":0,"bottom":0},
"nodeParent":15,
"label":"Box",
"isOpen":null,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":20,
"child":[
{
"type":"Rect",
"props":{"width":645,"lineWidth":1,"height":2,"fillColor":"#97ffe6"},
"nodeParent":20,
"label":"Rect",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":21,
"child":[
]
}]
},
{
"x":30,
"type":"Box",
"props":{"width":645,"height":100,"centerY":0,"centerX":0,"alpha":0.2},
"nodeParent":15,
"label":"Box",
"isOpen":true,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":22,
"child":[
{
"x":45,
"type":"Rect",
"props":{"width":645,"lineWidth":1,"height":100,"fillColor":"#000000"},
"nodeParent":22,
"label":"Rect",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":23,
"child":[
]
}]
}]
},
{
"x":15,
"type":"TextInput",
"props":{"wordWrap":false,"var":"input","valign":"middle","top":0,"text":"content","right":0,"overflow":"scroll","left":0,"fontSize":35,"font":"SimHei","color":"#ffffff","bottom":150},
"nodeParent":1,
"label":"TextInput(input)",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":4,
"child":[
]
},
{
"x":15,
"type":"Box",
"props":{"width":120,"var":"btnSave","runtime":"Laya.runtime.ColorfulBox","name":"btnSmall","left":5,"height":120,"bottom":5,"anchorY":0.5,"anchorX":0.5},
"nodeParent":1,
"label":"Box(btnSave)",
"isOpen":false,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":5,
"child":[
{
"type":"Label",
"props":{"text":"UI_Save","name":"label","fontSize":50,"font":"SimHei","color":"#ffffff","centerY":0,"centerX":0,"bold":true,"anchorY":0.5,"anchorX":0.5},
"nodeParent":5,
"label":"Label(label)",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":7,
"child":[
]
}]
},
{
"x":15,
"type":"Box",
"props":{"width":120,"var":"btnLoad","runtime":"Laya.runtime.ColorfulBox","name":"btnSmall","left":130,"height":120,"bottom":5,"anchorY":0.5,"anchorX":0.5},
"nodeParent":1,
"label":"Box(btnLoad)",
"isOpen":false,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":6,
"child":[
{
"type":"Label",
"props":{"text":"UI_Load","name":"label","fontSize":50,"font":"SimHei","color":"#ffffff","centerY":0,"centerX":0,"bold":true,"anchorY":0.5,"anchorX":0.5},
"nodeParent":6,
"label":"Label(label)",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":8,
"child":[
]
}]
},
{
"x":15,
"type":"Box",
"props":{"y":335,"width":120,"var":"btnRead","runtime":"Laya.runtime.ColorfulBox","name":"btnSmall","left":260,"height":120,"bottom":5,"anchorY":0.5,"anchorX":0.5},
"nodeParent":1,
"label":"Box(btnRead)",
"isOpen":false,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":13,
"child":[
{
"type":"Label",
"props":{"text":"UI_Read","name":"label","fontSize":50,"font":"SimHei","color":"#ffffff","centerY":0,"centerX":0,"bold":true,"anchorY":0.5,"anchorX":0.5},
"nodeParent":13,
"label":"Label(label)",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":14,
"child":[
]
}]
},
{
"x":15,
"type":"Box",
"props":{"y":335,"width":120,"var":"btnWrite","runtime":"Laya.runtime.ColorfulBox","name":"btnSmall","left":390,"height":120,"bottom":5,"anchorY":0.5,"anchorX":0.5},
"nodeParent":1,
"label":"Box(btnWrite)",
"isOpen":false,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":11,
"child":[
{
"type":"Label",
"props":{"text":"UI_Write","name":"label","fontSize":50,"font":"SimHei","color":"#ffffff","centerY":0,"centerX":0,"bold":true,"anchorY":0.5,"anchorX":0.5},
"nodeParent":11,
"label":"Label(label)",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":12,
"child":[
]
}]
},
{
"x":15,
"type":"Box",
"props":{"y":10,"x":10,"width":120,"var":"btnClose","runtime":"Laya.runtime.ColorfulBox","right":5,"name":"btnSmall","height":120,"bottom":5,"anchorY":0.5,"anchorX":0.5},
"nodeParent":1,
"label":"Box(btnClose)",
"isOpen":false,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":9,
"child":[
{
"type":"Label",
"props":{"text":"×","name":"label","fontSize":50,"font":"SimHei","color":"#ffffff","centerY":0,"centerX":0,"bold":true,"anchorY":0.5,"anchorX":0.5},
"nodeParent":9,
"label":"Label(label)",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":10,
"child":[
]
}]
}],
"animations":[
{
"nodes":[
],
"name":"ani1",
"id":1,
"frameRate":24,
"action":0
}]
}

141
laya/pages/view/Themes.ui Normal file
View File

@@ -0,0 +1,141 @@
{
"x":0,
"type":"Dialog",
"selectedBox":1,
"selecteID":13,
"props":{"width":350,"sceneColor":"#000000","height":550},
"nodeParent":-1,
"label":"Dialog",
"isOpen":true,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":1,
"child":[
{
"x":15,
"type":"Box",
"props":{"top":20,"right":20,"left":20,"bottom":130},
"nodeParent":1,
"label":"Box",
"isOpen":true,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":6,
"child":[
{
"x":30,
"type":"RadioGroup",
"props":{"var":"radioTheme","name":"radioTheme","height":380,"centerY":0,"centerX":0},
"nodeParent":6,
"label":"RadioGroup(radioTheme)",
"isOpen":true,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":13,
"child":[
{
"x":45,
"type":"Radio",
"props":{"width":300,"top":0,"skin":"images/radio/radio_cyber.png","name":"item0","height":100},
"nodeParent":13,
"label":"Radio(item0)",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":10,
"child":[
]
},
{
"x":45,
"type":"Radio",
"props":{"width":300,"skin":"images/radio/radio_dark.png","name":"item1","height":100,"centerY":0},
"nodeParent":13,
"label":"Radio(item1)",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":11,
"child":[
]
},
{
"x":45,
"type":"Radio",
"props":{"width":300,"skin":"images/radio/radio_light.png","name":"item2","height":100,"bottom":0},
"nodeParent":13,
"label":"Radio(item2)",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":12,
"child":[
]
}]
}]
},
{
"x":15,
"type":"Box",
"props":{"width":90,"var":"btnOK","runtime":"Laya.runtime.ColorfulBox","name":"btnSmall","left":20,"height":90,"bottom":20,"anchorY":0.5,"anchorX":0.5},
"nodeParent":1,
"label":"Box(btnOK)",
"isOpen":true,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":2,
"child":[
{
"x":30,
"type":"Label",
"props":{"text":"√","name":"label","fontSize":50,"font":"SimHei","color":"#ffffff","centerY":0,"centerX":0,"bold":true,"anchorY":0.5,"anchorX":0.5},
"nodeParent":2,
"label":"Label(label)",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":3,
"child":[
]
}]
},
{
"x":15,
"type":"Box",
"props":{"width":90,"var":"btnClose","runtime":"Laya.runtime.ColorfulBox","right":20,"name":"btnSmall","height":90,"bottom":20,"anchorY":0.5,"anchorX":0.5},
"nodeParent":1,
"label":"Box(btnClose)",
"isOpen":true,
"isDirectory":true,
"isAniNode":true,
"hasChild":true,
"compId":14,
"child":[
{
"x":30,
"type":"Label",
"props":{"text":"×","name":"label","fontSize":50,"font":"SimHei","color":"#ffffff","centerY":0,"centerX":0,"bold":true,"anchorY":0.5,"anchorX":0.5},
"nodeParent":14,
"label":"Label(label)",
"isDirectory":false,
"isAniNode":true,
"hasChild":false,
"compId":15,
"child":[
]
}]
}],
"animations":[
{
"nodes":[
],
"name":"ani1",
"id":1,
"frameRate":24,
"action":0
}]
}

View File

@@ -16,7 +16,7 @@
"babel-loader": "^8.2.2", "babel-loader": "^8.2.2",
"core-js": "^3.17.2", "core-js": "^3.17.2",
"html-webpack-plugin": "^5.5.0", "html-webpack-plugin": "^5.5.0",
"v-transform": "^1.0.1", "v-transform": "^1.0.2",
"webpack": "^5.64.4", "webpack": "^5.64.4",
"webpack-cli": "^4.8.0", "webpack-cli": "^4.8.0",
"webpack-dev-server": "^4.1.0" "webpack-dev-server": "^4.1.0"

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
public/chunk/33.6a18b.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
public/chunk/51.b32bb.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
public/chunk/85.ffdbc.js Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -11825,6 +11825,8 @@
"20567*0.01", "20567*0.01",
"11497*0.05", "11497*0.05",
"11498*0.05", "11498*0.05",
"21326",
"21327",
"40065*1000000000000000000", "40065*1000000000000000000",
"40066*100000000000000000", "40066*100000000000000000",
"40067*100000000000000000", "40067*100000000000000000",
@@ -12046,6 +12048,8 @@
"11497*0.05", "11497*0.05",
"11498*0.05", "11498*0.05",
"11499*0.1", "11499*0.1",
"21326",
"21327",
"40065*1000000000000000000", "40065*1000000000000000000",
"40066*100000000000000000", "40066*100000000000000000",
"40067*100000000000000000", "40067*100000000000000000",
@@ -12267,6 +12271,8 @@
"11498*0.05", "11498*0.05",
"11499*0.1", "11499*0.1",
"10426*0.1", "10426*0.1",
"21326",
"21327",
"40065*1000000000000000000", "40065*1000000000000000000",
"40066*100000000000000000", "40066*100000000000000000",
"40067*100000000000000000", "40067*100000000000000000",
@@ -12479,6 +12485,8 @@
"11498*0.05", "11498*0.05",
"11499*0.1", "11499*0.1",
"10426*0.1", "10426*0.1",
"21326",
"21327",
"40065*1000000000000000000", "40065*1000000000000000000",
"40066*100000000000000000", "40066*100000000000000000",
"40067*100000000000000000", "40067*100000000000000000",

File diff suppressed because it is too large Load Diff

View File

@@ -390,8 +390,9 @@
"name": "神丶暴龙战士灬张杨" "name": "神丶暴龙战士灬张杨"
}, },
{ {
"group": 2, "group": 1,
"name": "NovaDNG" "name": "NovaDNG",
"comment": "感谢你们为世界带来一些欢乐"
}, },
{ {
"group": 2, "group": 2,
@@ -2406,6 +2407,67 @@
"group": 2, "group": 2,
"name": "皓月长歌" "name": "皓月长歌"
}, },
{
"group": 2,
"name": "逸云"
},
{
"group": 2,
"name": "那么可爱当然是__",
"color": "#ADFF2F"
},
{
"group": 2,
"name": "嘉然我真的好喜欢你啊"
},
{
"group": 2,
"name": "楪之舞"
},
{
"group": 2,
"name": "山中迷路的小勘"
},
{
"group": 2,
"name": "月幵大fw"
},
{
"group": 2,
"name": "樱saber与魔人archer"
},
{
"group": 2,
"name": "路痴"
},
{
"group": 2,
"name": "拓舟"
},
{
"group": 2,
"name": "又找不到了qwq"
},
{
"group": 2,
"name": "ClearMoon"
},
{
"group": 2,
"name": "碳烤的咕咕蛋"
},
{
"group": 2,
"name": "鞠培雯"
},
{
"group": 2,
"name": "想要内卷"
},
{
"group": 2,
"name": "绝对不是楠桐的仓妖"
},
{ {
"group": 2, "group": 2,
"name": "超级无敌暴龙战士" "name": "超级无敌暴龙战士"
@@ -4236,5 +4298,50 @@
{ {
"group": 2, "group": 2,
"name": "Buruol" "name": "Buruol"
},
{
"group": 2,
"name": "吃不饱"
},
{
"group": 2,
"name": "姚尼玛"
},
{
"group": 2,
"name": "行者汤恩"
},
{
"group": 2,
"name": "懒惰的肥猿"
},
{
"group": 2,
"name": "库库林白夜"
},
{
"group": 2,
"name": "SSSamuel"
},
{
"group": 2,
"name": "小勘"
},
{
"group": 2,
"name": "『H』"
},
{
"group": 2,
"name": "魔法少女立花响"
},
{
"group": 2,
"name": "凞咥"
},
{
"group": 2,
"name": "INKS",
"color": "#7FFFFD4"
} }
] ]

File diff suppressed because it is too large Load Diff

View File

@@ -35,9 +35,11 @@ P 3FA91C13 icon_github.png
P AB934AEA icon_int@3x.png P AB934AEA icon_int@3x.png
P F1A0724B icon_mny@3x.png P F1A0724B icon_mny@3x.png
P D5AADAC9 icon_rank@3x.png P D5AADAC9 icon_rank@3x.png
P 0806E5F3 icon_save.png
P 2DB0325D icon_spr@3x.png P 2DB0325D icon_spr@3x.png
P 2EFA541B icon_str@3x.png P 2EFA541B icon_str@3x.png
P 804842C9 icon_thanks@3x.png P 804842C9 icon_thanks@3x.png
P 96DD5D94 icon_themes.png
P 6ECB5FEC icon_up@3x.png P 6ECB5FEC icon_up@3x.png
D images/progress D images/progress
P E2BF0C93 progress_1@3x$bar.png P E2BF0C93 progress_1@3x$bar.png
@@ -46,6 +48,10 @@ P E7F15BA7 progress_2$bar.png
P 641A22BF progress_2.png P 641A22BF progress_2.png
P AF80A9AF progress_s$bar.png P AF80A9AF progress_s$bar.png
P 41417E8D progress_s.png P 41417E8D progress_s.png
D images/radio
P CCF63014 radio_cyber.png
P 040DE73C radio_dark.png
P BA975F5A radio_light.png
D images/resource D images/resource
P F3659301 bottombreath.png P F3659301 bottombreath.png
P 496D6FB9 circle.png P 496D6FB9 circle.png
@@ -59,3 +65,5 @@ R 8B95E6D3 vslider_1@3x$bar.png
P 6581FBA8 vslider_1@3x$down.png P 6581FBA8 vslider_1@3x$down.png
P 6581FBA8 vslider_1@3x$up.png P 6581FBA8 vslider_1@3x$up.png
R C9587878 vslider_1@3x.png R C9587878 vslider_1@3x.png
D images/texture
P FD231754 texture_1.png

View File

@@ -1 +1 @@
{"frames":{"icon_achievement@3x.png":{"frame":{"h":69,"idx":0,"w":65,"x":0,"y":385},"sourceSize":{"h":69,"w":65},"spriteSourceSize":{"x":0,"y":0}},"icon_chr@3x.png":{"frame":{"h":61,"idx":0,"w":57,"x":132,"y":448},"sourceSize":{"h":61,"w":57},"spriteSourceSize":{"x":0,"y":0}},"icon_discord.png":{"frame":{"h":384,"idx":0,"w":384,"x":0,"y":0},"sourceSize":{"h":384,"w":384},"spriteSourceSize":{"x":0,"y":0}},"icon_github.png":{"frame":{"h":384,"idx":0,"w":384,"x":385,"y":0},"sourceSize":{"h":384,"w":384},"spriteSourceSize":{"x":0,"y":0}},"icon_int@3x.png":{"frame":{"h":57,"idx":0,"w":54,"x":0,"y":455},"sourceSize":{"h":57,"w":54},"spriteSourceSize":{"x":0,"y":0}},"icon_mny@3x.png":{"frame":{"h":57,"idx":0,"w":54,"x":55,"y":455},"sourceSize":{"h":57,"w":54},"spriteSourceSize":{"x":0,"y":0}},"icon_rank@3x.png":{"frame":{"h":62,"idx":0,"w":72,"x":132,"y":385},"sourceSize":{"h":62,"w":72},"spriteSourceSize":{"x":0,"y":0}},"icon_spr@3x.png":{"frame":{"h":60,"idx":0,"w":57,"x":190,"y":448},"sourceSize":{"h":60,"w":57},"spriteSourceSize":{"x":0,"y":0}},"icon_str@3x.png":{"frame":{"h":57,"idx":0,"w":54,"x":205,"y":385},"sourceSize":{"h":57,"w":54},"spriteSourceSize":{"x":0,"y":0}},"icon_thanks@3x.png":{"frame":{"h":69,"idx":0,"w":65,"x":66,"y":385},"sourceSize":{"h":69,"w":65},"spriteSourceSize":{"x":0,"y":0}},"icon_up@3x.png":{"frame":{"h":18,"idx":0,"w":33,"x":248,"y":443},"sourceSize":{"h":18,"w":33},"spriteSourceSize":{"x":0,"y":0}}},"meta":{"image":"icons.png","prefix":"images/icons/"}} {"frames":{"icon_achievement@3x.png":{"frame":{"h":69,"idx":0,"w":65,"x":188,"y":385},"sourceSize":{"h":69,"w":65},"spriteSourceSize":{"x":0,"y":0}},"icon_chr@3x.png":{"frame":{"h":61,"idx":0,"w":57,"x":320,"y":448},"sourceSize":{"h":61,"w":57},"spriteSourceSize":{"x":0,"y":0}},"icon_discord.png":{"frame":{"h":384,"idx":0,"w":384,"x":0,"y":0},"sourceSize":{"h":384,"w":384},"spriteSourceSize":{"x":0,"y":0}},"icon_github.png":{"frame":{"h":384,"idx":0,"w":384,"x":385,"y":0},"sourceSize":{"h":384,"w":384},"spriteSourceSize":{"x":0,"y":0}},"icon_int@3x.png":{"frame":{"h":57,"idx":0,"w":54,"x":188,"y":455},"sourceSize":{"h":57,"w":54},"spriteSourceSize":{"x":0,"y":0}},"icon_mny@3x.png":{"frame":{"h":57,"idx":0,"w":54,"x":243,"y":455},"sourceSize":{"h":57,"w":54},"spriteSourceSize":{"x":0,"y":0}},"icon_rank@3x.png":{"frame":{"h":62,"idx":0,"w":72,"x":320,"y":385},"sourceSize":{"h":62,"w":72},"spriteSourceSize":{"x":0,"y":0}},"icon_save.png":{"frame":{"h":90,"idx":0,"w":90,"x":97,"y":385},"sourceSize":{"h":90,"w":90},"spriteSourceSize":{"x":0,"y":0}},"icon_spr@3x.png":{"frame":{"h":60,"idx":0,"w":57,"x":378,"y":448},"sourceSize":{"h":60,"w":57},"spriteSourceSize":{"x":0,"y":0}},"icon_str@3x.png":{"frame":{"h":57,"idx":0,"w":54,"x":393,"y":385},"sourceSize":{"h":57,"w":54},"spriteSourceSize":{"x":0,"y":0}},"icon_thanks@3x.png":{"frame":{"h":69,"idx":0,"w":65,"x":254,"y":385},"sourceSize":{"h":69,"w":65},"spriteSourceSize":{"x":0,"y":0}},"icon_themes.png":{"frame":{"h":96,"idx":0,"w":96,"x":0,"y":385},"sourceSize":{"h":96,"w":96},"spriteSourceSize":{"x":0,"y":0}},"icon_up@3x.png":{"frame":{"h":18,"idx":0,"w":33,"x":97,"y":476},"sourceSize":{"h":18,"w":33},"spriteSourceSize":{"x":0,"y":0}}},"meta":{"image":"icons.png","prefix":"images/icons/"}}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 53 KiB

View File

@@ -0,0 +1 @@
{"frames":{"radio_cyber.png":{"frame":{"h":300,"idx":0,"w":300,"x":0,"y":0},"sourceSize":{"h":300,"w":300},"spriteSourceSize":{"x":0,"y":0}},"radio_dark.png":{"frame":{"h":300,"idx":0,"w":300,"x":0,"y":301},"sourceSize":{"h":300,"w":300},"spriteSourceSize":{"x":0,"y":0}},"radio_light.png":{"frame":{"h":300,"idx":0,"w":300,"x":301,"y":0},"sourceSize":{"h":300,"w":300},"spriteSourceSize":{"x":0,"y":0}}},"meta":{"image":"radio.png","prefix":"images/radio/"}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

View File

@@ -0,0 +1 @@
{"frames":{"texture_1.png":{"frame":{"h":400,"idx":0,"w":400,"x":0,"y":0},"sourceSize":{"h":400,"w":400},"spriteSourceSize":{"x":0,"y":0}}},"meta":{"image":"texture.png","prefix":"images/texture/"}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -1 +1 @@
<!doctype html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"><meta name="description" content="やり直すんだ。そして、次はうまくやる。"/><meta name="keywords" content="人生重开模拟器 liferestart life restart remake 人生重来"/><meta name="renderer" content="webkit"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="full-screen" content="true"/><meta name="x5-fullscreen" content="true"/><meta name="360-fullscreen" content="true"/><meta name="theme-color" content="#157878"/><meta name="laya" screenorientation="landscape"/><meta http-equiv="expires" content="0"/><meta http-equiv="Cache-Control" content="no-siteapp"/><title>Life Restart</title><script src="libs/laya/min/laya.core.min.js"></script><script src="libs/laya/min/laya.webgl.min.js"></script><script src="libs/laya/min/laya.filter.min.js"></script><script src="libs/laya/min/laya.particle.min.js"></script><script src="libs/laya/min/laya.ui.min.js"></script><script defer="defer" src="chunk/main.883b9.js"></script></head><body style="background:black"></body></html> <!doctype html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"><meta name="description" content="やり直すんだ。そして、次はうまくやる。"/><meta name="keywords" content="人生重开模拟器 liferestart life restart remake 人生重来"/><meta name="renderer" content="webkit"/><meta name="apple-mobile-web-app-capable" content="yes"/><meta name="full-screen" content="true"/><meta name="x5-fullscreen" content="true"/><meta name="360-fullscreen" content="true"/><meta name="theme-color" content="#157878"/><meta name="laya" screenorientation="landscape"/><meta http-equiv="expires" content="0"/><meta http-equiv="Cache-Control" content="no-siteapp"/><title>Life Restart</title><script src="libs/laya/min/laya.core.min.js"></script><script src="libs/laya/min/laya.webgl.min.js"></script><script src="libs/laya/min/laya.filter.min.js"></script><script src="libs/laya/min/laya.particle.min.js"></script><script src="libs/laya/min/laya.ui.min.js"></script><script defer="defer" src="chunk/main.a3242.js"></script></head><body style="background:black"></body></html>

1
public/particle/fly.part Normal file
View File

@@ -0,0 +1 @@
{"textureName":"images/texture/texture_1.png","positionVariance":{"0":0,"1":0,"2":0},"minVerticalVelocity":-100,"minVerticalEndRadian":0,"minStartSize":0,"minStartRadius":0,"minRotateSpeed":0,"minHorizontalVelocity":100,"minHorizontalEndRadian":0,"minEndSize":18.55,"minEndRadius":218.75,"minColor":{"0":0.15,"1":0.92,"2":0.91,"3":0.6000000238418579},"maxVerticalVelocity":100,"maxVerticalEndRadian":0,"maxStartSize":2.04,"maxStartRadius":0,"maxRotateSpeed":0,"maxPartices":400,"maxHorizontalVelocity":100,"maxHorizontalEndRadian":0,"maxEndSize":24.35,"maxEndRadius":84.82,"maxColor":{"0":0.57,"1":1,"2":0,"3":1},"gravity":{"0":0,"1":0,"2":0},"endVelocity":2,"emitterVelocitySensitivity":56.89,"duration":9.52,"colorComponentInter":true,"blendState":0,"ageAddScale":10,"backColor":"#ffffff","textureFileName":"comp\\clip_num.png","textureCount":1,"minHorizontalStartRadian":0,"maxHorizontalStartRadian":0,"minVerticalStartRadian":0,"maxVerticalStartRadian":0,"emitterType":"null","emissionRate":0,"sphereEmitterRadius":1,"sphereEmitterVelocity":0,"sphereEmitterVelocityAddVariance":0,"ringEmitterRadius":30,"ringEmitterVelocity":0,"ringEmitterVelocityAddVariance":0,"ringEmitterUp":2,"minStartColor":{"0":0.5,"1":0.5,"2":0.5,"3":0.2},"maxStartColor":{"0":1,"1":1,"2":1,"3":1},"minEndColor":{"0":0,"1":0,"2":0,"3":0.08},"maxEndColor":{"0":1,"1":1,"2":1,"3":1},"pointEmitterPosition":{"0":0,"1":0,"2":0},"pointEmitterPositionVariance":{"0":0,"1":0,"2":0},"pointEmitterVelocity":{"0":0,"1":0,"2":0},"pointEmitterVelocityAddVariance":{"0":0,"1":0,"2":0},"boxEmitterCenterPosition":{"0":0,"1":0,"2":0},"boxEmitterSize":{"0":0,"1":0,"2":0},"boxEmitterVelocity":{"0":0,"1":0,"2":0},"boxEmitterVelocityAddVariance":{"0":0,"1":0,"2":0},"sphereEmitterCenterPosition":{"0":0,"1":0,"2":0},"ringEmitterCenterPosition":{"0":0,"1":0,"2":0},"useEndRadian":true,"disableColor":false}

View File

@@ -10,6 +10,25 @@ globalThis.UI =
UIManager; UIManager;
globalThis.$_ = utils; globalThis.$_ = utils;
globalThis.goto = async tag => {
let url;
switch(tag) {
case 'github': url = 'https://github.com/VickScarlet/lifeRestart'; break;
case 'discord': url = 'https://discord.gg/U3qrf49NMQ'; break;
case 'sponsor_afd': url = 'https://afdian.net/@LifeRestart'; break;
case 'sponsor_ddf': url = 'https://dun.mianbaoduo.com/@vickscarlet'; break;
}
try {
if(Laya.Browser.onIOS) {
window.location.href = url;
} else {
window.open(url, '_blank');
}
} catch (error) {
console.error(error);
}
}
class App{ class App{
constructor(){ constructor(){
this.name = 'lifeRestart'; this.name = 'lifeRestart';
@@ -119,6 +138,16 @@ class App{
$$on('achievement', achievement => { $$on('achievement', achievement => {
$ui.popup(UI.popups.ACHIEVEMENT, {achievement}); $ui.popup(UI.popups.ACHIEVEMENT, {achievement});
}) })
$$on('message', ([message, ...args]) => {
if(Array.isArray(message)) {
message = message.map(([m, ...a]) => $_.format($lang[m], ...a)) .join('\n');
} else {
message = $_.format(
$lang[message], ...args
);
}
$ui.popup(UI.popups.MESSAGE, {message});
})
} }
async start({ async start({
@@ -128,6 +157,15 @@ class App{
this.resigterEvent(); this.resigterEvent();
this.#initLaya(); this.#initLaya();
globalThis.$ui = UIManager.getInstance(); globalThis.$ui = UIManager.getInstance();
if(theme=='default') {
if(!localStorage.getItem('__')) {
localStorage.setItem('__', 1);
localStorage.setItem('theme', 'cyber');
}
theme = localStorage.getItem('theme');
}
$ui.theme = theme; $ui.theme = theme;
await this.#setLanguage(language); await this.#setLanguage(language);
await $ui.setLoading(UI.pages.LOADING); await $ui.setLoading(UI.pages.LOADING);
@@ -137,6 +175,7 @@ class App{
dataSet=>Laya.promises.loader.load(`data/${dataSet}.json`, null, Laya.Loader.JSON), dataSet=>Laya.promises.loader.load(`data/${dataSet}.json`, null, Laya.Loader.JSON),
); );
await $ui.switchView(UI.pages.MAIN); await $ui.switchView(UI.pages.MAIN);
} }
} }

View File

@@ -83,10 +83,17 @@ function deepMapSet(target, source) {
return target; return target;
} }
function deepGet(obj, path) {
for(const key of path.split('.')) {
if(!(key in obj)) return undefined;
obj = obj[key];
}
return obj;
}
function format(str, ...args) { function format(str, ...args) {
const replace = set => (match, key) => { const replace = set => (match, key) => {
const value = set[key]; const value = deepGet(set, key);
switch(typeof value) { switch(typeof value) {
case 'object': return JSON.stringify(value); case 'object': return JSON.stringify(value);
case 'boolean': case 'boolean':

View File

@@ -119,7 +119,30 @@ export default ({
UI_Support_Programmer: 'Programmer', UI_Support_Programmer: 'Programmer',
UI_Support_Designer: 'Designer', UI_Support_Designer: 'Designer',
UI_Save: 'Save',
UI_Load: 'Load',
UI_Read: 'Copy',
UI_Write: 'Paste',
UI_CopySuccess: 'Copy to clipboard success',
UI_CopyFaild: 'Copy to clipboard faild',
UI_PasteSuccessDecodeSuccess: 'Load Success!',
UI_PasteSuccessDecodeFaild: 'Paste success, but load faild!',
UI_PasteFaildDecodeSuccess: 'Paste faild, use input load success!',
UI_PasteFaildDecodeFaild: 'Paste faild, use input load faild!',
UI_LoadSuccess: 'Load Success!',
UI_LoadFaild: 'Load Faild!',
M_NoRank: 'There is no rank',
F_RemakeTimes: 'Remake {0} Times', F_RemakeTimes: 'Remake {0} Times',
F_AchievementCount: 'Achievement {0}', F_AchievementCount: 'Achievement {0}',
F_TalentSelection: '{name} ({description})', F_TalentSelection: '{name} ({description})',
F_TalentConflict: 'Conflict with talent ({0})',
F_TalentSelectLimit: 'Talent select limit {0}',
F_TalentSelectNotComplect: 'Please select {0} talent',
F_PropertyPointLeft: 'You have left {0} property point',
F_TalentReplace: 'Talent replace [{source.name}] -> [{target.name}]',
}); });

View File

@@ -119,7 +119,30 @@ export default ({
UI_Support_Programmer: '打赏程序(顿顿饭)', UI_Support_Programmer: '打赏程序(顿顿饭)',
UI_Support_Designer: '打赏策划(爱发电)', UI_Support_Designer: '打赏策划(爱发电)',
UI_Save: '存档',
UI_Load: '读档',
UI_Read: '复制',
UI_Write: '粘贴',
UI_LoadSuccess: '读档成功!',
UI_LoadFaild: '读档失败!',
UI_CopySuccess: '成功复制存档到剪贴板',
UI_CopyFaild: '复制存档到剪贴板失败,请手动复制存档内容',
UI_PasteSuccessDecodeSuccess: '读档成功!',
UI_PasteSuccessDecodeFaild: '粘贴剪贴板存档内容成功,但剪贴板内容读档失败',
UI_PasteFaildDecodeSuccess: '粘贴剪贴板存档内容失败,使用输入的内容读档成功',
UI_PasteFaildDecodeFaild: '粘贴剪贴板存档内容失败,使用输入的内容读档失败',
M_NoRank: '别卷了,没有排行榜',
F_RemakeTimes: '已重开{0}次', F_RemakeTimes: '已重开{0}次',
F_AchievementCount: '成就达成{0}个', F_AchievementCount: '成就达成{0}个',
F_TalentSelection: '{name}{description}', F_TalentSelection: '{name}{description}',
F_TalentConflict: '与已选的「{0}」天赋冲突',
F_TalentSelectLimit: '只能选 {0} 个天赋',
F_TalentSelectNotComplect: '要选满{0}个天赋',
F_PropertyPointLeft: '你还有 {0} 属性点没有分配完',
F_TalentReplace: '天赋替换【{source.name}】->【{target.name}】',
}); });

View File

@@ -1,21 +1,6 @@
import App from './app.js'; import App from './app.js';
import Life from './modules/life.js'; import Life from './modules/life.js';
globalThis.goto = async tag => {
let url;
switch(tag) {
case 'github': url = 'https://github.com/VickScarlet/lifeRestart'; break;
case 'discord': url = 'https://discord.gg/U3qrf49NMQ'; break;
case 'sponsor_afd': url = 'https://afdian.net/@LifeRestart'; break;
case 'sponsor_ddf': url = 'https://dun.mianbaoduo.com/@vickscarlet'; break;
}
try {
window.open(url, '_blank');
} catch (error) {
console.error(error);
}
}
globalThis.$$eventMap = new Map(); globalThis.$$eventMap = new Map();
globalThis.$$event = (tag, data) => { globalThis.$$event = (tag, data) => {
const listener = $$eventMap.get(tag); const listener = $$eventMap.get(tag);
@@ -34,6 +19,37 @@ globalThis.$$off = (tag, fn) => {
if(listener) listener.delete(fn); if(listener) listener.delete(fn);
} }
globalThis.$$copy = async text => {
const result = await navigator.permissions.query({ name: "clipboard-write" })
if (result.state == "granted" || result.state == "prompt") {
navigator.clipboard.writeText(text)
return true;
}
const input = document.createElement('input');
input.setAttribute('style', 'opacity: 0;');
document.body.appendChild(input);
input.value = text;
input.select();
const r = document.execCommand("copy");
document.body.removeChild(input);
return r;
}
globalThis.$$read = async ()=>{
const result = await navigator.permissions.query({ name: "clipboard-read" })
if (result.state == "granted" || result.state == "prompt") {
return await navigator.clipboard.readText();
}
const input = document.createElement('input');
input.setAttribute('style', 'opacity: 0;');
document.body.appendChild(input);
input.focus();
const r = document.execCommand("paste");
const text = input.value;
document.body.removeChild(input);
return r?text:r;
};
const core = new Life(); const core = new Life();
const game = new App(); const game = new App();
globalThis.core = core; globalThis.core = core;

View File

@@ -44,12 +44,12 @@ class Event {
} }
do(eventId, property) { do(eventId, property) {
const { effect, branch, event: description, postEvent } = this.get(eventId); const { effect, branch, event: description, postEvent, grade } = this.get(eventId);
if(branch) if(branch)
for(const [cond, next] of branch) for(const [cond, next] of branch)
if(checkCondition(property, cond)) if(checkCondition(property, cond))
return { effect, next, description }; return { effect, next, description, grade };
return { effect, postEvent, description }; return { effect, postEvent, description, grade };
} }
} }

View File

@@ -22,6 +22,7 @@ class Life {
#propertyAllocateLimit; #propertyAllocateLimit;
#defaultPropertys; #defaultPropertys;
#specialThanks; #specialThanks;
#initialData;
async initial(i18nLoad, commonLoad) { async initial(i18nLoad, commonLoad) {
const [age, talents, events, achievements, specialThanks] = await Promise.all([ const [age, talents, events, achievements, specialThanks] = await Promise.all([
@@ -58,25 +59,28 @@ class Life {
this.#property.config(propertyConfig); this.#property.config(propertyConfig);
} }
restart(allocation) { remake(talents) {
const propertys = clone(this.#defaultPropertys); this.#initialData = clone(this.#defaultPropertys);
for(const key in allocation) { this.#initialData.TLT = clone(talents);
propertys[key] = clone(allocation[key]);
}
this.#triggerTalents = {}; this.#triggerTalents = {};
const contents = this.talentReplace(propertys.TLT); return this.talentReplace(this.#initialData.TLT);
this.#property.restart(propertys); }
start(allocation) {
for(const key in allocation) {
this.#initialData[key] = clone(allocation[key]);
}
this.#property.restart(this.#initialData);
this.doTalent() this.doTalent()
this.#property.restartLastStep(); this.#property.restartLastStep();
this.#achievement.achieve( this.#achievement.achieve(
this.AchievementOpportunity.START, this.AchievementOpportunity.START,
this.#property this.#property
) );
return contents;
} }
getPropertyPoints(selectedTalentIds) { getPropertyPoints() {
return this.#defaultPropertyPoints + this.#talent.allocationAddition(selectedTalentIds); return this.#defaultPropertyPoints + this.#talent.allocationAddition(this.#initialData.TLT);
} }
getTalentCurrentTriggerCount(talentId) { getTalentCurrentTriggerCount(talentId) {
@@ -138,13 +142,14 @@ class Life {
} }
doEvent(eventId) { doEvent(eventId) {
const { effect, next, description, postEvent } = this.#event.do(eventId, this.#property); const { effect, next, description, postEvent, grade } = this.#event.do(eventId, this.#property);
this.#property.change(this.PropertyTypes.EVT, eventId); this.#property.change(this.PropertyTypes.EVT, eventId);
this.#property.effect(effect); this.#property.effect(effect);
const content = { const content = {
type: this.PropertyTypes.EVT, type: this.PropertyTypes.EVT,
description, description,
postEvent, postEvent,
grade,
} }
if(next) return [content, this.doEvent(next)].flat(); if(next) return [content, this.doEvent(next)].flat();
return [content]; return [content];

File diff suppressed because one or more lines are too long

View File

@@ -7,6 +7,7 @@ export default class CyberAchievement extends ui.view.CyberTheme.CyberAchievemen
this.#state = {min, max}; this.#state = {min, max};
this.btnStatistics.on(Laya.Event.CLICK, this, ()=>this.switch('statistics')); this.btnStatistics.on(Laya.Event.CLICK, this, ()=>this.switch('statistics'));
this.btnAchievement.on(Laya.Event.CLICK, this, ()=>this.switch('achievement')); this.btnAchievement.on(Laya.Event.CLICK, this, ()=>this.switch('achievement'));
this.btnRank.on(Laya.Event.CLICK, this, $$event, ['message', ['M_NoRank']]);
this.listAchievements.renderHandler = new Laya.Handler(this, this.onRenderAchievement); this.listAchievements.renderHandler = new Laya.Handler(this, this.onRenderAchievement);
this.listAchievements.scrollBar.elasticDistance = 150; this.listAchievements.scrollBar.elasticDistance = 150;

View File

@@ -6,6 +6,8 @@ export default class CyberMain extends ui.view.CyberTheme.CyberMainUI {
this.btnThanks.on(Laya.Event.CLICK, this, ()=>$ui.switchView(UI.pages.THANKS)); this.btnThanks.on(Laya.Event.CLICK, this, ()=>$ui.switchView(UI.pages.THANKS));
this.btnGithub.on(Laya.Event.CLICK, this, goto, ['github']); this.btnGithub.on(Laya.Event.CLICK, this, goto, ['github']);
this.btnDiscord.on(Laya.Event.CLICK, this, goto, ['discord']); this.btnDiscord.on(Laya.Event.CLICK, this, goto, ['discord']);
this.btnThemes.on(Laya.Event.CLICK, this, ()=>$ui.showDialog(UI.pages.THEMES));
this.btnSaveLoad.on(Laya.Event.CLICK, this, ()=>$ui.showDialog(UI.pages.SAVELOAD));
this.on(Laya.Event.RESIZE, this, () => { this.on(Laya.Event.RESIZE, this, () => {
const scale = Math.max( const scale = Math.max(
this.width / this.imgBg.width, this.width / this.imgBg.width,

View File

@@ -41,9 +41,11 @@ export default class CyberProperty extends ui.view.CyberTheme.CyberPropertyUI {
init({talents}) { init({talents}) {
this.listSelectedTalents.array = talents; this.listSelectedTalents.array = talents;
const talentIds = talents.map(talent => talent.id); const replace = core.remake(talents.map(talent => talent.id));
// core.talentReplace(talentIds); if(replace.length > 0) {
this.#propertyPoints = core.getPropertyPoints(talentIds); $$event('message', [replace.map(v => ['F_TalentReplace', v])]);
}
this.#propertyPoints = core.getPropertyPoints();
this.#propertyAllocateLimit = core.propertyAllocateLimit; this.#propertyAllocateLimit = core.propertyAllocateLimit;
this.labLeftPropertyPoint.text = this.#propertyPoints; this.labLeftPropertyPoint.text = this.#propertyPoints;
this.#propertyAllocate = { this.#propertyAllocate = {
@@ -51,14 +53,14 @@ export default class CyberProperty extends ui.view.CyberTheme.CyberPropertyUI {
[this.#types.INT]: 0, [this.#types.INT]: 0,
[this.#types.STR]: 0, [this.#types.STR]: 0,
[this.#types.MNY]: 0, [this.#types.MNY]: 0,
[this.#types.TLT]: talentIds,
} }
this.updateAllocate(); this.updateAllocate();
} }
next() { next() {
if (this.total < this.#propertyPoints) { const left = this.#propertyPoints - this.total;
return; if (left > 0) {
return $$event('message', ['F_PropertyPointLeft', left]);
} }
$ui.switchView( $ui.switchView(
UI.pages.TRAJECTORY, UI.pages.TRAJECTORY,

View File

@@ -36,7 +36,7 @@ export default class CyberTalent extends ui.view.CyberTheme.CyberTalentUI {
onClickNext() { onClickNext() {
if(this.#selected.size < core.talentSelectLimit) { if(this.#selected.size < core.talentSelectLimit) {
return; return $$event('message', ['F_TalentSelectNotComplect', core.talentSelectLimit]);
} }
const talents = [...this.#selected].map(index => this.listTalents.array[index]); const talents = [...this.#selected].map(index => this.listTalents.array[index]);
@@ -97,6 +97,16 @@ export default class CyberTalent extends ui.view.CyberTheme.CyberTalentUI {
this.#selected.delete(index); this.#selected.delete(index);
} else { } else {
if(this.#selected.size >= core.talentSelectLimit) { if(this.#selected.size >= core.talentSelectLimit) {
return $$event('message', ['F_TalentSelectLimit', core.talentSelectLimit]);
}
const exclusive = core.exclusive(
[...this.#selected].map(index => this.listTalents.array[index].id),
this.listTalents.array[index].id
);
if(exclusive != null) {
for(const {name, id} of this.listTalents.array)
if(exclusive == id)
return $$event('message', ['F_TalentConflict', name]);
return; return;
} }
this.#selected.add(index); this.#selected.add(index);

View File

@@ -60,6 +60,7 @@ export default class CyberTrajectory extends ui.view.CyberTheme.CyberTrajectoryU
const item = CyberTrajectory.#createComponent('boxTrajectoryItem'); const item = CyberTrajectory.#createComponent('boxTrajectoryItem');
item.labContent = item.getChildByName('labContent'); item.labContent = item.getChildByName('labContent');
item.labAge = item.getChildByName('hboxAge').getChildByName('labAge'); item.labAge = item.getChildByName('hboxAge').getChildByName('labAge');
item.boxGrade = item.getChildByName('boxGrade');
return item; return item;
} }
#isEnd; #isEnd;
@@ -67,12 +68,13 @@ export default class CyberTrajectory extends ui.view.CyberTheme.CyberTrajectoryU
#talents; #talents;
init({propertyAllocate, talents}) { init({propertyAllocate, talents}) {
this.boxParticle.visible = false;
this.boxSpeed.visible = true; this.boxSpeed.visible = true;
this.btnSummary.visible = false; this.btnSummary.visible = false;
this.#trajectoryItems = []; this.#trajectoryItems = [];
this.#isEnd = false; this.#isEnd = false;
this.#talents = talents; this.#talents = talents;
core.restart(propertyAllocate); core.start(propertyAllocate);
this.updateProperty(); this.updateProperty();
this.onNext(); this.onNext();
} }
@@ -111,6 +113,9 @@ export default class CyberTrajectory extends ui.view.CyberTheme.CyberTrajectoryU
this.renderTrajectory(age, content); this.renderTrajectory(age, content);
if(age >= 100) {
this.boxParticle.visible = true;
}
Laya.timer.frameOnce(1, this, () => { Laya.timer.frameOnce(1, this, () => {
this.panelTrajectory.scrollTo(0, this.panelTrajectory.contentHeight); this.panelTrajectory.scrollTo(0, this.panelTrajectory.contentHeight);
}); });
@@ -130,6 +135,10 @@ export default class CyberTrajectory extends ui.view.CyberTheme.CyberTrajectoryU
} }
} }
).join('\n'); ).join('\n');
$_.deepMapSet(
item.boxGrade,
$ui.common.gradeBlk[content[content.length - 1].grade || 0]
);
this.vboxTrajectory.addChild(item); this.vboxTrajectory.addChild(item);
this.#trajectoryItems.push(item); this.#trajectoryItems.push(item);
this.#trajectoryItems.forEach((item, index) => item.y = index); this.#trajectoryItems.forEach((item, index) => item.y = index);

View File

@@ -2,6 +2,7 @@ export default class Achievement extends ui.view.DefaultTheme.AchievementUI {
constructor() { constructor() {
super(); super();
this.btnBack.on(Laya.Event.CLICK, this, () => $ui.switchView(UI.pages.MAIN)); this.btnBack.on(Laya.Event.CLICK, this, () => $ui.switchView(UI.pages.MAIN));
this.btnRank.on(Laya.Event.CLICK, this, $$event, ['message', ['M_NoRank']]);
this.listAchievements.renderHandler = new Laya.Handler(this, this.onRenderAchievement); this.listAchievements.renderHandler = new Laya.Handler(this, this.onRenderAchievement);
this.listAchievements.scrollBar.elasticDistance = 150; this.listAchievements.scrollBar.elasticDistance = 150;
} }

View File

@@ -6,6 +6,8 @@ export default class Main extends ui.view.DefaultTheme.MainUI {
this.btnThanks.on(Laya.Event.CLICK, this, ()=>$ui.switchView(UI.pages.THANKS)); this.btnThanks.on(Laya.Event.CLICK, this, ()=>$ui.switchView(UI.pages.THANKS));
this.btnGithub.on(Laya.Event.CLICK, this, goto, ['github']); this.btnGithub.on(Laya.Event.CLICK, this, goto, ['github']);
this.btnDiscord.on(Laya.Event.CLICK, this, goto, ['discord']); this.btnDiscord.on(Laya.Event.CLICK, this, goto, ['discord']);
this.btnThemes.on(Laya.Event.CLICK, this, ()=>$ui.showDialog(UI.pages.THEMES));
this.btnSaveLoad.on(Laya.Event.CLICK, this, ()=>$ui.showDialog(UI.pages.SAVELOAD));
} }
static load() { static load() {
@@ -18,5 +20,8 @@ export default class Main extends ui.view.DefaultTheme.MainUI {
this.btnDiscord.visible = this.btnDiscord.visible =
this.btnAchievement.visible = this.btnAchievement.visible =
this.btnThanks.visible = !!core.times; this.btnThanks.visible = !!core.times;
const text = this.labSubTitle.text;
this.labSubTitle.text = ' ';
this.labSubTitle.text = text;
} }
} }

View File

@@ -41,9 +41,11 @@ export default class Property extends ui.view.DefaultTheme.PropertyUI {
init({talents}) { init({talents}) {
this.listSelectedTalents.array = talents; this.listSelectedTalents.array = talents;
const talentIds = talents.map(talent => talent.id); const replace = core.remake(talents.map(talent => talent.id));
// core.talentReplace(talentIds); if(replace.length > 0) {
this.#propertyPoints = core.getPropertyPoints(talentIds); $$event('message', [replace.map(v => ['F_TalentReplace', v])]);
}
this.#propertyPoints = core.getPropertyPoints();
this.#propertyAllocateLimit = core.propertyAllocateLimit; this.#propertyAllocateLimit = core.propertyAllocateLimit;
this.labLeftPropertyPoint.text = this.#propertyPoints; this.labLeftPropertyPoint.text = this.#propertyPoints;
this.#propertyAllocate = { this.#propertyAllocate = {
@@ -51,14 +53,14 @@ export default class Property extends ui.view.DefaultTheme.PropertyUI {
[this.#types.INT]: 0, [this.#types.INT]: 0,
[this.#types.STR]: 0, [this.#types.STR]: 0,
[this.#types.MNY]: 0, [this.#types.MNY]: 0,
[this.#types.TLT]: talentIds,
} }
this.updateAllocate(); this.updateAllocate();
} }
next() { next() {
if (this.total < this.#propertyPoints) { const left = this.#propertyPoints - this.total;
return; if (left > 0) {
return $$event('message', ['F_PropertyPointLeft', left]);
} }
$ui.switchView( $ui.switchView(
UI.pages.TRAJECTORY, UI.pages.TRAJECTORY,

View File

@@ -26,7 +26,7 @@ export default class Talent extends ui.view.DefaultTheme.TalentUI {
onClickNext() { onClickNext() {
if(this.#selected.size < core.talentSelectLimit) { if(this.#selected.size < core.talentSelectLimit) {
return; return $$event('message', ['F_TalentSelectNotComplect', core.talentSelectLimit]);
} }
const talents = [...this.#selected].map(index => this.listTalents.array[index]); const talents = [...this.#selected].map(index => this.listTalents.array[index]);
@@ -53,6 +53,16 @@ export default class Talent extends ui.view.DefaultTheme.TalentUI {
this.#selected.delete(index); this.#selected.delete(index);
} else { } else {
if(this.#selected.size >= core.talentSelectLimit) { if(this.#selected.size >= core.talentSelectLimit) {
return $$event('message', ['F_TalentSelectLimit', core.talentSelectLimit]);
}
const exclusive = core.exclusive(
[...this.#selected].map(index => this.listTalents.array[index].id),
this.listTalents.array[index].id
);
if(exclusive != null) {
for(const {name, id} of this.listTalents.array)
if(exclusive == id)
return $$event('message', ['F_TalentConflict', name]);
return; return;
} }
this.#selected.add(index); this.#selected.add(index);

View File

@@ -35,6 +35,9 @@ export default class Trajectory extends ui.view.DefaultTheme.TrajectoryUI {
item.labAge = item.getChildByName('hboxAge').getChildByName('labAge'); item.labAge = item.getChildByName('hboxAge').getChildByName('labAge');
const config = $ui.common.trajectoryItem; const config = $ui.common.trajectoryItem;
$_.deepMapSet(item, config.box); $_.deepMapSet(item, config.box);
item.grade = grade => {
$_.deepMapSet(item, config.grade[grade || 0]);
}
item.getChildByName('hboxAge')._childs.forEach(child => child.color = config.ageColor); item.getChildByName('hboxAge')._childs.forEach(child => child.color = config.ageColor);
item.labContent.color = config.contentColor; item.labContent.color = config.contentColor;
return item; return item;
@@ -44,12 +47,13 @@ export default class Trajectory extends ui.view.DefaultTheme.TrajectoryUI {
#talents; #talents;
init({propertyAllocate, talents}) { init({propertyAllocate, talents}) {
this.boxParticle.visible = false;
this.boxSpeed.visible = true; this.boxSpeed.visible = true;
this.btnSummary.visible = false; this.btnSummary.visible = false;
this.#trajectoryItems = []; this.#trajectoryItems = [];
this.#isEnd = false; this.#isEnd = false;
this.#talents = talents; this.#talents = talents;
core.restart(propertyAllocate); core.start(propertyAllocate);
this.updateProperty(); this.updateProperty();
this.onNext(); this.onNext();
} }
@@ -88,6 +92,9 @@ export default class Trajectory extends ui.view.DefaultTheme.TrajectoryUI {
this.renderTrajectory(age, content); this.renderTrajectory(age, content);
if(age >= 100) {
this.boxParticle.visible = true;
}
Laya.timer.frameOnce(1, this, () => { Laya.timer.frameOnce(1, this, () => {
this.panelTrajectory.scrollTo(0, this.panelTrajectory.contentHeight); this.panelTrajectory.scrollTo(0, this.panelTrajectory.contentHeight);
}); });
@@ -107,6 +114,7 @@ export default class Trajectory extends ui.view.DefaultTheme.TrajectoryUI {
} }
} }
).join('\n'); ).join('\n');
item.grade(content[content.length - 1].grade);
this.vboxTrajectory.addChild(item); this.vboxTrajectory.addChild(item);
this.#trajectoryItems.push(item); this.#trajectoryItems.push(item);
this.#trajectoryItems.forEach((item, index) => item.y = index); this.#trajectoryItems.forEach((item, index) => item.y = index);

20
src/ui/themes/message.js Normal file
View File

@@ -0,0 +1,20 @@
export default class MessagePopup extends ui.view.MessagePopupUI {
constructor() {
super();
this.left = this.right = 0;
this.boxBg.defaultColor = "#000000";
this.boxBg.hoverColor = "#000000";
this.boxBg.radius = 20;
}
async popup({message}, parent) {
this.message.text = message;
this.message.commitMeasure();
this.height = this.message.height + this.boxBg.radius * 2 + this.message.fontSize;
Laya.Tween.clearAll(this);
this.alpha = 0;
this.y = - 2 * this.height;
await Laya.promises.Tween.to(this, { y: 0, alpha: 1 }, 300, Laya.Ease.backOut),
await Laya.promises.Tween.to(this, { alpha: 0}, 300, Laya.Ease.strongIn, 3000);
}
}

95
src/ui/themes/saveload.js Normal file
View File

@@ -0,0 +1,95 @@
export default class SaveLoad extends ui.view.SaveLoadUI {
constructor() {
super();
this.btnClose.on(Laya.Event.CLICK, this, async ()=>{
await this.close();
$ui.switchView(UI.pages.MAIN);
});
this.btnRead.on(Laya.Event.CLICK, this, async ()=>{
const result = await $$copy(this.input.text = this.data);
$$event('message', [result? 'UI_CopySuccess': 'UI_CopyFaild']);
});
this.btnWrite.on(Laya.Event.CLICK, this, async ()=>{
const text = await $$read();
if(text == false) {
this.data = [
this.input.text,
'UI_PasteFaildDecodeSuccess',
'UI_PasteFaildDecodeFaild'
];
} else {
this.input.text = text;
this.data = [
text,
'UI_PasteSuccessDecodeSuccess',
'UI_PasteSuccessDecodeFaild'
];
}
});
this.btnSave.on(Laya.Event.CLICK, this, ()=>{
let blob = new Blob([this.data], { type: 'application/json' });
const slice = blob.slice || blob.webkitSlice || blob.mozSlice;
blob = slice.call(blob, 0, blob.size, 'application/octet-stream');
const a = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');
a.href = URL.createObjectURL(blob);
a.download = `Remake_save_${new Date().toISOString().replace(':','.')}.json`;
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(a.href);
});
this.btnLoad.on(Laya.Event.CLICK, this, ()=>{
const file = document.createElement('input');
file.setAttribute('type', 'file');
file.setAttribute('name', 'file');
file.setAttribute('accept', 'application/json');
file.setAttribute('style', 'display: none;');
document.body.appendChild(file);
file.click();
file.onchange = (e)=>{
const file = e.target.files[0];
if(!file) return;
const reader = new FileReader();
reader.onload = () => this.data = [reader.result];
reader.readAsText(file);
document.body.removeChild(file);
};
});
this.input.on(Laya.Event.MOUSE_DOWN, this, ()=>{
this.input.setSelection(0, this.input.text.length);
})
}
static load() {
return ["images/atlas/images/radio.atlas"];
}
init() {
this.input.text = this.data;
}
get data() {
const data = {};
Object
.keys(localStorage)
.filter(v=>v.substr(0,4)!='goog')
.forEach(key=>data[key] = localStorage[key]);
return JSON.stringify(data);
}
set data([v, success = 'UI_LoadSuccess', faild = 'UI_LoadFaild']) {
try {
const data = JSON.parse(v);
for(const key in data)
localStorage.setItem(key, data[key]);
$$event('message', [success]);
$ui.theme = $ui.theme;
this.btnClose.event(Laya.Event.CLICK);
} catch (e) {
console.error(e);
$$event('message', [faild]);
}
}
}

40
src/ui/themes/themes.js Normal file
View File

@@ -0,0 +1,40 @@
export default class Themes extends ui.view.ThemesUI {
constructor() {
super();
this.btnClose.on(Laya.Event.CLICK, this, ()=>this.close());
this.btnOK.on(Laya.Event.CLICK, this, async ()=>{
const selected = this.selected;
if(!selected == $ui.theme) return this.close();
$ui.theme = selected;
await this.close();
$ui.switchView(UI.pages.MAIN);
});
}
static load() {
return ["images/atlas/images/radio.atlas"];
}
init() {
this.selected = localStorage.getItem('theme');
}
get selected() {
switch(this.radioTheme.selectedIndex) {
case 0: return 'cyber';
case 1: return 'dark';
case 2: return 'light';
default: return 'default';
}
}
set selected(v) {
let index;
switch(v) {
case 'cyber': index = 0; break;
case 'dark': index = 1; break;
case 'light': index = 2; break;
default: index = -1; break;
}
this.radioTheme.selectedIndex = index;
}
}

View File

@@ -7,10 +7,13 @@ const pages = {
SUMMARY: 'SUMMARY', SUMMARY: 'SUMMARY',
ACHIEVEMENT: 'ACHIEVEMENT', ACHIEVEMENT: 'ACHIEVEMENT',
THANKS: 'THANKS', THANKS: 'THANKS',
THEMES: 'THEMES',
SAVELOAD: 'SAVELOAD',
}; };
const popups = { const popups = {
ACHIEVEMENT: 'POPUP_ACHIEVEMENT', ACHIEVEMENT: 'POPUP_ACHIEVEMENT',
MESSAGE: 'POPUP_MESSAGE',
}; };
const cyber = { const cyber = {
@@ -23,9 +26,12 @@ const cyber = {
[pages.SUMMARY]: "cyber/summary", [pages.SUMMARY]: "cyber/summary",
[pages.ACHIEVEMENT]: "cyber/achievement", [pages.ACHIEVEMENT]: "cyber/achievement",
[pages.THANKS]: "default/thanks", [pages.THANKS]: "default/thanks",
[pages.THEMES]: 'themes',
[pages.SAVELOAD]: 'saveload',
}, },
popups: { popups: {
[popups.ACHIEVEMENT]: "cyber/popup/achievementPopup", [popups.ACHIEVEMENT]: "cyber/popup/achievementPopup",
[popups.MESSAGE]: "message",
}, },
configs: { configs: {
bgColor: '#04131f', bgColor: '#04131f',
@@ -49,8 +55,44 @@ const cyber = {
'#b17cffff', '#b17cffff',
'#ffce45ff', '#ffce45ff',
], ],
gradeBlk: [
{
defaultColor: '#cccccc',
hoverColor: '#cccccc',
},
{
defaultColor: '#55fffe',
hoverColor: '#55fffe',
},
{
defaultColor: '#b17cff',
hoverColor: '#b17cff',
},
{
defaultColor: '#ffce45',
hoverColor: '#ffce45',
},
]
}, },
pages: { pages: {
[pages.MAIN]: {
vars: {
btnThemes: {
defaultColor: '#cccccc',
radius: 100,
},
btnSaveLoad: {
defaultColor: '#5865f2',
defaultStroke: '#eeeeee',
defaultLabel: '#eeeeee',
hoverColor: '#1160b0',
hoverStroke: '#eeeeee',
hoverLabel: '#eeeeee',
lineWidth: 0,
radius: 100,
},
}
},
[pages.THANKS]: { [pages.THANKS]: {
vars: { vars: {
btnBack: { btnBack: {
@@ -82,7 +124,56 @@ const cyber = {
radius: 4, radius: 4,
}, },
}, },
} },
[pages.THEMES]: {
vars: {
btnOK: {
defaultColor: '#28b070',
defaultLabel: '#ffffff',
hoverColor: '#00ff00',
hoverLabel: '#ffffff',
radius: 80,
},
btnClose: {
defaultColor: '#eb3941',
defaultLabel: '#ffffff',
hoverColor: '#ff0000',
hoverLabel: '#ffffff',
radius: 80,
},
}
},
[pages.SAVELOAD]: {
vars: {
btnClose: {
defaultColor: '#eb3941',
hoverColor: '#ff0000',
},
btnSave: {
defaultColor: '#007046',
hoverColor: '#76f190',
},
btnRead: {
defaultColor: '#007046',
hoverColor: '#76f190',
},
btnLoad: {
defaultColor: '#fc5531',
hoverColor: '#f28b54',
},
btnWrite: {
defaultColor: '#fc5531',
hoverColor: '#f28b54',
},
},
names: {
btnSmall: {
radius: 80,
defaultLabel: '#ffffff',
hoverLabel: '#ffffff',
}
}
},
} }
} }
} }
@@ -97,9 +188,12 @@ const dark = {
[pages.SUMMARY]: "default/summary", [pages.SUMMARY]: "default/summary",
[pages.ACHIEVEMENT]: "default/achievement", [pages.ACHIEVEMENT]: "default/achievement",
[pages.THANKS]: "default/thanks", [pages.THANKS]: "default/thanks",
[pages.THEMES]: 'themes',
[pages.SAVELOAD]: 'saveload',
}, },
popups: { popups: {
[popups.ACHIEVEMENT]: "default/popup/achievementPopup", [popups.ACHIEVEMENT]: "default/popup/achievementPopup",
[popups.MESSAGE]: "message",
}, },
configs: { configs: {
bgColor: '#222831', bgColor: '#222831',
@@ -107,12 +201,26 @@ const dark = {
defaultFontColor: '#eeeeee', defaultFontColor: '#eeeeee',
trajectoryItem: { trajectoryItem: {
box: { box: {
defaultColor: '#4a5361',
defaultStroke: '#4a5361',
hoverColor: '#4a5361',
hoverStroke: '#4a5361',
filters: ()=>[new Laya.GlowFilter("#eeeeee", 8, 0, 0)], filters: ()=>[new Laya.GlowFilter("#eeeeee", 8, 0, 0)],
}, },
grade: [
{
defaultColor: '#4a5361',
hoverColor: '#4a5361',
},
{
defaultColor: '#1160b0',
hoverColor: '#1160b0',
},
{
defaultColor: '#9379ca',
hoverColor: '#9379ca',
},
{
defaultColor: '#ab6157',
hoverColor: '#ab6157',
},
],
ageColor: '#ffffee', ageColor: '#ffffee',
contentColor: '#eeeeee', contentColor: '#eeeeee',
}, },
@@ -337,10 +445,23 @@ const dark = {
[pages.MAIN]: { [pages.MAIN]: {
vars: { vars: {
btnRemake: 'btn_main', btnRemake: 'btn_main',
labTitle: 'title', btnThemes: {
labSubTitle: 'title', defaultColor: '#cccccc',
radius: 100,
},
btnSaveLoad: {
defaultColor: '#5865f2',
defaultStroke: '#eeeeee',
defaultLabel: '#eeeeee',
hoverColor: '#1160b0',
hoverStroke: '#eeeeee',
hoverLabel: '#eeeeee',
lineWidth: 0,
radius: 100,
},
}, },
names: { names: {
title: 'title',
btnSmall: 'btn_small', btnSmall: 'btn_small',
} }
}, },
@@ -445,7 +566,56 @@ const dark = {
radius: 4, radius: 4,
}, },
}, },
} },
[pages.THEMES]: {
vars: {
btnOK: {
defaultColor: '#28b070',
defaultLabel: '#ffffff',
hoverColor: '#00ff00',
hoverLabel: '#ffffff',
radius: 80,
},
btnClose: {
defaultColor: '#eb3941',
defaultLabel: '#ffffff',
hoverColor: '#ff0000',
hoverLabel: '#ffffff',
radius: 80,
},
}
},
[pages.SAVELOAD]: {
vars: {
btnClose: {
defaultColor: '#eb3941',
hoverColor: '#ff0000',
},
btnSave: {
defaultColor: '#007046',
hoverColor: '#76f190',
},
btnRead: {
defaultColor: '#007046',
hoverColor: '#76f190',
},
btnLoad: {
defaultColor: '#fc5531',
hoverColor: '#f28b54',
},
btnWrite: {
defaultColor: '#fc5531',
hoverColor: '#f28b54',
},
},
names: {
btnSmall: {
radius: 80,
defaultLabel: '#ffffff',
hoverLabel: '#ffffff',
}
}
},
}, },
popups: { popups: {
[popups.ACHIEVEMENT]: { [popups.ACHIEVEMENT]: {
@@ -472,9 +642,12 @@ const light = {
[pages.SUMMARY]: "default/summary", [pages.SUMMARY]: "default/summary",
[pages.ACHIEVEMENT]: "default/achievement", [pages.ACHIEVEMENT]: "default/achievement",
[pages.THANKS]: "default/thanks", [pages.THANKS]: "default/thanks",
[pages.THEMES]: 'themes',
[pages.SAVELOAD]: 'saveload',
}, },
popups: { popups: {
[popups.ACHIEVEMENT]: "default/popup/achievementPopup", [popups.ACHIEVEMENT]: "default/popup/achievementPopup",
[popups.MESSAGE]: "message",
}, },
configs: { configs: {
bgColor: '#ffffff', bgColor: '#ffffff',
@@ -484,6 +657,21 @@ const light = {
box: { box: {
filters: ()=>[new Laya.GlowFilter("#b1b1b1", 8, 0, 0)], filters: ()=>[new Laya.GlowFilter("#b1b1b1", 8, 0, 0)],
}, },
grade: [
{},
{
defaultColor: '#55fffe',
hoverColor: '#55fffe',
},
{
defaultColor: '#b17cff',
hoverColor: '#b17cff',
},
{
defaultColor: '#ffce45',
hoverColor: '#ffce45',
},
],
ageColor: '#000000', ageColor: '#000000',
contentColor: '#000000', contentColor: '#000000',
}, },
@@ -706,10 +894,23 @@ const light = {
[pages.MAIN]: { [pages.MAIN]: {
vars: { vars: {
btnRemake: 'btn_main', btnRemake: 'btn_main',
labTitle: 'title', btnThemes: {
labSubTitle: 'title', defaultColor: '#cccccc',
radius: 100,
},
btnSaveLoad: {
defaultColor: '#5865f2',
defaultStroke: '#eeeeee',
defaultLabel: '#eeeeee',
hoverColor: '#1160b0',
hoverStroke: '#eeeeee',
hoverLabel: '#eeeeee',
lineWidth: 0,
radius: 100,
},
}, },
names: { names: {
title: 'title',
btnSmall: 'btn_small', btnSmall: 'btn_small',
} }
}, },
@@ -814,7 +1015,56 @@ const light = {
radius: 4, radius: 4,
} }
}, },
} },
[pages.THEMES]: {
vars: {
btnOK: {
defaultColor: '#28b070',
defaultLabel: '#ffffff',
hoverColor: '#00ff00',
hoverLabel: '#ffffff',
radius: 80,
},
btnClose: {
defaultColor: '#eb3941',
defaultLabel: '#ffffff',
hoverColor: '#ff0000',
hoverLabel: '#ffffff',
radius: 80,
},
}
},
[pages.SAVELOAD]: {
vars: {
btnClose: {
defaultColor: '#eb3941',
hoverColor: '#ff0000',
},
btnSave: {
defaultColor: '#007046',
hoverColor: '#76f190',
},
btnRead: {
defaultColor: '#007046',
hoverColor: '#76f190',
},
btnLoad: {
defaultColor: '#fc5531',
hoverColor: '#f28b54',
},
btnWrite: {
defaultColor: '#fc5531',
hoverColor: '#f28b54',
},
},
names: {
btnSmall: {
radius: 80,
defaultLabel: '#ffffff',
hoverLabel: '#ffffff',
}
}
},
}, },
popups: { popups: {
[popups.ACHIEVEMENT]: { [popups.ACHIEVEMENT]: {

View File

@@ -7,7 +7,6 @@ export default class UIManager {
stage = Laya.stage; stage = Laya.stage;
} }
this.#stage = stage; this.#stage = stage;
this.theme = 'default';
stage.addChild(this.#viewLayer); stage.addChild(this.#viewLayer);
this.#viewLayer.zOrder = 1; this.#viewLayer.zOrder = 1;
@@ -26,7 +25,16 @@ export default class UIManager {
this.#popupLayer.top = this.#popupLayer.top =
this.#popupLayer.bottom = this.#popupLayer.bottom =
this.#popupLayer.left = this.#popupLayer.left =
this.#popupLayer.right = 0; this.#popupLayer.right =
this.#dialogMask.top =
this.#dialogMask.bottom =
this.#dialogMask.left =
this.#dialogMask.right = 0;
this.#dialogMask.graphics.drawRect(0, 0, 5000, 5000, '#000000');
this.#dialogMask.alpha = 0.4;
this.#dialogMask.on(Laya.Event.CLICK, this, ()=>{
this.#dialogStack[this.#dialogStack.length - 1]?.close?.();
})
} }
static #instance = {}; static #instance = {};
@@ -37,9 +45,10 @@ export default class UIManager {
#viewLayer = new Laya.Panel(); #viewLayer = new Laya.Panel();
#dialogLayer = new Laya.Panel(); #dialogLayer = new Laya.Panel();
#popupLayer = new Laya.Panel(); #popupLayer = new Laya.Panel();
#dialogMask = new Laya.Sprite();
#viewMap = new Map(); #viewMap = new Map();
#class = new Map(); #class = new Map();
#theme = 'default'; #dialogStack = [];
static get inst() { static get inst() {
return this.getInstance(); return this.getInstance();
@@ -95,8 +104,12 @@ export default class UIManager {
// check if view is already loaded // check if view is already loaded
let view = await this.#viewMap.get(className); let view = await this.#viewMap.get(className);
let timeout;
if(this.#loading) { if(this.#loading) {
this.#stage.addChild(this.#loading); timeout = setTimeout(
()=>this.#stage.addChild(this.#loading),
3000
);
} }
const onProgress = this.#loading?.onProgress; const onProgress = this.#loading?.onProgress;
@@ -121,7 +134,7 @@ export default class UIManager {
const resourceList = await view.constructor.load?.(args); const resourceList = await view.constructor.load?.(args);
await this.loadRes(resourceList, preload, onProgress); await this.loadRes(resourceList, preload, onProgress);
} }
if(timeout) clearTimeout(timeout);
this.#loading?.removeSelf(); this.#loading?.removeSelf();
this.#config(view, viewName, type); this.#config(view, viewName, type);
@@ -151,22 +164,55 @@ export default class UIManager {
} }
} }
#showDialogStack() {
if(this.#dialogStack.length == 0) {
this.#dialogLayer.visible = false;
return;
}
this.#dialogLayer.visible = true;
this.#dialogStack.forEach((dialog, i)=>{
this.#dialogLayer.addChild(dialog);
dialog.zOrder = i;
})
this.#dialogLayer.addChild(this.#dialogMask);
const l = this.#dialogStack.length;
this.#dialogMask.zOrder = l -1;
this.#dialogStack[l -1].zOrder = l;
}
async showDialog(dialogName, args, actions) { async showDialog(dialogName, args, actions) {
const className = this.#pages[dialogName]; const className = this.#pages[dialogName];
const dialog = await this.getView(className, args, actions?.load, viewName, 'pages'); const dialog = await this.getView(className, args, actions?.load, dialogName, 'pages');
dialog.init(args); const index = this.#dialogStack.indexOf(dialog);
this.#dialogLayer.addChild(dialog); if(index != -1) {
this.#dialogStack.splice(index, 1);
}
this.#dialogStack.push(dialog);
dialog.init?.(args);
dialog.centerX = dialog.centerY = 0;
this.#showDialogStack();
const open = actions?.open || (async () => { const open = actions?.open || (async () => {
this.#dialogLayer.scaleX = 0; dialog.scaleX = 0;
this.#dialogLayer.scaleY = 0; dialog.scaleY = 0;
await Laya.promises.Tween.to(dialog, { scaleX: 1, scaleY: 1 }, 300, Laya.Ease.backOut); await Laya.promises.Tween.to(dialog, { scaleX: 1, scaleY: 1 }, 300, Laya.Ease.backOut);
}); });
await open(dialog); await open(dialog);
dialog.close = actions?.close || (async () => { dialog.mouseThrough = true;
await Laya.promises.Tween.to(dialog, { scaleX: 0, scaleY: 0 }, 300, Laya.Ease.backOut); dialog.mouseEnabled = true;
});; dialog.close = async ()=>{
if(actions?.close) {
await actions.close();
} else {
await Laya.promises.Tween.to(dialog, { scaleX: 0, scaleY: 0 }, 300, Laya.Ease.strongIn);
}
const index = this.#dialogStack.indexOf(dialog);
if(index != -1) {
this.#dialogStack.splice(index, 1);
}
this.#showDialogStack();
}
this.#dialogLayer.addChild(dialog); this.#dialogLayer.addChild(dialog);
} }
@@ -180,7 +226,8 @@ export default class UIManager {
} }
clearAllDialog() { clearAllDialog() {
this.#dialogLayer.removeChildren(); this.#dialogStack = [];
this.#showDialogStack();
} }
#config(view, key, type) { #config(view, key, type) {
@@ -279,23 +326,27 @@ export default class UIManager {
return this.#currentView; return this.#currentView;
} }
get currentDialog() {
return this.#dialogStack[this.#dialogStack.length -1];
}
get theme() { get theme() {
return this.#theme; return localStorage.getItem('theme');
} }
set theme(value) { set theme(value) {
this.#theme = value; localStorage.setItem('theme', value);
this.#stage.bgColor = this.#configs.bgColor; this.#stage.bgColor = this.#configs.bgColor;
document?.querySelector?.('meta[name="theme-color"]')?.setAttribute?.('content', this.#configs.bgColor); document?.querySelector?.('meta[name="theme-color"]')?.setAttribute?.('content', this.#configs.bgColor);
} }
get #pages() { get #pages() {
return UIManager.theme(this.#theme, 'pages'); return UIManager.theme(this.theme, 'pages');
} }
get #popups() { get #popups() {
return UIManager.theme(this.#theme, 'popups'); return UIManager.theme(this.theme, 'popups');
} }
get #configs() { get #configs() {
return UIManager.theme(this.#theme, 'configs'); return UIManager.theme(this.theme, 'configs');
} }
get common() { get common() {
return this.#configs.common; return this.#configs.common;

906
view/halloween.css Normal file
View File

@@ -0,0 +1,906 @@
@media (min-width:640px){html{font-size:24px;}}
@media (min-width:631px) and (max-width:639px){html{font-size:23.66px;}}
@media (min-width:622px) and (max-width:630px){html{font-size:23.33px;}}
@media (min-width:613px) and (max-width:621px){html{font-size:23px;}}
@media (min-width:604px) and (max-width:612px){html{font-size:22.66px;}}
@media (min-width:595px) and (max-width:603px){html{font-size:22.33px;}}
@media (min-width:586px) and (max-width:594px){html{font-size:22px;}}
@media (min-width:577px) and (max-width:585px){html{font-size:21.66px;}}
@media (min-width:568px) and (max-width:576px){html{font-size:21.33px;}}
@media (min-width:559px) and (max-width:567px){html{font-size:21px;}}
@media (min-width:550px) and (max-width:558px){html{font-size:20.66px;}}
@media (min-width:541px) and (max-width:549px){html{font-size:20.33px;}}
@media (min-width:533px) and (max-width:540px){html{font-size:20px;}}
@media (min-width:524px) and (max-width:532px){html{font-size:19.66px;}}
@media (min-width:515px) and (max-width:523px){html{font-size:19.33px;}}
@media (min-width:506px) and (max-width:514px){html{font-size:19px;}}
@media (min-width:497px) and (max-width:505px){html{font-size:18.66px;}}
@media (min-width:488px) and (max-width:496px){html{font-size:18.33px;}}
@media (min-width:480px) and (max-width:487px){html{font-size:18px;}}
@media (min-width:471px) and (max-width:479px){html{font-size:17.66px;}}
@media (min-width:462px) and (max-width:470px){html{font-size:17.33px;}}
@media (min-width:453px) and (max-width:461px){html{font-size:17px;}}
@media (min-width:444px) and (max-width:452px){html{font-size:17.12px;}}
@media (min-width:435px) and (max-width:443px){html{font-size:16.33px;}}
@media (min-width:426px) and (max-width:434px){html{font-size:16px;}}
@media (min-width:417px) and (max-width:425px){html{font-size:15.66px;}}
@media (min-width:408px) and (max-width:416px){html{font-size:15.33px;}}
@media (min-width:400px) and (max-width:407px){html{font-size:15px;}}
@media (min-width:391px) and (max-width:399px){html{font-size:14.66px;}}
@media (min-width:382px) and (max-width:390px){html{font-size:14.33px;}}
@media (min-width:374px) and (max-width:381px){html{font-size:14px;}}
@media (min-width:365px) and (max-width:373px){html{font-size:13.66px;}}
@media (min-width:356px) and (max-width:364px){html{font-size:13.33px;}}
@media (min-width:347px) and (max-width:355px){html{font-size:13px;}}
@media (min-width:338px) and (max-width:346px){html{font-size:12.66px;}}
@media (min-width:329px) and (max-width:337px){html{font-size:12.44px;}}
@media (max-width:328px){html{font-size:12px;}}
@font-face {
font-family: 'iconfont';
src: url('iconfont.woff2?t=1628944689555') format('woff2'),
url('iconfont.woff?t=1628944689555') format('woff'),
url('iconfont.ttf?t=1628944689555') format('truetype');
}
* {
margin: 0;
padding: 0;
}
input::-webkit-outer-spin-button,
input::-webkit-inner-spin-button {
-webkit-appearance: none;
}
input[type="number"]{
-moz-appearance: textfield;
}
html {
background-color: #241619;
font-family: PingFangSC, 'Noto Sans CJK SC', 'MS Yahei';
}
body {
user-select: none;
}
#main {
display: flex;
flex-direction: column;
width: 100%;
max-width: 30rem;
height: 100%;
text-align: center;
box-sizing: border-box;
position: relative;
}
#title {
position: fixed;
font-size: 3rem;
font-weight: 700;
top: 35%;
left: 50%;
white-space: nowrap;
transform: translate(-50%, -50%);
color: #ff9f27;
}
#restart {
position: fixed;
top: 65%;
left: 50%;
transform: translate(-50%, -50%);
}
#restart .iconfont {
margin-right: 0.5rem;
}
#next {
display: none;
}
#talentSelectedView {
flex: 0 1 auto;
}
.mainbtn {
margin: 0.5rem 1rem 1rem;
padding: 0.5rem 1.5rem;
background-color: #4a0388;
border: 1px #4a0388 solid;
border-radius: 0.2rem;
color: #ff197b;
font-size: 1.6rem;
white-space: nowrap;
cursor: pointer;
}
.mainbtn:hover {
background: #fd373c;
color: #4a0388;
transition: all .4s ease 0s;
}
.btn-area {
display: flex;
flex-direction: row;
}
.btn-area>.mainbtn {
flex: 1;
}
.iconfont {
display: inline-block;
vertical-align: middle;
font-family: "iconfont" !important;
font-style: normal;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.sponsor,
#rank,
#specialthanks,
#achievement {
position: fixed;
top: 4rem;
right: 1rem;
padding: 0.1rem;
width: 6rem;
border: none;
border-radius: 0.2rem;
background-color: #1a0c18;
font-size: 1.4rem;
color: #ff9f27;
cursor: pointer;
z-index:2;
word-wrap: none;
}
#specialthanks {
background-color: #1a0c18;
top: 1rem;
}
.sponsor {
top: auto;
bottom: 0;
width: auto;
padding: 0.5rem;
}
#rank {
position: absolute;
top: 50%;
right: 1.5rem;
transform: translateY(-50%);
}
#spthx {
position: fixed;
display: grid;
top: 4rem;
bottom: 5rem;
left: 50%;
width: 30rem;
max-width: calc(100% - 2rem);
transform: translateX(-50%);
}
#spthx ul {
list-style-type: none;
padding: 0;
}
#spthx ul li {
margin: 0;
}
#spthx ul.g1 {
display: grid;
max-block-size: 9rem;
max-height: 9rem;
overflow: scroll;
}
#spthx ul.g1 li {
display: inline-grid;
background-color: orange;
margin-bottom: 0.5rem;
padding: 0.2rem 0;
grid-template-columns: 7rem auto;
}
#spthx ul.g1 li .name {
padding: 0 0.5rem;
font-weight: 700;
}
#spthx ul.g1 li .comment {
padding: 0 0.5rem;
}
#spthx ul.g2 {
color: white;
display: grid;
grid-template-columns: 50% 50%;
overflow: scroll;
}
#spthx ul.g2 li {
text-align: center;
}
.title {
color: #ff9f27;
position: relative;
font-size: 1.5rem;
font-weight: 700;
padding: 1rem;
}
ul#total,
#achievements {
list-style-type: none;
display: grid;
justify-items: center;
grid-template-columns: 50% 50%;
grid-auto-columns: max-content;
justify-content: center;
}
ul#total li,
#achievements li {
position: relative;
color: #ff9f27;
display: inline-grid;
margin: 0.5rem;
width: 12rem;
height: 6rem;
align-items: center;
}
ul#total li .achievementtitle,
#achievements li .achievementtitle{
font-weight: 700;
font-size: 1.2rem;
}
#achievements {
overflow: scroll;
}
#save,
#load,
#themeToggleBtn {
padding: 0 0.7rem;
width: 6.5rem;
background-color: #1a0c18;
border: none;
border-radius: 4px;
font-size: 1.4rem;
color: #ff9f27;
line-height: 2.5rem;
text-align: center;
vertical-align: middle;
cursor: pointer;
position: fixed;
z-index:2;
right: 0.5rem;
bottom: 0.5rem;
}
#themeToggleBtn {
display: none;
}
#save {
bottom: 3.5rem;
}
.head {
display: flex;
flex-direction: column;
justify-content: center;
height: 5.2rem;
font-size: 1.4rem;
white-space: nowrap;
color: #ff9f27;
}
.propinitial,
.selectlist {
list-style: none;
flex: 1;
padding: 1rem;
}
.lifeProperty {
list-style: none;
padding: 2rem 1rem 0.5rem 1rem;
display: flex;
color: #fd373c;
overflow: auto;
}
.lifeProperty>li {
flex: 1;
margin: 0.1rem 2px;
display: flex;
flex-direction: column;
border: 1px #fd373c solid;
border-radius: 0.2rem;
font-size: 1rem;
position: relative;
}
.lifeProperty>li>span:last-child {
background: #fd373c;
color: #4a0388;
}
.selectlist>li {
margin-bottom: 0.6rem;
display: block;
border: 1px #ff9f27 solid;
border-radius: 0.2rem;
color: #ff9f27;
font-size: 1.2rem;
line-height: 1.6;
user-select: none;
position: relative;
cursor: pointer;
}
.selectlist>li:last-child {
margin-bottom: 0;
}
.achvg0,
.grade0b {
background-color: #231815;
border: #ff9f27 2px solid !important;
color: #ff9f27 !important;
}
.achvg1,
.grade1b {
background-color: #3b3894;
border: #ff9f27 2px solid !important;
}
.achvg2,
.grade2b {
background-color: #470063;
border: #ff9f27 2px solid !important;
}
.achvg3,
.grade3b {
background-color: #f73c47;
border: #ff9f27 2px solid !important;
color: #f8ea8b !important;
}
.mask::before {
display: block;
content: " ";
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: #241619;
opacity: 0.5;
}
@media (min-width:1080px) {
.grade0b:hover {
background-color: #452915;
transition: all .3s ease 0s;
}
.grade1b:hover {
background-color: #5553b3;
transition: all .3s ease 0s;
}
.grade2b:hover {
background-color: #672183;
transition: all .3s ease 0s;
}
.grade3b:hover {
background-color: #ff8561;
transition: all .3s ease 0s;
}
}
.grade0b.selected,
.grade1b.selected,
.grade2b.selected,
.grade3b.selected {
box-shadow: #f74745 8px 4px 4px;
overflow: hidden;
}
.grade0b.selected::after,
.grade1b.selected::after,
.grade2b.selected::after,
.grade3b.selected::after {
content: '';
position: absolute;
background-color: #fe028b;
top: 0;
bottom: 0;
left: 0;
right: 0;
box-shadow: 0 0 10px #fe028b;
opacity: 0;
animation: blink 3s linear infinite;
}
@keyframes blink {
0% {
opacity: 0;
transform: translateX(-150%);
}
50% {
opacity: .2;
}
100% {
opacity: 0;
transform: translateX(150%);
}
}
.grade0b.selected {
background-color: #452915 !important;
}
.grade1b.selected {
background-color: #5553b3!important;
}
.grade2b.selected {
background-color: #672183 !important;
}
.grade3b.selected {
background-color: #ff8561 !important;
}
.propinitial {
display: flex;
flex-direction: column;
justify-content: center;
}
.propbtn:hover {
color: #5c5c5c;
transition: all .2s ease 0s;
}
.propinitial>li {
position: relative;
margin: 0.1rem auto;
padding: 0.2rem;
display: inline-block;
border-radius: 0.2rem;
color: #ff9f27;
font-size: 1.6rem;
line-height: 2;
}
.propinitial>li>input {
height: 2.2rem;
width: 2.2rem;
margin: 0 0.5rem;
padding: 0;
font-size: 2rem;
border: 0.1rem #ff9f27 solid;
background-color: #393E46;
color: #ff9f27;
text-align: center;
}
.propbtn {
position: relative;
cursor: pointer;
font-size: 2rem;
color: #ff9f27;
}
.judge>li>span:nth-child(1),
.lifeTrajectory>li>span:nth-child(1) {
width: 5rem;
text-align: right;
}
.judge>li>span:nth-child(2),
.lifeTrajectory>li>span:nth-child(2) {
flex: 1;
text-align: left;
}
.lifeTrajectory {
flex: 1;
margin: 0.5rem 1rem;
padding: 0;
border: 1px #ff9f27 solid;
background-color: #241619;
border-radius: 4px;
overflow: auto;
}
.lifeTrajectory>li {
margin: 10px 0;
padding: 5px 10px;
display: flex;
background-color: #231815;
box-shadow: #ff9f27 0 0 0.4rem;
color: #ff9f27;
font-size: 1rem;
position: relative;
}
.judge {
list-style: none;
flex: 1;
margin: 1rem;
display: flex;
flex-direction: column;
border: 1px solid #ff9f27;
border-radius: 4px;
overflow: scroll;
}
.judge>li {
flex: 1;
display: flex;
align-items: center;
background-color: #231815;
border-bottom: 1px solid #ff9f27;
box-shadow: none;
color: #ff9f27;
}
.judge>li:last-child {
border-bottom: 0
}
.judge>li.grade1 span,
.judge>li.grade1 {
background-color: #3b3894;
}
.judge>li.grade2 span,
.judge>li.grade2 {
background-color: #470063;
}
.judge>li.grade3 span,
.judge>li.grade3 {
background-color: #f73c47;
color: #f8ea8b !important;
}
@import url("https://fonts.googleapis.com/css?family=Montserrat:400,400i,700");
:root {
font-family: "Montserrat";
}
html,
body {
margin: 0;
height: 100%;
}
body {
display: flex;
align-items: center;
justify-content: center;
}
i {
color: inherit;
}
.banners-container {
position: fixed;
top: 0;
left: 0;
width: 100%;
z-index: 9;
}
.banner {
color: white;
font-weight: 700;
padding: 2rem;
display: flex;
flex-direction: row;
align-items: center;
}
.banner .banner-message {
flex: 1;
padding: 0 2rem;
word-break: break-word;
overflow: auto;
}
.banner .banner-close {
display: flex;
align-items: center;
justify-content: center;
padding: 0.1rem;
border-radius: 4px;
cursor: pointer;
transition: background 0.3s;
}
.banner .iconfont {
font-size: 2rem;
}
.banner .banner-close:hover {
background: rgba(0, 0, 0, 0.12);
}
.banner.success {
background: #c101f9;
}
.banner.success::after {
background: #c101f9;
}
.banner.error {
background: #ff3a3f;
}
.banner.error::after {
background: #ff3a3f;
}
.banner.info {
background: #282366;
}
.banner.info::after {
background: #282366;
}
.banner::after {
content: "";
position: absolute;
height: 10%;
width: 100%;
bottom: 100%;
left: 0;
}
.banner:not(.visible) {
display: none;
transform: translateY(-100%);
}
.banner.visible {
box-shadow: 0 2px 2px 2px rgba(0, 0, 0, 0.12);
animation-name: banner-in;
animation-direction: forwards;
animation-duration: 0.6s;
animation-timing-function: ease-in-out;
animation-fill-mode: forwards;
animation-iteration-count: 1;
}
@keyframes banner-in {
0% {
transform: translateY(-100%);
}
50% {
transform: translateY(10%);
}
100% {
transform: translateY(0);
}
}
.show-banner {
appearance: none;
background: #ededed;
border: 0;
padding: 1rem 2rem;
border-radius: 4px;
cursor: pointer;
text-transform: uppercase;
margin: 0.25rem;
}
/**
* @license
* Copyright Akveo. All Rights Reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*/
.eva-animation {
animation-duration: 1s;
animation-fill-mode: both;
}
.eva-infinite {
animation-iteration-count: infinite;
}
.eva-icon-shake {
animation-name: eva-shake;
}
.eva-icon-zoom {
animation-name: eva-zoomIn;
}
.eva-icon-pulse {
animation-name: eva-pulse;
}
.eva-icon-flip {
animation-name: eva-flipInY;
}
.eva-hover {
display: inline-block;
}
.eva-hover:hover .eva-icon-hover-shake,
.eva-parent-hover:hover .eva-icon-hover-shake {
animation-name: eva-shake;
}
.eva-hover:hover .eva-icon-hover-zoom,
.eva-parent-hover:hover .eva-icon-hover-zoom {
animation-name: eva-zoomIn;
}
.eva-hover:hover .eva-icon-hover-pulse,
.eva-parent-hover:hover .eva-icon-hover-pulse {
animation-name: eva-pulse;
}
.eva-hover:hover .eva-icon-hover-flip,
.eva-parent-hover:hover .eva-icon-hover-flip {
animation-name: eva-flipInY;
}
@keyframes eva-flipInY {
from {
transform: perspective(400px) rotate3d(0, 1, 0, 90deg);
animation-timing-function: ease-in;
opacity: 0;
}
40% {
transform: perspective(400px) rotate3d(0, 1, 0, -20deg);
animation-timing-function: ease-in;
}
60% {
transform: perspective(400px) rotate3d(0, 1, 0, 10deg);
opacity: 1;
}
80% {
transform: perspective(400px) rotate3d(0, 1, 0, -5deg);
}
to {
transform: perspective(400px);
}
}
@keyframes eva-shake {
from,
to {
transform: translate3d(0, 0, 0);
}
10%,
30%,
50%,
70%,
90% {
transform: translate3d(-3px, 0, 0);
}
20%,
40%,
60%,
80% {
transform: translate3d(3px, 0, 0);
}
}
@keyframes eva-pulse {
from {
transform: scale3d(1, 1, 1);
}
50% {
transform: scale3d(1.2, 1.2, 1.2);
}
to {
transform: scale3d(1, 1, 1);
}
}
@keyframes eva-zoomIn {
from {
opacity: 1;
transform: scale3d(0.5, 0.5, 0.5);
}
50% {
opacity: 1;
}
}
::-webkit-scrollbar {
width: 0 !important
}
.deleteFixed {
margin: 0;
padding: 0.5rem 1rem;
border: 0;
border-radius: 0;
overflow: visible;
}
.operateBtn {
padding: 0.5rem 1.5rem;
border: 1px #EEEEEE solid;
border-radius: 0.2rem;
background-color:#393E46;
font-size: 1.6rem;
white-space: nowrap;
transform: translate(-50%,-50%);
cursor: pointer;
z-index:2;
color: #EEEEEE;
}
.operateBtn:hover {
background: #ff7878;
color: #fff;
transition: all .4s ease 0s;
}
.domToImage2wx {
position: fixed;
z-index: 1111;
width: 100%;
}
.domToImage2wx img {
width: 100%;
}
.github-corner,
.discord-btn {
background-color: #1a0c18 !important;
color: #ff9f27 !important;
}
.github-corner > svg path.octo-arm,
.github-corner > svg path.octo-body,
.discord-btn > svg > g > path {
fill: #ff9f27 !important;
}

View File

@@ -3537,10 +3537,10 @@ uuid@^3.4.0:
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
v-transform@^1.0.1: v-transform@^1.0.2:
version "1.0.1" version "1.0.2"
resolved "https://registry.yarnpkg.com/v-transform/-/v-transform-1.0.1.tgz#380dd837e3b14189ccc47aafa8e675601403f2f2" resolved "https://registry.yarnpkg.com/v-transform/-/v-transform-1.0.2.tgz#93f5be5e7ea6f070d544ab3d96569bace91c754d"
integrity sha512-F1VBbBLoFkFdpxFiHCq5neSoBsfFPDbecye5+B5OjE05U0K2RcdZR7lFkziqo1WP4Do36lUjN5Ok/E6GLUJgiQ== integrity sha512-oBl76Q/JWVvglT3yHujWj6uNS4QygAERhdcdPKHpd47+K9+gotBUvCrdiVnizLscLzsz8GGi/KlOwZHnm9STxA==
dependencies: dependencies:
commander "^8.2.0" commander "^8.2.0"
xlsx "^0.17.1" xlsx "^0.17.1"