Compare commits
14 Commits
eb02d1ee6f
...
v2.0.0-bet
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
150c991648 | ||
|
|
99640a5813 | ||
|
|
485c1bb48c | ||
|
|
5799cf635b | ||
|
|
066f1fd060 | ||
|
|
162eaffd1d | ||
|
|
b5a4db5224 | ||
|
|
09b3aeb8c5 | ||
|
|
c83ceef3c4 | ||
|
|
221e5219f0 | ||
|
|
145dfe964d | ||
|
|
bf9702e3a1 | ||
|
|
b3f1e6c9c5 | ||
|
|
960f3137c6 |
2
.dockerignore
Normal file
@@ -0,0 +1,2 @@
|
||||
node_modules
|
||||
npm-debug.log
|
||||
15
Dockerfile
Normal 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"]
|
||||
|
||||
BIN
laya/assets/images/icons/icon_save.png
Normal file
|
After Width: | Height: | Size: 652 B |
BIN
laya/assets/images/icons/icon_themes.png
Normal file
|
After Width: | Height: | Size: 4.3 KiB |
BIN
laya/assets/images/radio/radio_cyber.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
laya/assets/images/radio/radio_dark.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
laya/assets/images/radio/radio_light.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
laya/assets/images/texture/texture_1.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
1
laya/pages/particle/fly.part
Normal 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}
|
||||
@@ -2,7 +2,7 @@
|
||||
"x":0,
|
||||
"type":"View",
|
||||
"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},
|
||||
"nodeParent":-1,
|
||||
"label":"View",
|
||||
@@ -18,14 +18,13 @@
|
||||
"props":{"var":"imgBg","skin":"images/background/background_1@3x.png","name":"imgBg","centerY":0,"centerX":0},
|
||||
"nodeParent":1,
|
||||
"label":"Image(imgBg)",
|
||||
"isOpen":true,
|
||||
"isOpen":false,
|
||||
"isDirectory":true,
|
||||
"isAniNode":true,
|
||||
"hasChild":true,
|
||||
"compId":67,
|
||||
"child":[
|
||||
{
|
||||
"x":30,
|
||||
"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},
|
||||
"nodeParent":67,
|
||||
@@ -131,7 +130,7 @@
|
||||
{
|
||||
"x":15,
|
||||
"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,
|
||||
"label":"Label",
|
||||
"isDirectory":false,
|
||||
@@ -474,14 +473,13 @@
|
||||
"props":{"y":0,"x":1100,"width":1,"top":0,"right":0,"height":1},
|
||||
"nodeParent":1,
|
||||
"label":"Box",
|
||||
"isOpen":true,
|
||||
"isOpen":false,
|
||||
"isDirectory":true,
|
||||
"isAniNode":true,
|
||||
"hasChild":true,
|
||||
"compId":84,
|
||||
"child":[
|
||||
{
|
||||
"x":30,
|
||||
"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},
|
||||
"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":[
|
||||
{
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"x":0,
|
||||
"type":"View",
|
||||
"selectedBox":14,
|
||||
"selecteID":13,
|
||||
"selectedBox":88,
|
||||
"selecteID":153,
|
||||
"props":{"width":1125,"sceneColor":"#000000","sceneBg":"laya/views/view/CyberTheme/CyberTrajectory.png","runtime":"Laya.runtime.ViewBase","height":2436},
|
||||
"nodeParent":-1,
|
||||
"label":"View",
|
||||
@@ -550,14 +550,13 @@
|
||||
"props":{"right":0,"left":0,"height":1,"bottom":-1},
|
||||
"nodeParent":1,
|
||||
"label":"Box",
|
||||
"isOpen":true,
|
||||
"isOpen":false,
|
||||
"isDirectory":true,
|
||||
"isAniNode":true,
|
||||
"hasChild":true,
|
||||
"compId":14,
|
||||
"child":[
|
||||
{
|
||||
"x":30,
|
||||
"type":"Button",
|
||||
"props":{"y":-155,"width":500,"var":"btnSummary","skin":"images/button/button_main@3x.png","name":"btnSummary","label":"UI_Goto_Summary","centerX":0},
|
||||
"nodeParent":14,
|
||||
@@ -569,7 +568,6 @@
|
||||
"compId":13,
|
||||
"child":[
|
||||
{
|
||||
"x":45,
|
||||
"type":"Box",
|
||||
"props":{},
|
||||
"nodeParent":13,
|
||||
@@ -750,7 +748,6 @@
|
||||
}]
|
||||
},
|
||||
{
|
||||
"x":45,
|
||||
"type":"Box",
|
||||
"props":{},
|
||||
"nodeParent":13,
|
||||
@@ -824,7 +821,6 @@
|
||||
"$HIDDEN":false
|
||||
},
|
||||
{
|
||||
"x":30,
|
||||
"type":"Box",
|
||||
"props":{"y":-155,"var":"boxSpeed","right":100,"name":"boxSpeed","left":100,"height":150,"anchorY":0.5,"anchorX":0.5},
|
||||
"nodeParent":14,
|
||||
@@ -836,7 +832,6 @@
|
||||
"compId":104,
|
||||
"child":[
|
||||
{
|
||||
"x":45,
|
||||
"type":"ProgressBar",
|
||||
"props":{"var":"prgSpeed","skin":"images/progress/progress_s.png","right":0,"name":"prgSpeed","left":0,"bottom":0},
|
||||
"nodeParent":104,
|
||||
@@ -849,7 +844,6 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"x":45,
|
||||
"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},
|
||||
"nodeParent":104,
|
||||
@@ -862,7 +856,6 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"x":45,
|
||||
"type":"Label",
|
||||
"props":{"text":"UI_Manual","fontSize":50,"font":"方正像素12","color":"#55fffe","bottom":70},
|
||||
"nodeParent":104,
|
||||
@@ -875,7 +868,6 @@
|
||||
]
|
||||
},
|
||||
{
|
||||
"x":45,
|
||||
"type":"Label",
|
||||
"props":{"text":"UI_Auto","right":0,"fontSize":50,"font":"方正像素12","color":"#55fffe","bottom":70},
|
||||
"nodeParent":104,
|
||||
@@ -934,13 +926,14 @@
|
||||
"props":{"var":"vboxTrajectory","top":0,"right":40,"name":"vboxTrajectory","left":20},
|
||||
"nodeParent":18,
|
||||
"label":"VBox(vboxTrajectory)",
|
||||
"isOpen":false,
|
||||
"isOpen":true,
|
||||
"isDirectory":true,
|
||||
"isAniNode":true,
|
||||
"hasChild":true,
|
||||
"compId":17,
|
||||
"child":[
|
||||
{
|
||||
"x":60,
|
||||
"type":"Box",
|
||||
"props":{"right":0,"name":"boxTrajectoryItem","left":0},
|
||||
"nodeParent":17,
|
||||
@@ -952,11 +945,25 @@
|
||||
"compId":88,
|
||||
"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",
|
||||
"props":{"y":0,"x":200,"name":"hboxAge","anchorX":1,"align":"middle"},
|
||||
"props":{"y":0,"x":220,"name":"hboxAge","anchorX":1,"align":"middle"},
|
||||
"nodeParent":88,
|
||||
"label":"HBox(hboxAge)",
|
||||
"isOpen":true,
|
||||
"isOpen":false,
|
||||
"isDirectory":true,
|
||||
"isAniNode":true,
|
||||
"hasChild":true,
|
||||
@@ -1000,8 +1007,9 @@
|
||||
}]
|
||||
},
|
||||
{
|
||||
"x":75,
|
||||
"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,
|
||||
"label":"Label(labContent)",
|
||||
"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":[
|
||||
{
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"x":0,
|
||||
"type":"View",
|
||||
"selectedBox":1,
|
||||
"selecteID":83,
|
||||
"selectedBox":99,
|
||||
"selecteID":100,
|
||||
"props":{"y":1218,"x":562,"width":1125,"sceneColor":"#000000","runtime":"Laya.runtime.ViewBase","height":2436,"anchorY":0.5,"anchorX":0.5},
|
||||
"nodeParent":-1,
|
||||
"label":"View",
|
||||
@@ -15,9 +15,9 @@
|
||||
{
|
||||
"x":15,
|
||||
"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,
|
||||
"label":"Label(labTitle)",
|
||||
"label":"Label(title)",
|
||||
"isDirectory":false,
|
||||
"isAniNode":true,
|
||||
"hasChild":false,
|
||||
@@ -28,7 +28,7 @@
|
||||
{
|
||||
"x":15,
|
||||
"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,
|
||||
"label":"Label(labSubTitle)",
|
||||
"isDirectory":false,
|
||||
@@ -195,14 +195,13 @@
|
||||
"props":{"width":160,"left":50,"height":160,"bottom":50},
|
||||
"nodeParent":1,
|
||||
"label":"Box",
|
||||
"isOpen":true,
|
||||
"isOpen":false,
|
||||
"isDirectory":true,
|
||||
"isAniNode":true,
|
||||
"hasChild":true,
|
||||
"compId":92,
|
||||
"child":[
|
||||
{
|
||||
"x":30,
|
||||
"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},
|
||||
"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":[
|
||||
{
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"x":0,
|
||||
"type":"View",
|
||||
"selectedBox":1,
|
||||
"selecteID":102,
|
||||
"selecteID":153,
|
||||
"props":{"width":1125,"sceneColor":"#000000","runtime":"Laya.runtime.ViewBase","height":2436},
|
||||
"nodeParent":-1,
|
||||
"label":"View",
|
||||
@@ -501,6 +501,32 @@
|
||||
}],
|
||||
"$LOCKED":true,
|
||||
"$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":[
|
||||
{
|
||||
|
||||
50
laya/pages/view/MessagePopup.ui
Normal 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
@@ -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
@@ -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
|
||||
}]
|
||||
}
|
||||
@@ -16,7 +16,7 @@
|
||||
"babel-loader": "^8.2.2",
|
||||
"core-js": "^3.17.2",
|
||||
"html-webpack-plugin": "^5.5.0",
|
||||
"v-transform": "^1.0.1",
|
||||
"v-transform": "^1.0.2",
|
||||
"webpack": "^5.64.4",
|
||||
"webpack-cli": "^4.8.0",
|
||||
"webpack-dev-server": "^4.1.0"
|
||||
|
||||
1
public/chunk/184.7e968.js
Normal file
1
public/chunk/187.29ba1.js
Normal file
1
public/chunk/285.8fcb6.js
Normal file
1
public/chunk/33.6a18b.js
Normal file
1
public/chunk/501.338d9.js
Normal file
1
public/chunk/51.b32bb.js
Normal file
1
public/chunk/544.27c17.js
Normal file
1
public/chunk/614.cac87.js
Normal file
1
public/chunk/631.5f9d9.js
Normal file
1
public/chunk/764.ade88.js
Normal file
1
public/chunk/803.68263.js
Normal file
1
public/chunk/85.ffdbc.js
Normal file
1
public/chunk/908.c797b.js
Normal file
1
public/chunk/971.5c09f.js
Normal file
1
public/chunk/main.a3242.js
Normal file
@@ -11825,6 +11825,8 @@
|
||||
"20567*0.01",
|
||||
"11497*0.05",
|
||||
"11498*0.05",
|
||||
"21326",
|
||||
"21327",
|
||||
"40065*1000000000000000000",
|
||||
"40066*100000000000000000",
|
||||
"40067*100000000000000000",
|
||||
@@ -12046,6 +12048,8 @@
|
||||
"11497*0.05",
|
||||
"11498*0.05",
|
||||
"11499*0.1",
|
||||
"21326",
|
||||
"21327",
|
||||
"40065*1000000000000000000",
|
||||
"40066*100000000000000000",
|
||||
"40067*100000000000000000",
|
||||
@@ -12267,6 +12271,8 @@
|
||||
"11498*0.05",
|
||||
"11499*0.1",
|
||||
"10426*0.1",
|
||||
"21326",
|
||||
"21327",
|
||||
"40065*1000000000000000000",
|
||||
"40066*100000000000000000",
|
||||
"40067*100000000000000000",
|
||||
@@ -12479,6 +12485,8 @@
|
||||
"11498*0.05",
|
||||
"11499*0.1",
|
||||
"10426*0.1",
|
||||
"21326",
|
||||
"21327",
|
||||
"40065*1000000000000000000",
|
||||
"40066*100000000000000000",
|
||||
"40067*100000000000000000",
|
||||
|
||||
@@ -390,8 +390,9 @@
|
||||
"name": "神丶暴龙战士灬张杨"
|
||||
},
|
||||
{
|
||||
"group": 2,
|
||||
"name": "NovaDNG"
|
||||
"group": 1,
|
||||
"name": "NovaDNG",
|
||||
"comment": "感谢你们为世界带来一些欢乐"
|
||||
},
|
||||
{
|
||||
"group": 2,
|
||||
@@ -2406,6 +2407,67 @@
|
||||
"group": 2,
|
||||
"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,
|
||||
"name": "超级无敌暴龙战士"
|
||||
@@ -4236,5 +4298,50 @@
|
||||
{
|
||||
"group": 2,
|
||||
"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"
|
||||
}
|
||||
]
|
||||
@@ -35,9 +35,11 @@ P 3FA91C13 icon_github.png
|
||||
P AB934AEA icon_int@3x.png
|
||||
P F1A0724B icon_mny@3x.png
|
||||
P D5AADAC9 icon_rank@3x.png
|
||||
P 0806E5F3 icon_save.png
|
||||
P 2DB0325D icon_spr@3x.png
|
||||
P 2EFA541B icon_str@3x.png
|
||||
P 804842C9 icon_thanks@3x.png
|
||||
P 96DD5D94 icon_themes.png
|
||||
P 6ECB5FEC icon_up@3x.png
|
||||
D images/progress
|
||||
P E2BF0C93 progress_1@3x$bar.png
|
||||
@@ -46,6 +48,10 @@ P E7F15BA7 progress_2$bar.png
|
||||
P 641A22BF progress_2.png
|
||||
P AF80A9AF progress_s$bar.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
|
||||
P F3659301 bottombreath.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$up.png
|
||||
R C9587878 vslider_1@3x.png
|
||||
D images/texture
|
||||
P FD231754 texture_1.png
|
||||
|
||||
@@ -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/"}}
|
||||
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 53 KiB |
1
public/images/atlas/images/radio.atlas
Normal 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/"}}
|
||||
BIN
public/images/atlas/images/radio.png
Normal file
|
After Width: | Height: | Size: 83 KiB |
1
public/images/atlas/images/texture.atlas
Normal 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/"}}
|
||||
BIN
public/images/atlas/images/texture.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
public/images/texture/texture_1.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
@@ -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
@@ -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}
|
||||
39
src/app.js
@@ -10,6 +10,25 @@ globalThis.UI =
|
||||
UIManager;
|
||||
|
||||
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{
|
||||
constructor(){
|
||||
this.name = 'lifeRestart';
|
||||
@@ -119,6 +138,16 @@ class App{
|
||||
$$on('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({
|
||||
@@ -128,6 +157,15 @@ class App{
|
||||
this.resigterEvent();
|
||||
this.#initLaya();
|
||||
globalThis.$ui = UIManager.getInstance();
|
||||
|
||||
if(theme=='default') {
|
||||
if(!localStorage.getItem('__')) {
|
||||
localStorage.setItem('__', 1);
|
||||
localStorage.setItem('theme', 'cyber');
|
||||
}
|
||||
theme = localStorage.getItem('theme');
|
||||
}
|
||||
|
||||
$ui.theme = theme;
|
||||
await this.#setLanguage(language);
|
||||
await $ui.setLoading(UI.pages.LOADING);
|
||||
@@ -137,6 +175,7 @@ class App{
|
||||
dataSet=>Laya.promises.loader.load(`data/${dataSet}.json`, null, Laya.Loader.JSON),
|
||||
);
|
||||
await $ui.switchView(UI.pages.MAIN);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -83,10 +83,17 @@ function deepMapSet(target, source) {
|
||||
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) {
|
||||
const replace = set => (match, key) => {
|
||||
const value = set[key];
|
||||
const value = deepGet(set, key);
|
||||
switch(typeof value) {
|
||||
case 'object': return JSON.stringify(value);
|
||||
case 'boolean':
|
||||
|
||||
@@ -119,7 +119,30 @@ export default ({
|
||||
UI_Support_Programmer: 'Programmer',
|
||||
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_AchievementCount: 'Achievement {0}',
|
||||
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}]',
|
||||
});
|
||||
@@ -119,7 +119,30 @@ export default ({
|
||||
UI_Support_Programmer: '打赏程序(顿顿饭)',
|
||||
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_AchievementCount: '成就达成{0}个',
|
||||
F_TalentSelection: '{name}({description})',
|
||||
F_TalentConflict: '与已选的「{0}」天赋冲突',
|
||||
F_TalentSelectLimit: '只能选 {0} 个天赋',
|
||||
F_TalentSelectNotComplect: '要选满{0}个天赋',
|
||||
F_PropertyPointLeft: '你还有 {0} 属性点没有分配完',
|
||||
F_TalentReplace: '天赋替换【{source.name}】->【{target.name}】',
|
||||
});
|
||||
46
src/index.js
@@ -1,21 +1,6 @@
|
||||
import App from './app.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.$$event = (tag, data) => {
|
||||
const listener = $$eventMap.get(tag);
|
||||
@@ -34,6 +19,37 @@ globalThis.$$off = (tag, 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 game = new App();
|
||||
globalThis.core = core;
|
||||
|
||||
@@ -44,12 +44,12 @@ class Event {
|
||||
}
|
||||
|
||||
do(eventId, property) {
|
||||
const { effect, branch, event: description, postEvent } = this.get(eventId);
|
||||
const { effect, branch, event: description, postEvent, grade } = this.get(eventId);
|
||||
if(branch)
|
||||
for(const [cond, next] of branch)
|
||||
if(checkCondition(property, cond))
|
||||
return { effect, next, description };
|
||||
return { effect, postEvent, description };
|
||||
return { effect, next, description, grade };
|
||||
return { effect, postEvent, description, grade };
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@ class Life {
|
||||
#propertyAllocateLimit;
|
||||
#defaultPropertys;
|
||||
#specialThanks;
|
||||
#initialData;
|
||||
|
||||
async initial(i18nLoad, commonLoad) {
|
||||
const [age, talents, events, achievements, specialThanks] = await Promise.all([
|
||||
@@ -58,25 +59,28 @@ class Life {
|
||||
this.#property.config(propertyConfig);
|
||||
}
|
||||
|
||||
restart(allocation) {
|
||||
const propertys = clone(this.#defaultPropertys);
|
||||
for(const key in allocation) {
|
||||
propertys[key] = clone(allocation[key]);
|
||||
}
|
||||
remake(talents) {
|
||||
this.#initialData = clone(this.#defaultPropertys);
|
||||
this.#initialData.TLT = clone(talents);
|
||||
this.#triggerTalents = {};
|
||||
const contents = this.talentReplace(propertys.TLT);
|
||||
this.#property.restart(propertys);
|
||||
return this.talentReplace(this.#initialData.TLT);
|
||||
}
|
||||
|
||||
start(allocation) {
|
||||
for(const key in allocation) {
|
||||
this.#initialData[key] = clone(allocation[key]);
|
||||
}
|
||||
this.#property.restart(this.#initialData);
|
||||
this.doTalent()
|
||||
this.#property.restartLastStep();
|
||||
this.#achievement.achieve(
|
||||
this.AchievementOpportunity.START,
|
||||
this.#property
|
||||
)
|
||||
return contents;
|
||||
);
|
||||
}
|
||||
|
||||
getPropertyPoints(selectedTalentIds) {
|
||||
return this.#defaultPropertyPoints + this.#talent.allocationAddition(selectedTalentIds);
|
||||
getPropertyPoints() {
|
||||
return this.#defaultPropertyPoints + this.#talent.allocationAddition(this.#initialData.TLT);
|
||||
}
|
||||
|
||||
getTalentCurrentTriggerCount(talentId) {
|
||||
@@ -138,13 +142,14 @@ class Life {
|
||||
}
|
||||
|
||||
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.effect(effect);
|
||||
const content = {
|
||||
type: this.PropertyTypes.EVT,
|
||||
description,
|
||||
postEvent,
|
||||
grade,
|
||||
}
|
||||
if(next) return [content, this.doEvent(next)].flat();
|
||||
return [content];
|
||||
|
||||
@@ -7,6 +7,7 @@ export default class CyberAchievement extends ui.view.CyberTheme.CyberAchievemen
|
||||
this.#state = {min, max};
|
||||
this.btnStatistics.on(Laya.Event.CLICK, this, ()=>this.switch('statistics'));
|
||||
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.scrollBar.elasticDistance = 150;
|
||||
|
||||
@@ -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.btnGithub.on(Laya.Event.CLICK, this, goto, ['github']);
|
||||
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, () => {
|
||||
const scale = Math.max(
|
||||
this.width / this.imgBg.width,
|
||||
|
||||
@@ -41,9 +41,11 @@ export default class CyberProperty extends ui.view.CyberTheme.CyberPropertyUI {
|
||||
|
||||
init({talents}) {
|
||||
this.listSelectedTalents.array = talents;
|
||||
const talentIds = talents.map(talent => talent.id);
|
||||
// core.talentReplace(talentIds);
|
||||
this.#propertyPoints = core.getPropertyPoints(talentIds);
|
||||
const replace = core.remake(talents.map(talent => talent.id));
|
||||
if(replace.length > 0) {
|
||||
$$event('message', [replace.map(v => ['F_TalentReplace', v])]);
|
||||
}
|
||||
this.#propertyPoints = core.getPropertyPoints();
|
||||
this.#propertyAllocateLimit = core.propertyAllocateLimit;
|
||||
this.labLeftPropertyPoint.text = this.#propertyPoints;
|
||||
this.#propertyAllocate = {
|
||||
@@ -51,14 +53,14 @@ export default class CyberProperty extends ui.view.CyberTheme.CyberPropertyUI {
|
||||
[this.#types.INT]: 0,
|
||||
[this.#types.STR]: 0,
|
||||
[this.#types.MNY]: 0,
|
||||
[this.#types.TLT]: talentIds,
|
||||
}
|
||||
this.updateAllocate();
|
||||
}
|
||||
|
||||
next() {
|
||||
if (this.total < this.#propertyPoints) {
|
||||
return;
|
||||
const left = this.#propertyPoints - this.total;
|
||||
if (left > 0) {
|
||||
return $$event('message', ['F_PropertyPointLeft', left]);
|
||||
}
|
||||
$ui.switchView(
|
||||
UI.pages.TRAJECTORY,
|
||||
|
||||
@@ -36,7 +36,7 @@ export default class CyberTalent extends ui.view.CyberTheme.CyberTalentUI {
|
||||
|
||||
onClickNext() {
|
||||
if(this.#selected.size < core.talentSelectLimit) {
|
||||
return;
|
||||
return $$event('message', ['F_TalentSelectNotComplect', core.talentSelectLimit]);
|
||||
}
|
||||
|
||||
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);
|
||||
} else {
|
||||
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;
|
||||
}
|
||||
this.#selected.add(index);
|
||||
|
||||
@@ -60,6 +60,7 @@ export default class CyberTrajectory extends ui.view.CyberTheme.CyberTrajectoryU
|
||||
const item = CyberTrajectory.#createComponent('boxTrajectoryItem');
|
||||
item.labContent = item.getChildByName('labContent');
|
||||
item.labAge = item.getChildByName('hboxAge').getChildByName('labAge');
|
||||
item.boxGrade = item.getChildByName('boxGrade');
|
||||
return item;
|
||||
}
|
||||
#isEnd;
|
||||
@@ -67,12 +68,13 @@ export default class CyberTrajectory extends ui.view.CyberTheme.CyberTrajectoryU
|
||||
#talents;
|
||||
|
||||
init({propertyAllocate, talents}) {
|
||||
this.boxParticle.visible = false;
|
||||
this.boxSpeed.visible = true;
|
||||
this.btnSummary.visible = false;
|
||||
this.#trajectoryItems = [];
|
||||
this.#isEnd = false;
|
||||
this.#talents = talents;
|
||||
core.restart(propertyAllocate);
|
||||
core.start(propertyAllocate);
|
||||
this.updateProperty();
|
||||
this.onNext();
|
||||
}
|
||||
@@ -111,6 +113,9 @@ export default class CyberTrajectory extends ui.view.CyberTheme.CyberTrajectoryU
|
||||
|
||||
this.renderTrajectory(age, content);
|
||||
|
||||
if(age >= 100) {
|
||||
this.boxParticle.visible = true;
|
||||
}
|
||||
Laya.timer.frameOnce(1, this, () => {
|
||||
this.panelTrajectory.scrollTo(0, this.panelTrajectory.contentHeight);
|
||||
});
|
||||
@@ -130,6 +135,10 @@ export default class CyberTrajectory extends ui.view.CyberTheme.CyberTrajectoryU
|
||||
}
|
||||
}
|
||||
).join('\n');
|
||||
$_.deepMapSet(
|
||||
item.boxGrade,
|
||||
$ui.common.gradeBlk[content[content.length - 1].grade || 0]
|
||||
);
|
||||
this.vboxTrajectory.addChild(item);
|
||||
this.#trajectoryItems.push(item);
|
||||
this.#trajectoryItems.forEach((item, index) => item.y = index);
|
||||
|
||||
@@ -2,6 +2,7 @@ export default class Achievement extends ui.view.DefaultTheme.AchievementUI {
|
||||
constructor() {
|
||||
super();
|
||||
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.scrollBar.elasticDistance = 150;
|
||||
}
|
||||
|
||||
@@ -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.btnGithub.on(Laya.Event.CLICK, this, goto, ['github']);
|
||||
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() {
|
||||
@@ -18,5 +20,8 @@ export default class Main extends ui.view.DefaultTheme.MainUI {
|
||||
this.btnDiscord.visible =
|
||||
this.btnAchievement.visible =
|
||||
this.btnThanks.visible = !!core.times;
|
||||
const text = this.labSubTitle.text;
|
||||
this.labSubTitle.text = ' ';
|
||||
this.labSubTitle.text = text;
|
||||
}
|
||||
}
|
||||
@@ -41,9 +41,11 @@ export default class Property extends ui.view.DefaultTheme.PropertyUI {
|
||||
|
||||
init({talents}) {
|
||||
this.listSelectedTalents.array = talents;
|
||||
const talentIds = talents.map(talent => talent.id);
|
||||
// core.talentReplace(talentIds);
|
||||
this.#propertyPoints = core.getPropertyPoints(talentIds);
|
||||
const replace = core.remake(talents.map(talent => talent.id));
|
||||
if(replace.length > 0) {
|
||||
$$event('message', [replace.map(v => ['F_TalentReplace', v])]);
|
||||
}
|
||||
this.#propertyPoints = core.getPropertyPoints();
|
||||
this.#propertyAllocateLimit = core.propertyAllocateLimit;
|
||||
this.labLeftPropertyPoint.text = this.#propertyPoints;
|
||||
this.#propertyAllocate = {
|
||||
@@ -51,14 +53,14 @@ export default class Property extends ui.view.DefaultTheme.PropertyUI {
|
||||
[this.#types.INT]: 0,
|
||||
[this.#types.STR]: 0,
|
||||
[this.#types.MNY]: 0,
|
||||
[this.#types.TLT]: talentIds,
|
||||
}
|
||||
this.updateAllocate();
|
||||
}
|
||||
|
||||
next() {
|
||||
if (this.total < this.#propertyPoints) {
|
||||
return;
|
||||
const left = this.#propertyPoints - this.total;
|
||||
if (left > 0) {
|
||||
return $$event('message', ['F_PropertyPointLeft', left]);
|
||||
}
|
||||
$ui.switchView(
|
||||
UI.pages.TRAJECTORY,
|
||||
|
||||
@@ -26,7 +26,7 @@ export default class Talent extends ui.view.DefaultTheme.TalentUI {
|
||||
|
||||
onClickNext() {
|
||||
if(this.#selected.size < core.talentSelectLimit) {
|
||||
return;
|
||||
return $$event('message', ['F_TalentSelectNotComplect', core.talentSelectLimit]);
|
||||
}
|
||||
|
||||
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);
|
||||
} else {
|
||||
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;
|
||||
}
|
||||
this.#selected.add(index);
|
||||
|
||||
@@ -35,6 +35,9 @@ export default class Trajectory extends ui.view.DefaultTheme.TrajectoryUI {
|
||||
item.labAge = item.getChildByName('hboxAge').getChildByName('labAge');
|
||||
const config = $ui.common.trajectoryItem;
|
||||
$_.deepMapSet(item, config.box);
|
||||
item.grade = grade => {
|
||||
$_.deepMapSet(item, config.grade[grade || 0]);
|
||||
}
|
||||
item.getChildByName('hboxAge')._childs.forEach(child => child.color = config.ageColor);
|
||||
item.labContent.color = config.contentColor;
|
||||
return item;
|
||||
@@ -44,12 +47,13 @@ export default class Trajectory extends ui.view.DefaultTheme.TrajectoryUI {
|
||||
#talents;
|
||||
|
||||
init({propertyAllocate, talents}) {
|
||||
this.boxParticle.visible = false;
|
||||
this.boxSpeed.visible = true;
|
||||
this.btnSummary.visible = false;
|
||||
this.#trajectoryItems = [];
|
||||
this.#isEnd = false;
|
||||
this.#talents = talents;
|
||||
core.restart(propertyAllocate);
|
||||
core.start(propertyAllocate);
|
||||
this.updateProperty();
|
||||
this.onNext();
|
||||
}
|
||||
@@ -88,6 +92,9 @@ export default class Trajectory extends ui.view.DefaultTheme.TrajectoryUI {
|
||||
|
||||
this.renderTrajectory(age, content);
|
||||
|
||||
if(age >= 100) {
|
||||
this.boxParticle.visible = true;
|
||||
}
|
||||
Laya.timer.frameOnce(1, this, () => {
|
||||
this.panelTrajectory.scrollTo(0, this.panelTrajectory.contentHeight);
|
||||
});
|
||||
@@ -107,6 +114,7 @@ export default class Trajectory extends ui.view.DefaultTheme.TrajectoryUI {
|
||||
}
|
||||
}
|
||||
).join('\n');
|
||||
item.grade(content[content.length - 1].grade);
|
||||
this.vboxTrajectory.addChild(item);
|
||||
this.#trajectoryItems.push(item);
|
||||
this.#trajectoryItems.forEach((item, index) => item.y = index);
|
||||
|
||||
20
src/ui/themes/message.js
Normal 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
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -7,10 +7,13 @@ const pages = {
|
||||
SUMMARY: 'SUMMARY',
|
||||
ACHIEVEMENT: 'ACHIEVEMENT',
|
||||
THANKS: 'THANKS',
|
||||
THEMES: 'THEMES',
|
||||
SAVELOAD: 'SAVELOAD',
|
||||
};
|
||||
|
||||
const popups = {
|
||||
ACHIEVEMENT: 'POPUP_ACHIEVEMENT',
|
||||
MESSAGE: 'POPUP_MESSAGE',
|
||||
};
|
||||
|
||||
const cyber = {
|
||||
@@ -23,9 +26,12 @@ const cyber = {
|
||||
[pages.SUMMARY]: "cyber/summary",
|
||||
[pages.ACHIEVEMENT]: "cyber/achievement",
|
||||
[pages.THANKS]: "default/thanks",
|
||||
[pages.THEMES]: 'themes',
|
||||
[pages.SAVELOAD]: 'saveload',
|
||||
},
|
||||
popups: {
|
||||
[popups.ACHIEVEMENT]: "cyber/popup/achievementPopup",
|
||||
[popups.MESSAGE]: "message",
|
||||
},
|
||||
configs: {
|
||||
bgColor: '#04131f',
|
||||
@@ -49,8 +55,44 @@ const cyber = {
|
||||
'#b17cffff',
|
||||
'#ffce45ff',
|
||||
],
|
||||
gradeBlk: [
|
||||
{
|
||||
defaultColor: '#cccccc',
|
||||
hoverColor: '#cccccc',
|
||||
},
|
||||
{
|
||||
defaultColor: '#55fffe',
|
||||
hoverColor: '#55fffe',
|
||||
},
|
||||
{
|
||||
defaultColor: '#b17cff',
|
||||
hoverColor: '#b17cff',
|
||||
},
|
||||
{
|
||||
defaultColor: '#ffce45',
|
||||
hoverColor: '#ffce45',
|
||||
},
|
||||
]
|
||||
},
|
||||
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]: {
|
||||
vars: {
|
||||
btnBack: {
|
||||
@@ -82,7 +124,56 @@ const cyber = {
|
||||
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.ACHIEVEMENT]: "default/achievement",
|
||||
[pages.THANKS]: "default/thanks",
|
||||
[pages.THEMES]: 'themes',
|
||||
[pages.SAVELOAD]: 'saveload',
|
||||
},
|
||||
popups: {
|
||||
[popups.ACHIEVEMENT]: "default/popup/achievementPopup",
|
||||
[popups.MESSAGE]: "message",
|
||||
},
|
||||
configs: {
|
||||
bgColor: '#222831',
|
||||
@@ -107,12 +201,26 @@ const dark = {
|
||||
defaultFontColor: '#eeeeee',
|
||||
trajectoryItem: {
|
||||
box: {
|
||||
defaultColor: '#4a5361',
|
||||
defaultStroke: '#4a5361',
|
||||
hoverColor: '#4a5361',
|
||||
hoverStroke: '#4a5361',
|
||||
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',
|
||||
contentColor: '#eeeeee',
|
||||
},
|
||||
@@ -337,10 +445,23 @@ const dark = {
|
||||
[pages.MAIN]: {
|
||||
vars: {
|
||||
btnRemake: 'btn_main',
|
||||
labTitle: 'title',
|
||||
labSubTitle: 'title',
|
||||
btnThemes: {
|
||||
defaultColor: '#cccccc',
|
||||
radius: 100,
|
||||
},
|
||||
btnSaveLoad: {
|
||||
defaultColor: '#5865f2',
|
||||
defaultStroke: '#eeeeee',
|
||||
defaultLabel: '#eeeeee',
|
||||
hoverColor: '#1160b0',
|
||||
hoverStroke: '#eeeeee',
|
||||
hoverLabel: '#eeeeee',
|
||||
lineWidth: 0,
|
||||
radius: 100,
|
||||
},
|
||||
},
|
||||
names: {
|
||||
title: 'title',
|
||||
btnSmall: 'btn_small',
|
||||
}
|
||||
},
|
||||
@@ -445,7 +566,56 @@ const dark = {
|
||||
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.ACHIEVEMENT]: {
|
||||
@@ -472,9 +642,12 @@ const light = {
|
||||
[pages.SUMMARY]: "default/summary",
|
||||
[pages.ACHIEVEMENT]: "default/achievement",
|
||||
[pages.THANKS]: "default/thanks",
|
||||
[pages.THEMES]: 'themes',
|
||||
[pages.SAVELOAD]: 'saveload',
|
||||
},
|
||||
popups: {
|
||||
[popups.ACHIEVEMENT]: "default/popup/achievementPopup",
|
||||
[popups.MESSAGE]: "message",
|
||||
},
|
||||
configs: {
|
||||
bgColor: '#ffffff',
|
||||
@@ -484,6 +657,21 @@ const light = {
|
||||
box: {
|
||||
filters: ()=>[new Laya.GlowFilter("#b1b1b1", 8, 0, 0)],
|
||||
},
|
||||
grade: [
|
||||
{},
|
||||
{
|
||||
defaultColor: '#55fffe',
|
||||
hoverColor: '#55fffe',
|
||||
},
|
||||
{
|
||||
defaultColor: '#b17cff',
|
||||
hoverColor: '#b17cff',
|
||||
},
|
||||
{
|
||||
defaultColor: '#ffce45',
|
||||
hoverColor: '#ffce45',
|
||||
},
|
||||
],
|
||||
ageColor: '#000000',
|
||||
contentColor: '#000000',
|
||||
},
|
||||
@@ -706,10 +894,23 @@ const light = {
|
||||
[pages.MAIN]: {
|
||||
vars: {
|
||||
btnRemake: 'btn_main',
|
||||
labTitle: 'title',
|
||||
labSubTitle: 'title',
|
||||
btnThemes: {
|
||||
defaultColor: '#cccccc',
|
||||
radius: 100,
|
||||
},
|
||||
btnSaveLoad: {
|
||||
defaultColor: '#5865f2',
|
||||
defaultStroke: '#eeeeee',
|
||||
defaultLabel: '#eeeeee',
|
||||
hoverColor: '#1160b0',
|
||||
hoverStroke: '#eeeeee',
|
||||
hoverLabel: '#eeeeee',
|
||||
lineWidth: 0,
|
||||
radius: 100,
|
||||
},
|
||||
},
|
||||
names: {
|
||||
title: 'title',
|
||||
btnSmall: 'btn_small',
|
||||
}
|
||||
},
|
||||
@@ -814,7 +1015,56 @@ const light = {
|
||||
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.ACHIEVEMENT]: {
|
||||
|
||||
@@ -7,7 +7,6 @@ export default class UIManager {
|
||||
stage = Laya.stage;
|
||||
}
|
||||
this.#stage = stage;
|
||||
this.theme = 'default';
|
||||
|
||||
stage.addChild(this.#viewLayer);
|
||||
this.#viewLayer.zOrder = 1;
|
||||
@@ -26,7 +25,16 @@ export default class UIManager {
|
||||
this.#popupLayer.top =
|
||||
this.#popupLayer.bottom =
|
||||
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 = {};
|
||||
@@ -37,9 +45,10 @@ export default class UIManager {
|
||||
#viewLayer = new Laya.Panel();
|
||||
#dialogLayer = new Laya.Panel();
|
||||
#popupLayer = new Laya.Panel();
|
||||
#dialogMask = new Laya.Sprite();
|
||||
#viewMap = new Map();
|
||||
#class = new Map();
|
||||
#theme = 'default';
|
||||
#dialogStack = [];
|
||||
|
||||
static get inst() {
|
||||
return this.getInstance();
|
||||
@@ -95,8 +104,12 @@ export default class UIManager {
|
||||
// check if view is already loaded
|
||||
let view = await this.#viewMap.get(className);
|
||||
|
||||
let timeout;
|
||||
if(this.#loading) {
|
||||
this.#stage.addChild(this.#loading);
|
||||
timeout = setTimeout(
|
||||
()=>this.#stage.addChild(this.#loading),
|
||||
3000
|
||||
);
|
||||
}
|
||||
const onProgress = this.#loading?.onProgress;
|
||||
|
||||
@@ -121,7 +134,7 @@ export default class UIManager {
|
||||
const resourceList = await view.constructor.load?.(args);
|
||||
await this.loadRes(resourceList, preload, onProgress);
|
||||
}
|
||||
|
||||
if(timeout) clearTimeout(timeout);
|
||||
this.#loading?.removeSelf();
|
||||
|
||||
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) {
|
||||
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);
|
||||
this.#dialogLayer.addChild(dialog);
|
||||
const index = this.#dialogStack.indexOf(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 () => {
|
||||
this.#dialogLayer.scaleX = 0;
|
||||
this.#dialogLayer.scaleY = 0;
|
||||
dialog.scaleX = 0;
|
||||
dialog.scaleY = 0;
|
||||
await Laya.promises.Tween.to(dialog, { scaleX: 1, scaleY: 1 }, 300, Laya.Ease.backOut);
|
||||
});
|
||||
await open(dialog);
|
||||
dialog.close = actions?.close || (async () => {
|
||||
await Laya.promises.Tween.to(dialog, { scaleX: 0, scaleY: 0 }, 300, Laya.Ease.backOut);
|
||||
});;
|
||||
dialog.mouseThrough = true;
|
||||
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);
|
||||
}
|
||||
@@ -180,7 +226,8 @@ export default class UIManager {
|
||||
}
|
||||
|
||||
clearAllDialog() {
|
||||
this.#dialogLayer.removeChildren();
|
||||
this.#dialogStack = [];
|
||||
this.#showDialogStack();
|
||||
}
|
||||
|
||||
#config(view, key, type) {
|
||||
@@ -279,23 +326,27 @@ export default class UIManager {
|
||||
return this.#currentView;
|
||||
}
|
||||
|
||||
get currentDialog() {
|
||||
return this.#dialogStack[this.#dialogStack.length -1];
|
||||
}
|
||||
|
||||
get theme() {
|
||||
return this.#theme;
|
||||
return localStorage.getItem('theme');
|
||||
}
|
||||
set theme(value) {
|
||||
this.#theme = value;
|
||||
localStorage.setItem('theme', value);
|
||||
this.#stage.bgColor = this.#configs.bgColor;
|
||||
document?.querySelector?.('meta[name="theme-color"]')?.setAttribute?.('content', this.#configs.bgColor);
|
||||
}
|
||||
|
||||
get #pages() {
|
||||
return UIManager.theme(this.#theme, 'pages');
|
||||
return UIManager.theme(this.theme, 'pages');
|
||||
}
|
||||
get #popups() {
|
||||
return UIManager.theme(this.#theme, 'popups');
|
||||
return UIManager.theme(this.theme, 'popups');
|
||||
}
|
||||
get #configs() {
|
||||
return UIManager.theme(this.#theme, 'configs');
|
||||
return UIManager.theme(this.theme, 'configs');
|
||||
}
|
||||
get common() {
|
||||
return this.#configs.common;
|
||||
|
||||
906
view/halloween.css
Normal 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;
|
||||
}
|
||||
@@ -3537,10 +3537,10 @@ uuid@^3.4.0:
|
||||
resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee"
|
||||
integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==
|
||||
|
||||
v-transform@^1.0.1:
|
||||
version "1.0.1"
|
||||
resolved "https://registry.yarnpkg.com/v-transform/-/v-transform-1.0.1.tgz#380dd837e3b14189ccc47aafa8e675601403f2f2"
|
||||
integrity sha512-F1VBbBLoFkFdpxFiHCq5neSoBsfFPDbecye5+B5OjE05U0K2RcdZR7lFkziqo1WP4Do36lUjN5Ok/E6GLUJgiQ==
|
||||
v-transform@^1.0.2:
|
||||
version "1.0.2"
|
||||
resolved "https://registry.yarnpkg.com/v-transform/-/v-transform-1.0.2.tgz#93f5be5e7ea6f070d544ab3d96569bace91c754d"
|
||||
integrity sha512-oBl76Q/JWVvglT3yHujWj6uNS4QygAERhdcdPKHpd47+K9+gotBUvCrdiVnizLscLzsz8GGi/KlOwZHnm9STxA==
|
||||
dependencies:
|
||||
commander "^8.2.0"
|
||||
xlsx "^0.17.1"
|
||||
|
||||