mirror of
https://github.com/VickScarlet/lifeRestart.git
synced 2026-03-24 13:33:26 +08:00
add unique character
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,8 +1,8 @@
|
|||||||
{
|
{
|
||||||
"x":0,
|
"x":0,
|
||||||
"type":"View",
|
"type":"View",
|
||||||
"selectedBox":1,
|
"selectedBox":83,
|
||||||
"selecteID":77,
|
"selecteID":84,
|
||||||
"props":{"width":1125,"sceneColor":"#000000","height":2436},
|
"props":{"width":1125,"sceneColor":"#000000","height":2436},
|
||||||
"nodeParent":-1,
|
"nodeParent":-1,
|
||||||
"label":"View",
|
"label":"View",
|
||||||
@@ -43,14 +43,13 @@
|
|||||||
"props":{"y":160,"x":563,"space":30,"height":70,"centerX":0,"anchorY":0.5,"anchorX":0.5},
|
"props":{"y":160,"x":563,"space":30,"height":70,"centerX":0,"anchorY":0.5,"anchorX":0.5},
|
||||||
"nodeParent":73,
|
"nodeParent":73,
|
||||||
"label":"HBox",
|
"label":"HBox",
|
||||||
"isOpen":true,
|
"isOpen":false,
|
||||||
"isDirectory":true,
|
"isDirectory":true,
|
||||||
"isAniNode":true,
|
"isAniNode":true,
|
||||||
"hasChild":true,
|
"hasChild":true,
|
||||||
"compId":75,
|
"compId":75,
|
||||||
"child":[
|
"child":[
|
||||||
{
|
{
|
||||||
"x":45,
|
|
||||||
"type":"Image",
|
"type":"Image",
|
||||||
"props":{"y":10,"x":1,"skin":"images/accessories/title_left@3x.png","name":"left"},
|
"props":{"y":10,"x":1,"skin":"images/accessories/title_left@3x.png","name":"left"},
|
||||||
"nodeParent":75,
|
"nodeParent":75,
|
||||||
@@ -63,7 +62,6 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"x":45,
|
|
||||||
"type":"Label",
|
"type":"Label",
|
||||||
"props":{"y":0,"x":2,"text":"UI_Title_Celebrity","fontSize":60,"font":"方正像素12","color":"#ffffff"},
|
"props":{"y":0,"x":2,"text":"UI_Title_Celebrity","fontSize":60,"font":"方正像素12","color":"#ffffff"},
|
||||||
"nodeParent":75,
|
"nodeParent":75,
|
||||||
@@ -76,7 +74,6 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"x":45,
|
|
||||||
"type":"Image",
|
"type":"Image",
|
||||||
"props":{"y":10,"x":3,"skin":"images/accessories/title_right@3x.png","name":"right"},
|
"props":{"y":10,"x":3,"skin":"images/accessories/title_right@3x.png","name":"right"},
|
||||||
"nodeParent":75,
|
"nodeParent":75,
|
||||||
@@ -121,26 +118,24 @@
|
|||||||
"props":{"right":0,"name":"boxCharacter","left":0},
|
"props":{"right":0,"name":"boxCharacter","left":0},
|
||||||
"nodeParent":8,
|
"nodeParent":8,
|
||||||
"label":"Box(boxCharacter)",
|
"label":"Box(boxCharacter)",
|
||||||
"isOpen":true,
|
"isOpen":false,
|
||||||
"isDirectory":true,
|
"isDirectory":true,
|
||||||
"isAniNode":true,
|
"isAniNode":true,
|
||||||
"hasChild":true,
|
"hasChild":true,
|
||||||
"compId":10,
|
"compId":10,
|
||||||
"child":[
|
"child":[
|
||||||
{
|
{
|
||||||
"x":60,
|
|
||||||
"type":"Box",
|
"type":"Box",
|
||||||
"props":{"y":0,"right":0,"name":"boxName","left":0,"height":100},
|
"props":{"y":0,"right":0,"name":"boxName","left":0,"height":100},
|
||||||
"nodeParent":10,
|
"nodeParent":10,
|
||||||
"label":"Box(boxName)",
|
"label":"Box(boxName)",
|
||||||
"isOpen":true,
|
"isOpen":false,
|
||||||
"isDirectory":true,
|
"isDirectory":true,
|
||||||
"isAniNode":true,
|
"isAniNode":true,
|
||||||
"hasChild":true,
|
"hasChild":true,
|
||||||
"compId":12,
|
"compId":12,
|
||||||
"child":[
|
"child":[
|
||||||
{
|
{
|
||||||
"x":75,
|
|
||||||
"type":"Image",
|
"type":"Image",
|
||||||
"props":{"top":0,"skin":"images/border/border_1@3x.png","sizeGrid":"15,130,15,130","right":0,"left":0,"bottom":0},
|
"props":{"top":0,"skin":"images/border/border_1@3x.png","sizeGrid":"15,130,15,130","right":0,"left":0,"bottom":0},
|
||||||
"nodeParent":12,
|
"nodeParent":12,
|
||||||
@@ -153,7 +148,6 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"x":75,
|
|
||||||
"type":"Label",
|
"type":"Label",
|
||||||
"props":{"valign":"middle","text":"颜值10 智力10 体质10 家境Π","name":"label","fontSize":55,"font":"方正像素12","color":"#ffffff","centerY":0,"centerX":0,"align":"center"},
|
"props":{"valign":"middle","text":"颜值10 智力10 体质10 家境Π","name":"label","fontSize":55,"font":"方正像素12","color":"#ffffff","centerY":0,"centerX":0,"align":"center"},
|
||||||
"nodeParent":12,
|
"nodeParent":12,
|
||||||
@@ -167,19 +161,17 @@
|
|||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"x":60,
|
|
||||||
"type":"VBox",
|
"type":"VBox",
|
||||||
"props":{"top":100,"space":20,"right":25,"name":"vboxStates","left":25},
|
"props":{"top":100,"space":20,"right":25,"name":"vboxStates","left":25},
|
||||||
"nodeParent":10,
|
"nodeParent":10,
|
||||||
"label":"VBox(vboxStates)",
|
"label":"VBox(vboxStates)",
|
||||||
"isOpen":true,
|
"isOpen":false,
|
||||||
"isDirectory":true,
|
"isDirectory":true,
|
||||||
"isAniNode":true,
|
"isAniNode":true,
|
||||||
"hasChild":true,
|
"hasChild":true,
|
||||||
"compId":11,
|
"compId":11,
|
||||||
"child":[
|
"child":[
|
||||||
{
|
{
|
||||||
"x":75,
|
|
||||||
"type":"Label",
|
"type":"Label",
|
||||||
"props":{"valign":"middle","text":"颜值10 智力10 体质10 家境Π","name":"label","height":100,"fontSize":55,"font":"方正像素12","color":"#ffffff","centerX":0,"align":"center"},
|
"props":{"valign":"middle","text":"颜值10 智力10 体质10 家境Π","name":"label","height":100,"fontSize":55,"font":"方正像素12","color":"#ffffff","centerX":0,"align":"center"},
|
||||||
"nodeParent":11,
|
"nodeParent":11,
|
||||||
@@ -199,14 +191,13 @@
|
|||||||
"props":{"right":25,"name":"boxTalent","left":25,"height":100},
|
"props":{"right":25,"name":"boxTalent","left":25,"height":100},
|
||||||
"nodeParent":8,
|
"nodeParent":8,
|
||||||
"label":"Box(boxTalent)",
|
"label":"Box(boxTalent)",
|
||||||
"isOpen":true,
|
"isOpen":false,
|
||||||
"isDirectory":true,
|
"isDirectory":true,
|
||||||
"isAniNode":true,
|
"isAniNode":true,
|
||||||
"hasChild":true,
|
"hasChild":true,
|
||||||
"compId":15,
|
"compId":15,
|
||||||
"child":[
|
"child":[
|
||||||
{
|
{
|
||||||
"x":60,
|
|
||||||
"type":"Image",
|
"type":"Image",
|
||||||
"props":{"y":-220,"x":-25,"top":0,"skin":"images/border/up@3x.png","right":0,"left":0,"bottom":0},
|
"props":{"y":-220,"x":-25,"top":0,"skin":"images/border/up@3x.png","right":0,"left":0,"bottom":0},
|
||||||
"nodeParent":15,
|
"nodeParent":15,
|
||||||
@@ -219,7 +210,6 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"x":60,
|
|
||||||
"type":"Label",
|
"type":"Label",
|
||||||
"props":{"valign":"middle","text":"颜值10 智力10 体质10 家境Π","name":"label","fontSize":50,"font":"方正像素12","color":"#ffffff","centerY":0,"centerX":0,"align":"center"},
|
"props":{"valign":"middle","text":"颜值10 智力10 体质10 家境Π","name":"label","fontSize":50,"font":"方正像素12","color":"#ffffff","centerY":0,"centerX":0,"align":"center"},
|
||||||
"nodeParent":15,
|
"nodeParent":15,
|
||||||
@@ -232,7 +222,6 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"x":60,
|
|
||||||
"type":"Box",
|
"type":"Box",
|
||||||
"props":{"y":0,"x":0,"width":15,"visible":false,"name":"grade1","height":100},
|
"props":{"y":0,"x":0,"width":15,"visible":false,"name":"grade1","height":100},
|
||||||
"nodeParent":15,
|
"nodeParent":15,
|
||||||
@@ -257,7 +246,6 @@
|
|||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"x":60,
|
|
||||||
"type":"Box",
|
"type":"Box",
|
||||||
"props":{"y":0,"x":0,"width":15,"visible":false,"name":"grade2","height":100},
|
"props":{"y":0,"x":0,"width":15,"visible":false,"name":"grade2","height":100},
|
||||||
"nodeParent":15,
|
"nodeParent":15,
|
||||||
@@ -282,7 +270,6 @@
|
|||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"x":60,
|
|
||||||
"type":"Box",
|
"type":"Box",
|
||||||
"props":{"y":0,"x":0,"width":15,"visible":false,"name":"grade3","height":100},
|
"props":{"y":0,"x":0,"width":15,"visible":false,"name":"grade3","height":100},
|
||||||
"nodeParent":15,
|
"nodeParent":15,
|
||||||
@@ -306,6 +293,361 @@
|
|||||||
]
|
]
|
||||||
}]
|
}]
|
||||||
}]
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x":45,
|
||||||
|
"type":"Box",
|
||||||
|
"props":{"y":10,"x":10,"right":0,"name":"boxUniqueUnGenerate","left":0},
|
||||||
|
"nodeParent":8,
|
||||||
|
"label":"Box(boxUniqueUnGenerate)",
|
||||||
|
"isOpen":true,
|
||||||
|
"isDirectory":true,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":true,
|
||||||
|
"compId":79,
|
||||||
|
"child":[
|
||||||
|
{
|
||||||
|
"x":60,
|
||||||
|
"type":"Box",
|
||||||
|
"props":{"y":0,"right":0,"name":"boxName","left":0,"height":100},
|
||||||
|
"nodeParent":79,
|
||||||
|
"label":"Box(boxName)",
|
||||||
|
"isOpen":true,
|
||||||
|
"isDirectory":true,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":true,
|
||||||
|
"compId":80,
|
||||||
|
"child":[
|
||||||
|
{
|
||||||
|
"x":75,
|
||||||
|
"type":"Image",
|
||||||
|
"props":{"top":0,"skin":"images/border/border_1@3x.png","sizeGrid":"15,130,15,130","right":0,"left":0,"bottom":0},
|
||||||
|
"nodeParent":80,
|
||||||
|
"label":"Image",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":81,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x":75,
|
||||||
|
"type":"Label",
|
||||||
|
"props":{"valign":"middle","text":"UI_UniqueWaTaShi","name":"label","fontSize":55,"font":"方正像素12","color":"#ffffff","centerY":0,"centerX":0,"align":"center"},
|
||||||
|
"nodeParent":80,
|
||||||
|
"label":"Label(label)",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":82,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x":60,
|
||||||
|
"type":"VBox",
|
||||||
|
"props":{"top":100,"space":20,"right":25,"name":"vboxStates","left":25},
|
||||||
|
"nodeParent":79,
|
||||||
|
"label":"VBox(vboxStates)",
|
||||||
|
"isOpen":true,
|
||||||
|
"isDirectory":true,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":true,
|
||||||
|
"compId":83,
|
||||||
|
"child":[
|
||||||
|
{
|
||||||
|
"x":75,
|
||||||
|
"type":"Label",
|
||||||
|
"props":{"valign":"middle","text":"UI_UniqueWaTaShiContent","right":0,"name":"label","left":0,"leading":30,"fontSize":55,"font":"方正像素12","color":"#ffffff","align":"center"},
|
||||||
|
"nodeParent":83,
|
||||||
|
"label":"Label(label)",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":84,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x":75,
|
||||||
|
"type":"Box",
|
||||||
|
"props":{"y":12,"x":10,"right":0,"name":"boxBtn","left":0,"height":200},
|
||||||
|
"nodeParent":83,
|
||||||
|
"label":"Box(boxBtn)",
|
||||||
|
"isOpen":true,
|
||||||
|
"isDirectory":true,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":true,
|
||||||
|
"compId":85,
|
||||||
|
"child":[
|
||||||
|
{
|
||||||
|
"x":90,
|
||||||
|
"type":"Button",
|
||||||
|
"props":{"width":500,"skin":"images/button/button_main@3x.png","name":"btn","label":"UI_GenerateNow","centerY":0,"centerX":0},
|
||||||
|
"nodeParent":85,
|
||||||
|
"label":"Button(btn)",
|
||||||
|
"isOpen":false,
|
||||||
|
"isDirectory":true,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":true,
|
||||||
|
"compId":88,
|
||||||
|
"child":[
|
||||||
|
{
|
||||||
|
"type":"Box",
|
||||||
|
"props":{},
|
||||||
|
"nodeParent":88,
|
||||||
|
"label":"Box",
|
||||||
|
"isOpen":true,
|
||||||
|
"isDirectory":true,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":true,
|
||||||
|
"compId":89,
|
||||||
|
"child":[
|
||||||
|
{
|
||||||
|
"type":"Animation",
|
||||||
|
"props":{"y":96,"x":250,"width":0,"source":"view/CyberTheme/animation/circleFlash.ani","scaleX":4,"height":0,"blendMode":"lighter","autoPlay":true},
|
||||||
|
"nodeParent":89,
|
||||||
|
"label":"Animation",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":90,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type":"Box",
|
||||||
|
"props":{"renderType":"mask"},
|
||||||
|
"nodeParent":89,
|
||||||
|
"label":"Box",
|
||||||
|
"isOpen":false,
|
||||||
|
"isDirectory":true,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":true,
|
||||||
|
"compId":91,
|
||||||
|
"child":[
|
||||||
|
{
|
||||||
|
"type":"Rect",
|
||||||
|
"props":{"y":37,"x":25,"width":7,"lineWidth":1,"height":116,"fillColor":"#ff0000"},
|
||||||
|
"nodeParent":91,
|
||||||
|
"label":"Rect",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":92,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type":"Rect",
|
||||||
|
"props":{"y":37,"x":470,"width":7,"lineWidth":1,"height":116,"fillColor":"#ff0000"},
|
||||||
|
"nodeParent":91,
|
||||||
|
"label":"Rect",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":93,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type":"Rect",
|
||||||
|
"props":{"y":21,"x":44,"width":414,"lineWidth":1,"height":6,"fillColor":"#ff0000"},
|
||||||
|
"nodeParent":91,
|
||||||
|
"label":"Rect",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":94,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type":"Rect",
|
||||||
|
"props":{"y":150,"x":171,"width":160,"lineWidth":1,"height":6,"fillColor":"#ff0000"},
|
||||||
|
"nodeParent":91,
|
||||||
|
"label":"Rect",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":95,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type":"Rect",
|
||||||
|
"props":{"y":163,"x":44,"width":121,"lineWidth":1,"height":6,"fillColor":"#ff0000"},
|
||||||
|
"nodeParent":91,
|
||||||
|
"label":"Rect",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":96,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type":"Rect",
|
||||||
|
"props":{"y":163,"x":337,"width":121,"lineWidth":1,"height":6,"fillColor":"#ff0000"},
|
||||||
|
"nodeParent":91,
|
||||||
|
"label":"Rect",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":97,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type":"Rect",
|
||||||
|
"props":{"y":148,"x":29,"width":25,"rotation":40,"lineWidth":1,"height":6,"fillColor":"#ff0000"},
|
||||||
|
"nodeParent":91,
|
||||||
|
"label":"Rect",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":98,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type":"Rect",
|
||||||
|
"props":{"y":150,"x":331,"width":19,"rotation":55,"lineWidth":1,"height":6,"fillColor":"#ff0000"},
|
||||||
|
"nodeParent":91,
|
||||||
|
"label":"Rect",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":99,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type":"Rect",
|
||||||
|
"props":{"y":166,"x":160,"width":19,"rotation":-55,"lineWidth":1,"height":6,"fillColor":"#ff0000"},
|
||||||
|
"nodeParent":91,
|
||||||
|
"label":"Rect",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":100,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type":"Rect",
|
||||||
|
"props":{"y":21,"x":458,"width":25,"rotation":40,"lineWidth":1,"height":6,"fillColor":"#ff0000"},
|
||||||
|
"nodeParent":91,
|
||||||
|
"label":"Rect",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":101,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type":"Rect",
|
||||||
|
"props":{"y":26,"x":48,"width":25,"rotation":140,"lineWidth":1,"height":6,"fillColor":"#ff0000"},
|
||||||
|
"nodeParent":91,
|
||||||
|
"label":"Rect",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":102,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type":"Rect",
|
||||||
|
"props":{"y":153,"x":477,"width":25,"rotation":140,"lineWidth":1,"height":6,"fillColor":"#ff0000"},
|
||||||
|
"nodeParent":91,
|
||||||
|
"label":"Rect",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":103,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type":"Box",
|
||||||
|
"props":{},
|
||||||
|
"nodeParent":88,
|
||||||
|
"label":"Box",
|
||||||
|
"isOpen":false,
|
||||||
|
"isDirectory":true,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":true,
|
||||||
|
"compId":104,
|
||||||
|
"child":[
|
||||||
|
{
|
||||||
|
"type":"Box",
|
||||||
|
"props":{"renderType":"mask"},
|
||||||
|
"nodeParent":104,
|
||||||
|
"label":"Box",
|
||||||
|
"isDirectory":true,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":true,
|
||||||
|
"compId":105,
|
||||||
|
"child":[
|
||||||
|
{
|
||||||
|
"type":"Poly",
|
||||||
|
"props":{"y":41,"x":35,"points":"0,0,8,-6,8,113,0,107","lineWidth":1,"lineColor":"#ff0000","fillColor":"#00ffff"},
|
||||||
|
"nodeParent":105,
|
||||||
|
"label":"Poly",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":106,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type":"Poly",
|
||||||
|
"props":{"y":41,"x":464,"points":"0,0,-8,-6,-8,113,0,107","lineWidth":1,"lineColor":"#ff0000","fillColor":"#00ffff"},
|
||||||
|
"nodeParent":105,
|
||||||
|
"label":"Poly",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":107,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type":"Poly",
|
||||||
|
"props":{"y":160,"x":177,"points":"0,0,147,0,153,10,-6,10","lineWidth":1,"lineColor":"#ff0000","fillColor":"#00ffff"},
|
||||||
|
"nodeParent":105,
|
||||||
|
"label":"Poly",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":108,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type":"Animation",
|
||||||
|
"props":{"y":172,"x":520,"source":"view/CyberTheme/animation/bottomBreath.ani","scaleX":6,"blendMode":"lighter","autoPlay":true},
|
||||||
|
"nodeParent":104,
|
||||||
|
"label":"Animation",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":109,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}]
|
||||||
}]
|
}]
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
@@ -315,13 +657,14 @@
|
|||||||
"props":{"right":0,"left":0,"height":0,"bottom":0},
|
"props":{"right":0,"left":0,"height":0,"bottom":0},
|
||||||
"nodeParent":1,
|
"nodeParent":1,
|
||||||
"label":"Box",
|
"label":"Box",
|
||||||
"isOpen":false,
|
"isOpen":true,
|
||||||
"isDirectory":true,
|
"isDirectory":true,
|
||||||
"isAniNode":true,
|
"isAniNode":true,
|
||||||
"hasChild":true,
|
"hasChild":true,
|
||||||
"compId":63,
|
"compId":63,
|
||||||
"child":[
|
"child":[
|
||||||
{
|
{
|
||||||
|
"x":30,
|
||||||
"type":"Button",
|
"type":"Button",
|
||||||
"props":{"y":-450,"width":500,"var":"btnRetry","skin":"images/button/button_main@3x.png","name":"btnRetry","label":"UI_AllNot","centerX":0},
|
"props":{"y":-450,"width":500,"var":"btnRetry","skin":"images/button/button_main@3x.png","name":"btnRetry","label":"UI_AllNot","centerX":0},
|
||||||
"nodeParent":63,
|
"nodeParent":63,
|
||||||
@@ -585,11 +928,12 @@
|
|||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
"x":30,
|
||||||
"type":"Button",
|
"type":"Button",
|
||||||
"props":{"y":-200,"width":500,"var":"btnNext","skin":"images/button/button_main@3x.png","name":"btnNext","label":"UI_Make_New_Life","centerX":0},
|
"props":{"y":-200,"width":500,"var":"btnNext","skin":"images/button/button_main@3x.png","name":"btnNext","label":"UI_Make_New_Life","centerX":0},
|
||||||
"nodeParent":63,
|
"nodeParent":63,
|
||||||
"label":"Button(btnNext)",
|
"label":"Button(btnNext)",
|
||||||
"isOpen":true,
|
"isOpen":false,
|
||||||
"isDirectory":true,
|
"isDirectory":true,
|
||||||
"isAniNode":true,
|
"isAniNode":true,
|
||||||
"hasChild":true,
|
"hasChild":true,
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"x":0,
|
"x":0,
|
||||||
"type":"View",
|
"type":"View",
|
||||||
"selectedBox":1,
|
"selectedBox":1,
|
||||||
"selecteID":19,
|
"selecteID":28,
|
||||||
"props":{"width":1125,"sceneColor":"#000000","height":2436},
|
"props":{"width":1125,"sceneColor":"#000000","height":2436},
|
||||||
"nodeParent":-1,
|
"nodeParent":-1,
|
||||||
"label":"View",
|
"label":"View",
|
||||||
@@ -55,26 +55,24 @@
|
|||||||
"props":{"right":0,"name":"boxCharacter","left":0},
|
"props":{"right":0,"name":"boxCharacter","left":0},
|
||||||
"nodeParent":8,
|
"nodeParent":8,
|
||||||
"label":"Box(boxCharacter)",
|
"label":"Box(boxCharacter)",
|
||||||
"isOpen":true,
|
"isOpen":false,
|
||||||
"isDirectory":true,
|
"isDirectory":true,
|
||||||
"isAniNode":true,
|
"isAniNode":true,
|
||||||
"hasChild":true,
|
"hasChild":true,
|
||||||
"compId":10,
|
"compId":10,
|
||||||
"child":[
|
"child":[
|
||||||
{
|
{
|
||||||
"x":60,
|
|
||||||
"type":"Box",
|
"type":"Box",
|
||||||
"props":{"y":0,"runtime":"Laya.runtime.ColorfulBox","right":0,"name":"boxName","left":0,"height":100},
|
"props":{"y":0,"runtime":"Laya.runtime.ColorfulBox","right":0,"name":"boxName","left":0,"height":100},
|
||||||
"nodeParent":10,
|
"nodeParent":10,
|
||||||
"label":"Box(boxName)",
|
"label":"Box(boxName)",
|
||||||
"isOpen":true,
|
"isOpen":false,
|
||||||
"isDirectory":true,
|
"isDirectory":true,
|
||||||
"isAniNode":true,
|
"isAniNode":true,
|
||||||
"hasChild":true,
|
"hasChild":true,
|
||||||
"compId":12,
|
"compId":12,
|
||||||
"child":[
|
"child":[
|
||||||
{
|
{
|
||||||
"x":75,
|
|
||||||
"type":"Label",
|
"type":"Label",
|
||||||
"props":{"valign":"middle","text":"颜值10 智力10 体质10 家境Π","name":"label","fontSize":55,"font":"SimHei","color":"#ffffff","centerY":0,"centerX":0,"align":"center"},
|
"props":{"valign":"middle","text":"颜值10 智力10 体质10 家境Π","name":"label","fontSize":55,"font":"SimHei","color":"#ffffff","centerY":0,"centerX":0,"align":"center"},
|
||||||
"nodeParent":12,
|
"nodeParent":12,
|
||||||
@@ -88,7 +86,6 @@
|
|||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"x":60,
|
|
||||||
"type":"VBox",
|
"type":"VBox",
|
||||||
"props":{"top":100,"space":20,"runtime":"Laya.runtime.ColorfulBox","right":25,"name":"vboxStates","left":25},
|
"props":{"top":100,"space":20,"runtime":"Laya.runtime.ColorfulBox","right":25,"name":"vboxStates","left":25},
|
||||||
"nodeParent":10,
|
"nodeParent":10,
|
||||||
@@ -100,7 +97,6 @@
|
|||||||
"compId":11,
|
"compId":11,
|
||||||
"child":[
|
"child":[
|
||||||
{
|
{
|
||||||
"x":75,
|
|
||||||
"type":"Label",
|
"type":"Label",
|
||||||
"props":{"valign":"middle","text":"颜值10 智力10 体质10 家境Π","name":"label","height":100,"fontSize":55,"font":"SimHei","color":"#ffffff","centerX":0,"align":"center"},
|
"props":{"valign":"middle","text":"颜值10 智力10 体质10 家境Π","name":"label","height":100,"fontSize":55,"font":"SimHei","color":"#ffffff","centerX":0,"align":"center"},
|
||||||
"nodeParent":11,
|
"nodeParent":11,
|
||||||
@@ -120,14 +116,13 @@
|
|||||||
"props":{"runtime":"Laya.runtime.ColorfulBox","right":25,"name":"boxTalent","left":25,"height":100},
|
"props":{"runtime":"Laya.runtime.ColorfulBox","right":25,"name":"boxTalent","left":25,"height":100},
|
||||||
"nodeParent":8,
|
"nodeParent":8,
|
||||||
"label":"Box(boxTalent)",
|
"label":"Box(boxTalent)",
|
||||||
"isOpen":true,
|
"isOpen":false,
|
||||||
"isDirectory":true,
|
"isDirectory":true,
|
||||||
"isAniNode":true,
|
"isAniNode":true,
|
||||||
"hasChild":true,
|
"hasChild":true,
|
||||||
"compId":15,
|
"compId":15,
|
||||||
"child":[
|
"child":[
|
||||||
{
|
{
|
||||||
"x":60,
|
|
||||||
"type":"Label",
|
"type":"Label",
|
||||||
"props":{"valign":"middle","text":"颜值10 智力10 体质10 家境Π","name":"label","fontSize":50,"font":"SimHei","color":"#ffffff","centerY":0,"centerX":0,"align":"center"},
|
"props":{"valign":"middle","text":"颜值10 智力10 体质10 家境Π","name":"label","fontSize":50,"font":"SimHei","color":"#ffffff","centerY":0,"centerX":0,"align":"center"},
|
||||||
"nodeParent":15,
|
"nodeParent":15,
|
||||||
@@ -139,6 +134,111 @@
|
|||||||
"child":[
|
"child":[
|
||||||
]
|
]
|
||||||
}]
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x":45,
|
||||||
|
"type":"Box",
|
||||||
|
"props":{"y":10,"x":10,"right":0,"name":"boxUniqueUnGenerate","left":0},
|
||||||
|
"nodeParent":8,
|
||||||
|
"label":"Box(boxUniqueUnGenerate)",
|
||||||
|
"isOpen":true,
|
||||||
|
"isDirectory":true,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":true,
|
||||||
|
"compId":20,
|
||||||
|
"child":[
|
||||||
|
{
|
||||||
|
"x":60,
|
||||||
|
"type":"Box",
|
||||||
|
"props":{"y":0,"runtime":"Laya.runtime.ColorfulBox","right":0,"name":"boxName","left":0,"height":100},
|
||||||
|
"nodeParent":20,
|
||||||
|
"label":"Box(boxName)",
|
||||||
|
"isOpen":true,
|
||||||
|
"isDirectory":true,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":true,
|
||||||
|
"compId":21,
|
||||||
|
"child":[
|
||||||
|
{
|
||||||
|
"x":75,
|
||||||
|
"type":"Label",
|
||||||
|
"props":{"valign":"middle","text":"UI_UniqueWaTaShi","name":"label","fontSize":55,"font":"SimHei","color":"#ffffff","centerY":0,"centerX":0,"align":"center"},
|
||||||
|
"nodeParent":21,
|
||||||
|
"label":"Label(label)",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":22,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x":60,
|
||||||
|
"type":"VBox",
|
||||||
|
"props":{"top":100,"space":20,"runtime":"Laya.runtime.ColorfulBox","right":25,"name":"vboxStates","left":25},
|
||||||
|
"nodeParent":20,
|
||||||
|
"label":"VBox(vboxStates)",
|
||||||
|
"isOpen":true,
|
||||||
|
"isDirectory":true,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":true,
|
||||||
|
"compId":23,
|
||||||
|
"child":[
|
||||||
|
{
|
||||||
|
"x":75,
|
||||||
|
"type":"Label",
|
||||||
|
"props":{"y":1,"valign":"middle","text":"UI_UniqueWaTaShiContent","right":0,"name":"label","left":0,"leading":30,"fontSize":55,"font":"SimHei","color":"#ffffff","align":"center"},
|
||||||
|
"nodeParent":23,
|
||||||
|
"label":"Label(label)",
|
||||||
|
"isOpen":true,
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":24,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"x":75,
|
||||||
|
"type":"Box",
|
||||||
|
"props":{"y":2,"right":0,"name":"boxBtn","left":0,"height":150},
|
||||||
|
"nodeParent":23,
|
||||||
|
"label":"Box(boxBtn)",
|
||||||
|
"isOpen":true,
|
||||||
|
"isDirectory":true,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":true,
|
||||||
|
"compId":25,
|
||||||
|
"child":[
|
||||||
|
{
|
||||||
|
"x":90,
|
||||||
|
"type":"Box",
|
||||||
|
"props":{"runtime":"Laya.runtime.ColorfulBox","right":50,"name":"btn","left":50,"height":120,"centerY":0},
|
||||||
|
"nodeParent":25,
|
||||||
|
"label":"Box(btn)",
|
||||||
|
"isOpen":true,
|
||||||
|
"isDirectory":true,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":true,
|
||||||
|
"compId":26,
|
||||||
|
"child":[
|
||||||
|
{
|
||||||
|
"x":105,
|
||||||
|
"type":"Label",
|
||||||
|
"props":{"y":30,"x":290,"text":"UI_GenerateNow","name":"label","fontSize":60,"font":"SimHei","color":"#ffffff","centerY":0,"centerX":0},
|
||||||
|
"nodeParent":26,
|
||||||
|
"label":"Label(label)",
|
||||||
|
"isDirectory":false,
|
||||||
|
"isAniNode":true,
|
||||||
|
"hasChild":false,
|
||||||
|
"compId":27,
|
||||||
|
"child":[
|
||||||
|
]
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}]
|
||||||
|
}]
|
||||||
}]
|
}]
|
||||||
}]
|
}]
|
||||||
},
|
},
|
||||||
|
|||||||
1
public/chunk/184.19048.js
Normal file
1
public/chunk/184.19048.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/chunk/211.94cf4.js
Normal file
1
public/chunk/211.94cf4.js
Normal file
File diff suppressed because one or more lines are too long
1
public/chunk/803.36088.js
Normal file
1
public/chunk/803.36088.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/chunk/806.29c5a.js
Normal file
1
public/chunk/806.29c5a.js
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1
public/chunk/main.cd60f.js
Normal file
1
public/chunk/main.cd60f.js
Normal file
File diff suppressed because one or more lines are too long
@@ -1066,7 +1066,7 @@
|
|||||||
"name": "刷刷刷",
|
"name": "刷刷刷",
|
||||||
"description": "集齐橙色天赋",
|
"description": "集齐橙色天赋",
|
||||||
"grade": 3,
|
"grade": 3,
|
||||||
"condition": "(ATLT?[1023])&(ATLT?[1048])&(ATLT?[1064])&(ATLT?[1114])&(ATLT?[1135])&(ATLT?[1141])",
|
"condition": "(ATLT?[1023])&(ATLT?[1048])&(ATLT?[1064])&(ATLT?[1114])&(ATLT?[1135])&(ATLT?[1141])&(ATLT?[1147])",
|
||||||
"hide": 0,
|
"hide": 0,
|
||||||
"opportunity": "START"
|
"opportunity": "START"
|
||||||
},
|
},
|
||||||
@@ -1474,5 +1474,14 @@
|
|||||||
"condition": "(ATLT?[2028])&(ATLT?[2029])&(ATLT?[2030])&(ATLT?[2031])",
|
"condition": "(ATLT?[2028])&(ATLT?[2029])&(ATLT?[2030])&(ATLT?[2031])",
|
||||||
"hide": 0,
|
"hide": 0,
|
||||||
"opportunity": "START"
|
"opportunity": "START"
|
||||||
|
},
|
||||||
|
"265": {
|
||||||
|
"id": 265,
|
||||||
|
"name": "死了但没完全死",
|
||||||
|
"description": "死而复生",
|
||||||
|
"grade": 2,
|
||||||
|
"condition": "EVT?[20000,20001,11504]",
|
||||||
|
"hide": 0,
|
||||||
|
"opportunity": "TRAJECTORY"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -20269,6 +20269,7 @@
|
|||||||
"11347*0.01",
|
"11347*0.01",
|
||||||
"11348*0.01",
|
"11348*0.01",
|
||||||
"11349",
|
"11349",
|
||||||
|
"20002*999999",
|
||||||
"40065*1000000000000000000",
|
"40065*1000000000000000000",
|
||||||
"40066*100000000000000000",
|
"40066*100000000000000000",
|
||||||
"40067*100000000000000000",
|
"40067*100000000000000000",
|
||||||
@@ -20325,6 +20326,7 @@
|
|||||||
"11346*0.1",
|
"11346*0.1",
|
||||||
"11347*0.01",
|
"11347*0.01",
|
||||||
"11348*0.01",
|
"11348*0.01",
|
||||||
|
"20002*999999",
|
||||||
"40065*1000000000000000000",
|
"40065*1000000000000000000",
|
||||||
"40066*100000000000000000",
|
"40066*100000000000000000",
|
||||||
"40067*100000000000000000",
|
"40067*100000000000000000",
|
||||||
@@ -20370,6 +20372,7 @@
|
|||||||
"20383*0.01",
|
"20383*0.01",
|
||||||
"20384*0.01",
|
"20384*0.01",
|
||||||
"40001*999999999",
|
"40001*999999999",
|
||||||
|
"20002*999999",
|
||||||
"40065*1000000000000000000",
|
"40065*1000000000000000000",
|
||||||
"40066*100000000000000000",
|
"40066*100000000000000000",
|
||||||
"40067*100000000000000000",
|
"40067*100000000000000000",
|
||||||
|
|||||||
@@ -11392,6 +11392,14 @@
|
|||||||
},
|
},
|
||||||
"NoRandom": 1
|
"NoRandom": 1
|
||||||
},
|
},
|
||||||
|
"20002": {
|
||||||
|
"id": 20002,
|
||||||
|
"event": "你在睡梦中安然离世。",
|
||||||
|
"include": "EVT?[10000]",
|
||||||
|
"branch": [
|
||||||
|
"EVT?[10000]:10000"
|
||||||
|
]
|
||||||
|
},
|
||||||
"20007": {
|
"20007": {
|
||||||
"id": 20007,
|
"id": 20007,
|
||||||
"event": "你喜欢看画面人设好看的动漫。",
|
"event": "你喜欢看画面人设好看的动漫。",
|
||||||
|
|||||||
@@ -1328,7 +1328,8 @@
|
|||||||
"1114*0.2",
|
"1114*0.2",
|
||||||
"1023*0.2",
|
"1023*0.2",
|
||||||
"1048*0.2",
|
"1048*0.2",
|
||||||
"1033*5"
|
"1033*5",
|
||||||
|
"1147*0.2"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1589,7 +1590,8 @@
|
|||||||
1114,
|
1114,
|
||||||
1023,
|
1023,
|
||||||
1048,
|
1048,
|
||||||
"1033*5"
|
"1033*6",
|
||||||
|
1147
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1653,7 +1655,8 @@
|
|||||||
"1135",
|
"1135",
|
||||||
"1107",
|
"1107",
|
||||||
"1080",
|
"1080",
|
||||||
"1065"
|
"1065",
|
||||||
|
"1148"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -1066,7 +1066,7 @@
|
|||||||
"name": "刷刷刷",
|
"name": "刷刷刷",
|
||||||
"description": "集齐橙色天赋",
|
"description": "集齐橙色天赋",
|
||||||
"grade": 3,
|
"grade": 3,
|
||||||
"condition": "(ATLT?[1023])&(ATLT?[1048])&(ATLT?[1064])&(ATLT?[1114])&(ATLT?[1135])&(ATLT?[1141])",
|
"condition": "(ATLT?[1023])&(ATLT?[1048])&(ATLT?[1064])&(ATLT?[1114])&(ATLT?[1135])&(ATLT?[1141])&(ATLT?[1147])",
|
||||||
"hide": 0,
|
"hide": 0,
|
||||||
"opportunity": "START"
|
"opportunity": "START"
|
||||||
},
|
},
|
||||||
@@ -1474,5 +1474,14 @@
|
|||||||
"condition": "(ATLT?[2028])&(ATLT?[2029])&(ATLT?[2030])&(ATLT?[2031])",
|
"condition": "(ATLT?[2028])&(ATLT?[2029])&(ATLT?[2030])&(ATLT?[2031])",
|
||||||
"hide": 0,
|
"hide": 0,
|
||||||
"opportunity": "START"
|
"opportunity": "START"
|
||||||
|
},
|
||||||
|
"265": {
|
||||||
|
"id": 265,
|
||||||
|
"name": "死了但没完全死",
|
||||||
|
"description": "死而复生",
|
||||||
|
"grade": 2,
|
||||||
|
"condition": "EVT?[20000,20001,11504]",
|
||||||
|
"hide": 0,
|
||||||
|
"opportunity": "TRAJECTORY"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -20269,6 +20269,7 @@
|
|||||||
"11347*0.01",
|
"11347*0.01",
|
||||||
"11348*0.01",
|
"11348*0.01",
|
||||||
"11349",
|
"11349",
|
||||||
|
"20002*999999",
|
||||||
"40065*1000000000000000000",
|
"40065*1000000000000000000",
|
||||||
"40066*100000000000000000",
|
"40066*100000000000000000",
|
||||||
"40067*100000000000000000",
|
"40067*100000000000000000",
|
||||||
@@ -20325,6 +20326,7 @@
|
|||||||
"11346*0.1",
|
"11346*0.1",
|
||||||
"11347*0.01",
|
"11347*0.01",
|
||||||
"11348*0.01",
|
"11348*0.01",
|
||||||
|
"20002*999999",
|
||||||
"40065*1000000000000000000",
|
"40065*1000000000000000000",
|
||||||
"40066*100000000000000000",
|
"40066*100000000000000000",
|
||||||
"40067*100000000000000000",
|
"40067*100000000000000000",
|
||||||
@@ -20370,6 +20372,7 @@
|
|||||||
"20383*0.01",
|
"20383*0.01",
|
||||||
"20384*0.01",
|
"20384*0.01",
|
||||||
"40001*999999999",
|
"40001*999999999",
|
||||||
|
"20002*999999",
|
||||||
"40065*1000000000000000000",
|
"40065*1000000000000000000",
|
||||||
"40066*100000000000000000",
|
"40066*100000000000000000",
|
||||||
"40067*100000000000000000",
|
"40067*100000000000000000",
|
||||||
|
|||||||
@@ -11392,6 +11392,14 @@
|
|||||||
},
|
},
|
||||||
"NoRandom": 1
|
"NoRandom": 1
|
||||||
},
|
},
|
||||||
|
"20002": {
|
||||||
|
"id": 20002,
|
||||||
|
"event": "你在睡梦中安然离世。",
|
||||||
|
"include": "EVT?[10000]",
|
||||||
|
"branch": [
|
||||||
|
"EVT?[10000]:10000"
|
||||||
|
]
|
||||||
|
},
|
||||||
"20007": {
|
"20007": {
|
||||||
"id": 20007,
|
"id": 20007,
|
||||||
"event": "你喜欢看画面人设好看的动漫。",
|
"event": "你喜欢看画面人设好看的动漫。",
|
||||||
|
|||||||
@@ -1328,7 +1328,8 @@
|
|||||||
"1114*0.2",
|
"1114*0.2",
|
||||||
"1023*0.2",
|
"1023*0.2",
|
||||||
"1048*0.2",
|
"1048*0.2",
|
||||||
"1033*5"
|
"1033*5",
|
||||||
|
"1147*0.2"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1589,7 +1590,8 @@
|
|||||||
1114,
|
1114,
|
||||||
1023,
|
1023,
|
||||||
1048,
|
1048,
|
||||||
"1033*5"
|
"1033*6",
|
||||||
|
1147
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@@ -1653,7 +1655,8 @@
|
|||||||
"1135",
|
"1135",
|
||||||
"1107",
|
"1107",
|
||||||
"1080",
|
"1080",
|
||||||
"1065"
|
"1065",
|
||||||
|
"1148"
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -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.ba1cc.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.cd60f.js"></script></head><body style="background:black"></body></html>
|
||||||
@@ -160,11 +160,7 @@ class App{
|
|||||||
globalThis.$ui = UIManager.getInstance();
|
globalThis.$ui = UIManager.getInstance();
|
||||||
|
|
||||||
if(theme=='default') {
|
if(theme=='default') {
|
||||||
if(!localStorage.getItem('__')) {
|
theme = localStorage.getItem('theme') || 'default';
|
||||||
localStorage.setItem('__', 1);
|
|
||||||
localStorage.setItem('theme', 'cyber');
|
|
||||||
}
|
|
||||||
theme = localStorage.getItem('theme');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$ui.theme = theme;
|
$ui.theme = theme;
|
||||||
|
|||||||
0
src/functions/unique.js
Normal file
0
src/functions/unique.js
Normal file
@@ -141,9 +141,14 @@ export default ({
|
|||||||
UI_CelebrityMode: 'Celebrity',
|
UI_CelebrityMode: 'Celebrity',
|
||||||
UI_CelebrityModeDescription: 'Past life is celebrity\nRebirth to modern',
|
UI_CelebrityModeDescription: 'Past life is celebrity\nRebirth to modern',
|
||||||
UI_AllNot: '↻All Not',
|
UI_AllNot: '↻All Not',
|
||||||
|
UI_UniqueWaTaShi: 'Unique of mine',
|
||||||
|
UI_UniqueWaTaShiContent: '\nUnique character card different from other 60 million player\nAll property, All talent, All random\nAll has only one chance',
|
||||||
|
UI_GenerateNow: 'Generate Now',
|
||||||
|
|
||||||
|
|
||||||
M_NoRank: 'There is no rank',
|
M_NoRank: 'There is no rank',
|
||||||
M_PleaseSelectOne: 'Please Select One',
|
M_PleaseSelectOne: 'Please Select One',
|
||||||
|
M_UnGenerate: 'Unique Character no generate',
|
||||||
M_DisableExtendTalent: 'Celebrity mode can\'t extends talent',
|
M_DisableExtendTalent: 'Celebrity mode can\'t extends talent',
|
||||||
|
|
||||||
F_RemakeTimes: 'Remake {0} Times',
|
F_RemakeTimes: 'Remake {0} Times',
|
||||||
|
|||||||
@@ -143,10 +143,13 @@ export default ({
|
|||||||
UI_CelebrityMode: '名人模式',
|
UI_CelebrityMode: '名人模式',
|
||||||
UI_CelebrityModeDescription: '前世是古代名人\n重开到了现代',
|
UI_CelebrityModeDescription: '前世是古代名人\n重开到了现代',
|
||||||
UI_AllNot: '↻都不是',
|
UI_AllNot: '↻都不是',
|
||||||
|
UI_UniqueWaTaShi: '独一无二的我',
|
||||||
|
UI_UniqueWaTaShiContent: '\n6000万玩家中独一无二的角色卡\n所有属性 所有天赋 随机生成\n 每人只能生成一次',
|
||||||
|
UI_GenerateNow: '立即生成',
|
||||||
|
|
||||||
M_NoRank: '别卷了,没有排行榜',
|
M_NoRank: '别卷了,没有排行榜',
|
||||||
M_PleaseSelectOne: '请选择一个名人',
|
M_PleaseSelectOne: '请选择一个名人',
|
||||||
|
M_UnGenerate: '独一无二的我还没有生成',
|
||||||
M_DisableExtendTalent: '名人模式不能继承天赋',
|
M_DisableExtendTalent: '名人模式不能继承天赋',
|
||||||
|
|
||||||
F_RemakeTimes: '已重开{0}次',
|
F_RemakeTimes: '已重开{0}次',
|
||||||
|
|||||||
24
src/index.js
24
src/index.js
@@ -196,5 +196,29 @@ core.config({
|
|||||||
],
|
],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
characterConfig: { // config for character
|
||||||
|
characterPullCount: 3,
|
||||||
|
rateableKnife: 10,
|
||||||
|
propertyWeight: [
|
||||||
|
[ 0, 1],
|
||||||
|
[ 1, 2],
|
||||||
|
[ 2, 3],
|
||||||
|
[ 3, 4],
|
||||||
|
[ 4, 5],
|
||||||
|
[ 5, 6],
|
||||||
|
[ 6, 5],
|
||||||
|
[ 7, 4],
|
||||||
|
[ 8, 3],
|
||||||
|
[ 9, 2],
|
||||||
|
[10, 1],
|
||||||
|
],
|
||||||
|
talentWeight: [
|
||||||
|
[ 1, 1],
|
||||||
|
[ 2, 2],
|
||||||
|
[ 3, 3],
|
||||||
|
[ 4, 2],
|
||||||
|
[ 5, 1],
|
||||||
|
],
|
||||||
|
},
|
||||||
});
|
});
|
||||||
game.start(query);
|
game.start(query);
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
import { clone } from '../functions/util.js';
|
|
||||||
import { checkCondition } from '../functions/condition.js';
|
|
||||||
|
|
||||||
class Achievement {
|
class Achievement {
|
||||||
constructor() {}
|
constructor(system) {
|
||||||
|
this.#system = system;
|
||||||
|
}
|
||||||
|
|
||||||
// 时机
|
// 时机
|
||||||
Opportunity = {
|
Opportunity = {
|
||||||
@@ -12,6 +11,7 @@ class Achievement {
|
|||||||
END: "END", // 游戏完成,点击重开 重开次数在这之后才会+1
|
END: "END", // 游戏完成,点击重开 重开次数在这之后才会+1
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#system;
|
||||||
#achievements;
|
#achievements;
|
||||||
|
|
||||||
initial({achievements}) {
|
initial({achievements}) {
|
||||||
@@ -23,7 +23,11 @@ class Achievement {
|
|||||||
return Object.keys(this.#achievements).length;
|
return Object.keys(this.#achievements).length;
|
||||||
}
|
}
|
||||||
|
|
||||||
list(property) {
|
get #prop() {
|
||||||
|
return this.#system.request(this.#system.Module.PROPERTY);
|
||||||
|
}
|
||||||
|
|
||||||
|
list() {
|
||||||
return Object
|
return Object
|
||||||
.values(this.#achievements)
|
.values(this.#achievements)
|
||||||
.map(({
|
.map(({
|
||||||
@@ -32,34 +36,34 @@ class Achievement {
|
|||||||
})=>({
|
})=>({
|
||||||
id, name, opportunity,
|
id, name, opportunity,
|
||||||
description, hide, grade,
|
description, hide, grade,
|
||||||
isAchieved: this.isAchieved(id, property),
|
isAchieved: this.isAchieved(id, this.#prop),
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
get(achievementId) {
|
get(achievementId) {
|
||||||
const achievement = this.#achievements[achievementId];
|
const achievement = this.#achievements[achievementId];
|
||||||
if(!achievement) throw new Error(`[ERROR] No Achievement[${achievementId}]`);
|
if(!achievement) throw new Error(`[ERROR] No Achievement[${achievementId}]`);
|
||||||
return clone(achievement);
|
return this.#system.clone(achievement);
|
||||||
}
|
}
|
||||||
|
|
||||||
check(achievementId, property) {
|
check(achievementId) {
|
||||||
const { condition } = this.get(achievementId);
|
const { condition } = this.get(achievementId);
|
||||||
return checkCondition(property, condition);
|
return this.#system.check(condition);
|
||||||
}
|
}
|
||||||
|
|
||||||
isAchieved(achievementId, property) {
|
isAchieved(achievementId) {
|
||||||
for(const [achieved] of (property.get(property.TYPES.ACHV)||[]))
|
for(const [achieved] of (this.#prop.get(this.#prop.TYPES.ACHV)||[]))
|
||||||
if(achieved == achievementId) return true;
|
if(achieved == achievementId) return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
achieve(opportunity, property) {
|
achieve(opportunity) {
|
||||||
this.list(property)
|
this.list()
|
||||||
.filter(({isAchieved})=>!isAchieved)
|
.filter(({isAchieved})=>!isAchieved)
|
||||||
.filter(({opportunity: o})=>o==opportunity)
|
.filter(({opportunity: o})=>o==opportunity)
|
||||||
.filter(({id})=>this.check(id, property))
|
.filter(({id})=>this.check(id, this.#prop))
|
||||||
.forEach(({id})=>{
|
.forEach(({id})=>{
|
||||||
property.achieve(property.TYPES.ACHV, id)
|
this.#prop.achieve(this.#prop.TYPES.ACHV, id)
|
||||||
$$event('achievement', this.get(id))
|
$$event('achievement', this.get(id))
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,15 +1,23 @@
|
|||||||
import { clone, weightRandom } from '../functions/util.js';
|
|
||||||
|
|
||||||
class Character {
|
class Character {
|
||||||
constructor() {}
|
constructor(system) {
|
||||||
|
this.#system = system;
|
||||||
|
}
|
||||||
|
|
||||||
|
#system;
|
||||||
#characters;
|
#characters;
|
||||||
#characterPullCount;
|
#characterPullCount;
|
||||||
#rateableKnife;
|
#rateableKnife;
|
||||||
#rate;
|
#rate;
|
||||||
|
#pipe = [];
|
||||||
|
#uniqueWaTaShi;
|
||||||
|
#propertyWeight;
|
||||||
|
#talentWeight
|
||||||
|
|
||||||
initial({characters}) {
|
initial({characters}) {
|
||||||
this.#characters = characters;
|
this.#characters = characters;
|
||||||
|
const uniqueWaTaShi = localStorage.getItem('uniqueWaTaShi');
|
||||||
|
if(uniqueWaTaShi != null || uniqueWaTaShi != 'undefined')
|
||||||
|
this.#uniqueWaTaShi = JSON.parse(uniqueWaTaShi);
|
||||||
return this.count;
|
return this.count;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -20,16 +28,70 @@ class Character {
|
|||||||
config({
|
config({
|
||||||
characterPullCount = 3,
|
characterPullCount = 3,
|
||||||
rateableKnife = 10,
|
rateableKnife = 10,
|
||||||
|
propertyWeight,
|
||||||
|
talentWeight,
|
||||||
} = {}) {
|
} = {}) {
|
||||||
this.#characterPullCount = characterPullCount;
|
this.#characterPullCount = characterPullCount;
|
||||||
this.#rateableKnife = rateableKnife;
|
this.#rateableKnife = rateableKnife;
|
||||||
|
this.#propertyWeight = propertyWeight;
|
||||||
|
this.#talentWeight = talentWeight;
|
||||||
|
}
|
||||||
|
|
||||||
|
get #unique() {
|
||||||
|
if(this.#uniqueWaTaShi) {
|
||||||
|
return this.#system.clone(this.#uniqueWaTaShi);
|
||||||
|
}
|
||||||
|
|
||||||
|
const now = Date.now();
|
||||||
|
this.#pipe.push(now);
|
||||||
|
if(this.#pipe.length < 10) return null;
|
||||||
|
const time = this.#pipe.shift();
|
||||||
|
if(now - time > 10000) return null;
|
||||||
|
return {unique: true, generate: false};
|
||||||
|
}
|
||||||
|
|
||||||
|
set #unique(data) {
|
||||||
|
this.#uniqueWaTaShi = this.#system.clone(data);
|
||||||
|
this.#uniqueWaTaShi.unique = true;
|
||||||
|
this.#uniqueWaTaShi.generate = true;
|
||||||
|
localStorage.setItem(
|
||||||
|
'uniqueWaTaShi',
|
||||||
|
JSON.stringify(this.#uniqueWaTaShi)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
get #weightRandom() {
|
||||||
|
return this.#system.function(this.#system.Function.UTIL).weightRandom;
|
||||||
|
}
|
||||||
|
|
||||||
|
generateUnique() {
|
||||||
|
if(this.#uniqueWaTaShi) return this.#unique;
|
||||||
|
const weightRandom = this.#weightRandom;
|
||||||
|
const {CHR, INT, STR, MNY} = this.#system.PropertyTypes;
|
||||||
|
|
||||||
|
this.#unique = {
|
||||||
|
property: {
|
||||||
|
[CHR]: weightRandom(this.#propertyWeight),
|
||||||
|
[INT]: weightRandom(this.#propertyWeight),
|
||||||
|
[STR]: weightRandom(this.#propertyWeight),
|
||||||
|
[MNY]: weightRandom(this.#propertyWeight),
|
||||||
|
},
|
||||||
|
talent: this.#system
|
||||||
|
.request(this.#system.Module.TALENT)
|
||||||
|
.random(weightRandom(this.#talentWeight)),
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.#unique;
|
||||||
}
|
}
|
||||||
|
|
||||||
random() {
|
random() {
|
||||||
return this.rateable();
|
return {
|
||||||
|
unique: this.#unique,
|
||||||
|
normal: this.#rateable(),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rateable() {
|
#rateable() {
|
||||||
if(!this.#rate) {
|
if(!this.#rate) {
|
||||||
this.#rate = {};
|
this.#rate = {};
|
||||||
for(const id in this.#characters) {
|
for(const id in this.#characters) {
|
||||||
@@ -38,6 +100,7 @@ class Character {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const r = [];
|
const r = [];
|
||||||
|
const weightRandom = this.#weightRandom;
|
||||||
new Array(this.#characterPullCount)
|
new Array(this.#characterPullCount)
|
||||||
.fill(0)
|
.fill(0)
|
||||||
.forEach(()=>{
|
.forEach(()=>{
|
||||||
@@ -63,7 +126,7 @@ class Character {
|
|||||||
this.#rate[id] -= this.#rateableKnife;
|
this.#rate[id] -= this.#rateableKnife;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return r.map(id=>clone(this.#characters[id]));
|
return r.map(id=>this.#system.clone(this.#characters[id]));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { clone } from '../functions/util.js';
|
|
||||||
import { checkCondition } from '../functions/condition.js';
|
|
||||||
|
|
||||||
class Event {
|
class Event {
|
||||||
constructor() {}
|
constructor(system) {
|
||||||
|
this.#system = system;
|
||||||
|
}
|
||||||
|
|
||||||
|
#system;
|
||||||
#events;
|
#events;
|
||||||
|
|
||||||
initial({events}) {
|
initial({events}) {
|
||||||
@@ -24,18 +24,18 @@ class Event {
|
|||||||
return Object.keys(this.#events).length;
|
return Object.keys(this.#events).length;
|
||||||
}
|
}
|
||||||
|
|
||||||
check(eventId, property) {
|
check(eventId) {
|
||||||
const { include, exclude, NoRandom } = this.get(eventId);
|
const { include, exclude, NoRandom } = this.get(eventId);
|
||||||
if(NoRandom) return false;
|
if(NoRandom) return false;
|
||||||
if(exclude && checkCondition(property, exclude)) return false;
|
if(exclude && this.#system.check(exclude)) return false;
|
||||||
if(include) return checkCondition(property, include);
|
if(include) return this.#system.check(include);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
get(eventId) {
|
get(eventId) {
|
||||||
const event = this.#events[eventId];
|
const event = this.#events[eventId];
|
||||||
if(!event) throw new Error(`[ERROR] No Event[${eventId}]`);
|
if(!event) throw new Error(`[ERROR] No Event[${eventId}]`);
|
||||||
return clone(event);
|
return this.#system.clone(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
information(eventId) {
|
information(eventId) {
|
||||||
@@ -43,11 +43,11 @@ class Event {
|
|||||||
return { description };
|
return { description };
|
||||||
}
|
}
|
||||||
|
|
||||||
do(eventId, property) {
|
do(eventId) {
|
||||||
const { effect, branch, event: description, postEvent, grade } = this.get(eventId);
|
const { effect, branch, event: description, postEvent, grade } = this.get(eventId);
|
||||||
if(branch)
|
if(branch)
|
||||||
for(const [cond, next] of branch)
|
for(const [cond, next] of branch)
|
||||||
if(checkCondition(property, cond))
|
if(this.#system.check(cond))
|
||||||
return { effect, next, description, grade };
|
return { effect, next, description, grade };
|
||||||
return { effect, postEvent, description, grade };
|
return { effect, postEvent, description, grade };
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,6 @@
|
|||||||
import { clone, weightRandom, getListValuesMap, getConvertedMap } from '../functions/util.js'
|
import * as util from '../functions/util.js';
|
||||||
|
import * as fCondition from '../functions/condition.js';
|
||||||
|
|
||||||
import Property from './property.js';
|
import Property from './property.js';
|
||||||
import Event from './event.js';
|
import Event from './event.js';
|
||||||
import Talent from './talent.js';
|
import Talent from './talent.js';
|
||||||
@@ -7,11 +9,24 @@ import Character from './character.js';
|
|||||||
|
|
||||||
class Life {
|
class Life {
|
||||||
constructor() {
|
constructor() {
|
||||||
this.#property = new Property();
|
this.#property = new Property(this);
|
||||||
this.#event = new Event();
|
this.#event = new Event(this);
|
||||||
this.#talent = new Talent();
|
this.#talent = new Talent(this);
|
||||||
this.#achievement = new Achievement();
|
this.#achievement = new Achievement(this);
|
||||||
this.#character = new Character();
|
this.#character = new Character(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
Module = {
|
||||||
|
PROPERTY: 'PROPERTY',
|
||||||
|
TALENT: 'TALENT',
|
||||||
|
EVENT: 'EVENT',
|
||||||
|
ACHIEVEMENT: 'ACHIEVEMENT',
|
||||||
|
CHARACTER: 'CHARACTER',
|
||||||
|
}
|
||||||
|
|
||||||
|
Function = {
|
||||||
|
CONDITION: 'CONDITION',
|
||||||
|
UTIL: 'UTIL',
|
||||||
}
|
}
|
||||||
|
|
||||||
#property;
|
#property;
|
||||||
@@ -65,24 +80,47 @@ class Life {
|
|||||||
this.#character.config(characterConfig);
|
this.#character.config(characterConfig);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
request(module) {
|
||||||
|
switch (module) {
|
||||||
|
case this.Module.ACHIEVEMENT: return this.#achievement;
|
||||||
|
case this.Module.CHARACTER: return this.#character;
|
||||||
|
case this.Module.EVENT: return this.#event;
|
||||||
|
case this.Module.PROPERTY: return this.#property;
|
||||||
|
case this.Module.TALENT: return this.#talent;
|
||||||
|
default: return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function(type) {
|
||||||
|
switch (type) {
|
||||||
|
case this.Function.CONDITION: return fCondition;
|
||||||
|
case this.Function.UTIL: return util;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
check(condition) {
|
||||||
|
return fCondition.checkCondition(this.#property,condition);
|
||||||
|
}
|
||||||
|
|
||||||
|
clone(...args) {
|
||||||
|
return util.clone(...args);
|
||||||
|
}
|
||||||
|
|
||||||
remake(talents) {
|
remake(talents) {
|
||||||
this.#initialData = clone(this.#defaultPropertys);
|
this.#initialData = util.clone(this.#defaultPropertys);
|
||||||
this.#initialData.TLT = clone(talents);
|
this.#initialData.TLT = util.clone(talents);
|
||||||
this.#triggerTalents = {};
|
this.#triggerTalents = {};
|
||||||
return this.talentReplace(this.#initialData.TLT);
|
return this.talentReplace(this.#initialData.TLT);
|
||||||
}
|
}
|
||||||
|
|
||||||
start(allocation) {
|
start(allocation) {
|
||||||
for(const key in allocation) {
|
for(const key in allocation) {
|
||||||
this.#initialData[key] = clone(allocation[key]);
|
this.#initialData[key] = util.clone(allocation[key]);
|
||||||
}
|
}
|
||||||
this.#property.restart(this.#initialData);
|
this.#property.restart(this.#initialData);
|
||||||
this.doTalent()
|
this.doTalent()
|
||||||
this.#property.restartLastStep();
|
this.#property.restartLastStep();
|
||||||
this.#achievement.achieve(
|
this.#achievement.achieve(this.AchievementOpportunity.START);
|
||||||
this.AchievementOpportunity.START,
|
|
||||||
this.#property
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getPropertyPoints() {
|
getPropertyPoints() {
|
||||||
@@ -102,10 +140,7 @@ class Life {
|
|||||||
const isEnd = this.#property.isEnd();
|
const isEnd = this.#property.isEnd();
|
||||||
|
|
||||||
const content = [talentContent, eventContent].flat();
|
const content = [talentContent, eventContent].flat();
|
||||||
this.#achievement.achieve(
|
this.#achievement.achieve(this.AchievementOpportunity.TRAJECTORY);
|
||||||
this.AchievementOpportunity.TRAJECTORY,
|
|
||||||
this.#property
|
|
||||||
)
|
|
||||||
return { age, content, isEnd };
|
return { age, content, isEnd };
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -131,7 +166,7 @@ class Life {
|
|||||||
|
|
||||||
const contents = [];
|
const contents = [];
|
||||||
for(const talentId of talents) {
|
for(const talentId of talents) {
|
||||||
const result = this.#talent.do(talentId, this.#property);
|
const result = this.#talent.do(talentId);
|
||||||
if(!result) continue;
|
if(!result) continue;
|
||||||
this.#triggerTalents[talentId] = this.getTalentCurrentTriggerCount(talentId) + 1;
|
this.#triggerTalents[talentId] = this.getTalentCurrentTriggerCount(talentId) + 1;
|
||||||
const { effect, name, description, grade } = result;
|
const { effect, name, description, grade } = result;
|
||||||
@@ -148,7 +183,7 @@ class Life {
|
|||||||
}
|
}
|
||||||
|
|
||||||
doEvent(eventId) {
|
doEvent(eventId) {
|
||||||
const { effect, next, description, postEvent, grade } = this.#event.do(eventId, this.#property);
|
const { effect, next, description, postEvent, grade } = this.#event.do(eventId);
|
||||||
this.#property.change(this.PropertyTypes.EVT, eventId);
|
this.#property.change(this.PropertyTypes.EVT, eventId);
|
||||||
this.#property.effect(effect);
|
this.#property.effect(effect);
|
||||||
const content = {
|
const content = {
|
||||||
@@ -162,7 +197,7 @@ class Life {
|
|||||||
}
|
}
|
||||||
|
|
||||||
random(events) {
|
random(events) {
|
||||||
return weightRandom(
|
return util.weightRandom(
|
||||||
events.filter(
|
events.filter(
|
||||||
([eventId])=>this.#event.check(eventId, this.#property)
|
([eventId])=>this.#event.check(eventId, this.#property)
|
||||||
)
|
)
|
||||||
@@ -181,11 +216,12 @@ class Life {
|
|||||||
|
|
||||||
characterRandom() {
|
characterRandom() {
|
||||||
const characters = this.#character.random();
|
const characters = this.#character.random();
|
||||||
characters.forEach(
|
const replaceTalent = v=>v.talent=v.talent.map(
|
||||||
v=>v.talent=v.talent.map(
|
id=>this.#talent.get(id)
|
||||||
id=>this.#talent.get(id)
|
|
||||||
)
|
|
||||||
);
|
);
|
||||||
|
characters.normal.forEach(replaceTalent);
|
||||||
|
if(characters.unique && characters.unique.talent)
|
||||||
|
replaceTalent(characters.unique);
|
||||||
return characters;
|
return characters;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -197,12 +233,16 @@ class Life {
|
|||||||
return this.#talent.exclude(talents, exclusive);
|
return this.#talent.exclude(talents, exclusive);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
generateUnique() {
|
||||||
|
this.#character.generateUnique();
|
||||||
|
}
|
||||||
|
|
||||||
#getJudges(...types) {
|
#getJudges(...types) {
|
||||||
return getListValuesMap(types.flat(), key => this.#property.judge(key));
|
return util.getListValuesMap(types.flat(), key => this.#property.judge(key));
|
||||||
}
|
}
|
||||||
|
|
||||||
#getPropertys(...types) {
|
#getPropertys(...types) {
|
||||||
return getListValuesMap(types.flat(), key => this.#property.get(key));
|
return util.getListValuesMap(types.flat(), key => this.#property.get(key));
|
||||||
}
|
}
|
||||||
|
|
||||||
get lastExtendTalent() {
|
get lastExtendTalent() {
|
||||||
@@ -210,10 +250,7 @@ class Life {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get summary() {
|
get summary() {
|
||||||
this.#achievement.achieve(
|
this.#achievement.achieve(this.AchievementOpportunity.SUMMARY);
|
||||||
this.AchievementOpportunity.SUMMARY,
|
|
||||||
this.#property
|
|
||||||
)
|
|
||||||
|
|
||||||
const pt = this.PropertyTypes;
|
const pt = this.PropertyTypes;
|
||||||
|
|
||||||
@@ -259,16 +296,13 @@ class Life {
|
|||||||
get PropertyTypes() { return this.#property.TYPES; }
|
get PropertyTypes() { return this.#property.TYPES; }
|
||||||
get AchievementOpportunity() { return this.#achievement.Opportunity; }
|
get AchievementOpportunity() { return this.#achievement.Opportunity; }
|
||||||
get talentSelectLimit() { return this.#talentSelectLimit; }
|
get talentSelectLimit() { return this.#talentSelectLimit; }
|
||||||
get propertyAllocateLimit() { return clone(this.#propertyAllocateLimit); }
|
get propertyAllocateLimit() { return util.clone(this.#propertyAllocateLimit); }
|
||||||
|
|
||||||
get propertys() { return this.#property.getPropertys(); }
|
get propertys() { return this.#property.getPropertys(); }
|
||||||
get times() { return this.#property.get(this.PropertyTypes.TMS) || 0; }
|
get times() { return this.#property.get(this.PropertyTypes.TMS) || 0; }
|
||||||
set times(v) {
|
set times(v) {
|
||||||
this.#property.set(this.PropertyTypes.TMS, v);
|
this.#property.set(this.PropertyTypes.TMS, v);
|
||||||
this.#achievement.achieve(
|
this.#achievement.achieve(this.AchievementOpportunity.END);
|
||||||
this.AchievementOpportunity.END,
|
|
||||||
this.#property
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
get specialThanks() { return this.#specialThanks; }
|
get specialThanks() { return this.#specialThanks; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
import { max, min, sum, clone, listRandom } from '../functions/util.js';
|
|
||||||
|
|
||||||
class Property {
|
class Property {
|
||||||
constructor() {}
|
constructor(system) {
|
||||||
|
this.#system = system;
|
||||||
|
}
|
||||||
|
|
||||||
TYPES = {
|
TYPES = {
|
||||||
// 本局
|
// 本局
|
||||||
@@ -70,11 +70,16 @@ class Property {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#system;
|
||||||
#ageData;
|
#ageData;
|
||||||
#data = {};
|
#data = {};
|
||||||
#total;
|
#total;
|
||||||
#judge;
|
#judge;
|
||||||
|
|
||||||
|
get #util() {
|
||||||
|
return this.#system.function(this.#system.Function.UTIL);
|
||||||
|
}
|
||||||
|
|
||||||
initial({age, total}) {
|
initial({age, total}) {
|
||||||
this.#ageData = age;
|
this.#ageData = age;
|
||||||
for(const a in age) {
|
for(const a in age) {
|
||||||
@@ -151,6 +156,7 @@ class Property {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get(prop) {
|
get(prop) {
|
||||||
|
const util = this.#util;
|
||||||
switch(prop) {
|
switch(prop) {
|
||||||
case this.TYPES.AGE:
|
case this.TYPES.AGE:
|
||||||
case this.TYPES.CHR:
|
case this.TYPES.CHR:
|
||||||
@@ -161,14 +167,14 @@ class Property {
|
|||||||
case this.TYPES.LIF:
|
case this.TYPES.LIF:
|
||||||
case this.TYPES.TLT:
|
case this.TYPES.TLT:
|
||||||
case this.TYPES.EVT:
|
case this.TYPES.EVT:
|
||||||
return clone(this.#data[prop]);
|
return util.clone(this.#data[prop]);
|
||||||
case this.TYPES.LAGE:
|
case this.TYPES.LAGE:
|
||||||
case this.TYPES.LCHR:
|
case this.TYPES.LCHR:
|
||||||
case this.TYPES.LINT:
|
case this.TYPES.LINT:
|
||||||
case this.TYPES.LSTR:
|
case this.TYPES.LSTR:
|
||||||
case this.TYPES.LMNY:
|
case this.TYPES.LMNY:
|
||||||
case this.TYPES.LSPR:
|
case this.TYPES.LSPR:
|
||||||
return min(
|
return util.min(
|
||||||
this.#data[prop],
|
this.#data[prop],
|
||||||
this.get(this.fallback(prop))
|
this.get(this.fallback(prop))
|
||||||
);
|
);
|
||||||
@@ -178,7 +184,7 @@ class Property {
|
|||||||
case this.TYPES.HSTR:
|
case this.TYPES.HSTR:
|
||||||
case this.TYPES.HMNY:
|
case this.TYPES.HMNY:
|
||||||
case this.TYPES.HSPR:
|
case this.TYPES.HSPR:
|
||||||
return max(
|
return util.max(
|
||||||
this.#data[prop],
|
this.#data[prop],
|
||||||
this.get(this.fallback(prop))
|
this.get(this.fallback(prop))
|
||||||
);
|
);
|
||||||
@@ -189,7 +195,7 @@ class Property {
|
|||||||
const HSTR = this.get(this.TYPES.HSTR);
|
const HSTR = this.get(this.TYPES.HSTR);
|
||||||
const HMNY = this.get(this.TYPES.HMNY);
|
const HMNY = this.get(this.TYPES.HMNY);
|
||||||
const HSPR = this.get(this.TYPES.HSPR);
|
const HSPR = this.get(this.TYPES.HSPR);
|
||||||
return Math.floor(sum(HCHR, HINT, HSTR, HMNY, HSPR)*2 + HAGE/2);
|
return Math.floor(util.sum(HCHR, HINT, HSTR, HMNY, HSPR)*2 + HAGE/2);
|
||||||
case this.TYPES.TMS:
|
case this.TYPES.TMS:
|
||||||
return this.lsget('times') || 0;
|
return this.lsget('times') || 0;
|
||||||
case this.TYPES.EXT:
|
case this.TYPES.EXT:
|
||||||
@@ -253,7 +259,7 @@ class Property {
|
|||||||
case this.TYPES.LIF:
|
case this.TYPES.LIF:
|
||||||
case this.TYPES.TLT:
|
case this.TYPES.TLT:
|
||||||
case this.TYPES.EVT:
|
case this.TYPES.EVT:
|
||||||
this.hl(prop, this.#data[prop] = clone(value));
|
this.hl(prop, this.#data[prop] = this.#system.clone(value));
|
||||||
this.achieve(prop, value);
|
this.achieve(prop, value);
|
||||||
return;
|
return;
|
||||||
case this.TYPES.TMS:
|
case this.TYPES.TMS:
|
||||||
@@ -267,7 +273,7 @@ class Property {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getPropertys() {
|
getPropertys() {
|
||||||
return clone({
|
return this.#system.clone({
|
||||||
[this.TYPES.AGE]: this.get(this.TYPES.AGE),
|
[this.TYPES.AGE]: this.get(this.TYPES.AGE),
|
||||||
[this.TYPES.CHR]: this.get(this.TYPES.CHR),
|
[this.TYPES.CHR]: this.get(this.TYPES.CHR),
|
||||||
[this.TYPES.INT]: this.get(this.TYPES.INT),
|
[this.TYPES.INT]: this.get(this.TYPES.INT),
|
||||||
@@ -315,7 +321,8 @@ class Property {
|
|||||||
|
|
||||||
hookSpecial(prop) {
|
hookSpecial(prop) {
|
||||||
switch(prop) {
|
switch(prop) {
|
||||||
case this.TYPES.RDM: return listRandom(this.SPECIAL.RDM);
|
case this.TYPES.RDM:
|
||||||
|
return this.#util.listRandom(this.SPECIAL.RDM);
|
||||||
default: return prop;
|
default: return prop;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -334,15 +341,6 @@ class Property {
|
|||||||
const d = this.#judge[prop];
|
const d = this.#judge[prop];
|
||||||
let length = d.length;
|
let length = d.length;
|
||||||
|
|
||||||
// progress judge
|
|
||||||
// const p = 1/length;
|
|
||||||
// const progress = () => {
|
|
||||||
// const min = d[length][0] || 0;
|
|
||||||
// const max = d[length+1]?.[0] || value;
|
|
||||||
// if(max == min) return 1;
|
|
||||||
// return p * (length + (value - min) / (max - min));
|
|
||||||
// }
|
|
||||||
|
|
||||||
const progress = () => Math.max(Math.min(value, 10), 0) / 10;
|
const progress = () => Math.max(Math.min(value, 10), 0) / 10;
|
||||||
|
|
||||||
while(length--) {
|
while(length--) {
|
||||||
@@ -363,7 +361,7 @@ class Property {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getAgeData(age) {
|
getAgeData(age) {
|
||||||
return clone(this.#ageData[age]);
|
return this.#system.clone(this.#ageData[age]);
|
||||||
}
|
}
|
||||||
|
|
||||||
hl(prop, value) {
|
hl(prop, value) {
|
||||||
@@ -378,8 +376,8 @@ class Property {
|
|||||||
default: return;
|
default: return;
|
||||||
}
|
}
|
||||||
const [l, h] = keys;
|
const [l, h] = keys;
|
||||||
this.#data[l] = min(this.#data[l], value);
|
this.#data[l] = this.#util.min(this.#data[l], value);
|
||||||
this.#data[h] = max(this.#data[h], value);
|
this.#data[h] = this.#util.max(this.#data[h], value);
|
||||||
}
|
}
|
||||||
|
|
||||||
achieve(prop, newData) {
|
achieve(prop, newData) {
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
import { clone, weightRandom } from '../functions/util.js';
|
|
||||||
import { checkCondition, extractMaxTriggers } from '../functions/condition.js';
|
|
||||||
|
|
||||||
class Talent {
|
class Talent {
|
||||||
constructor() {}
|
constructor(system) {
|
||||||
|
this.#system = system;
|
||||||
|
}
|
||||||
|
|
||||||
|
#system;
|
||||||
#talents;
|
#talents;
|
||||||
#talentPullCount;
|
#talentPullCount;
|
||||||
#talentRate;
|
#talentRate;
|
||||||
@@ -11,11 +11,12 @@ class Talent {
|
|||||||
|
|
||||||
initial({talents}) {
|
initial({talents}) {
|
||||||
this.#talents = talents;
|
this.#talents = talents;
|
||||||
|
const emt = this.#system.function(this.#system.Function.CONDITION).extractMaxTriggers;
|
||||||
for(const id in talents) {
|
for(const id in talents) {
|
||||||
const talent = talents[id];
|
const talent = talents[id];
|
||||||
talent.id= Number(id);
|
talent.id= Number(id);
|
||||||
talent.grade = Number(talent.grade);
|
talent.grade = Number(talent.grade);
|
||||||
talent.max_triggers = extractMaxTriggers(talent.condition);
|
talent.max_triggers = emt(talent.condition);
|
||||||
if(talent.replacement) {
|
if(talent.replacement) {
|
||||||
for(let key in talent.replacement) {
|
for(let key in talent.replacement) {
|
||||||
const obj = {};
|
const obj = {};
|
||||||
@@ -34,6 +35,10 @@ class Talent {
|
|||||||
return Object.keys(this.#talents).length;
|
return Object.keys(this.#talents).length;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get #prop() {
|
||||||
|
return this.#system.request(this.#system.Module.PROPERTY);
|
||||||
|
}
|
||||||
|
|
||||||
config({
|
config({
|
||||||
talentPullCount = 10, // number of talents to pull from the talent pool
|
talentPullCount = 10, // number of talents to pull from the talent pool
|
||||||
talentRate = { 1:100, 2:10, 3:1, total: 1000 }, // rate of talent pull
|
talentRate = { 1:100, 2:10, 3:1, total: 1000 }, // rate of talent pull
|
||||||
@@ -45,15 +50,15 @@ class Talent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
check(talentId, property) {
|
check(talentId) {
|
||||||
const { condition } = this.get(talentId);
|
const { condition } = this.get(talentId);
|
||||||
return checkCondition(property, condition);
|
return this.#system.check(this.#prop, condition);
|
||||||
}
|
}
|
||||||
|
|
||||||
get(talentId) {
|
get(talentId) {
|
||||||
const talent = this.#talents[talentId];
|
const talent = this.#talents[talentId];
|
||||||
if(!talent) throw new Error(`[ERROR] No Talent[${talentId}]`);
|
if(!talent) throw new Error(`[ERROR] No Talent[${talentId}]`);
|
||||||
return clone(talent);
|
return this.#system.clone(talent);
|
||||||
}
|
}
|
||||||
|
|
||||||
information(talentId) {
|
information(talentId) {
|
||||||
@@ -81,7 +86,7 @@ class Talent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getRate(additionValues = {}) {
|
getRate(additionValues = {}) {
|
||||||
const rate = clone(this.#talentRate);
|
const rate = this.#system.clone(this.#talentRate);
|
||||||
const addition = { 1:1, 2:1, 3:1, };
|
const addition = { 1:1, 2:1, 3:1, };
|
||||||
|
|
||||||
Object.keys(additionValues).forEach(key => {
|
Object.keys(additionValues).forEach(key => {
|
||||||
@@ -131,6 +136,19 @@ class Talent {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
random(count) {
|
||||||
|
const talents = Object
|
||||||
|
.keys(this.#talents)
|
||||||
|
.filter(id=>!this.#talents[id].exclusive);
|
||||||
|
return new Array(count)
|
||||||
|
.fill(1)
|
||||||
|
.map(()=>talents.splice(
|
||||||
|
Math.floor(Math.random()*talents.length)%talents.length,
|
||||||
|
1
|
||||||
|
)[0]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
allocationAddition(talents) {
|
allocationAddition(talents) {
|
||||||
if(Array.isArray(talents)) {
|
if(Array.isArray(talents)) {
|
||||||
let addition = 0;
|
let addition = 0;
|
||||||
@@ -141,9 +159,9 @@ class Talent {
|
|||||||
return Number(this.get(talents).status) || 0;
|
return Number(this.get(talents).status) || 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
do(talentId, property) {
|
do(talentId) {
|
||||||
const { effect, condition, grade, name, description } = this.get(talentId);
|
const { effect, condition, grade, name, description } = this.get(talentId);
|
||||||
if(condition && !checkCondition(property, condition))
|
if(condition && !this.#system.check(condition))
|
||||||
return null;
|
return null;
|
||||||
return { effect, grade, name, description };
|
return { effect, grade, name, description };
|
||||||
}
|
}
|
||||||
@@ -154,7 +172,8 @@ class Talent {
|
|||||||
if(!replacement) return null;
|
if(!replacement) return null;
|
||||||
const list = [];
|
const list = [];
|
||||||
if(replacement.grade) {
|
if(replacement.grade) {
|
||||||
this.forEach(({id, grade})=>{
|
this.forEach(({id, grade, exclusive})=>{
|
||||||
|
if(exclusive) return;
|
||||||
if(!replacement.grade[grade]) return;
|
if(!replacement.grade[grade]) return;
|
||||||
if(this.exclude(talents, id)) return;
|
if(this.exclude(talents, id)) return;
|
||||||
list.push([id, replacement.grade[grade]]);
|
list.push([id, replacement.grade[grade]]);
|
||||||
@@ -170,16 +189,17 @@ class Talent {
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const wr = this.#system.function(this.#system.Function.UTIL).weightRandom;
|
||||||
const replace = (talent, talents) => {
|
const replace = (talent, talents) => {
|
||||||
const replaceList = getReplaceList(talent, talents);
|
const replaceList = getReplaceList(talent, talents);
|
||||||
if(!replaceList) return talent;
|
if(!replaceList) return talent;
|
||||||
const rand = weightRandom(replaceList);
|
const rand = wr(replaceList);
|
||||||
return replace(
|
return replace(
|
||||||
rand, talents.concat(rand)
|
rand, talents.concat(rand)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const newTalents = clone(talents);
|
const newTalents = this.#system.clone(talents);
|
||||||
const result = {};
|
const result = {};
|
||||||
for(const talent of talents) {
|
for(const talent of talents) {
|
||||||
const replaceId = replace(talent, newTalents);
|
const replaceId = replace(talent, newTalents);
|
||||||
@@ -194,7 +214,7 @@ class Talent {
|
|||||||
forEach(callback) {
|
forEach(callback) {
|
||||||
if(typeof callback != 'function') return;
|
if(typeof callback != 'function') return;
|
||||||
for(const id in this.#talents)
|
for(const id in this.#talents)
|
||||||
callback(clone(this.#talents[id]), id);
|
callback(this.#system.clone(this.#talents[id]), id);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
@@ -1,14 +1,13 @@
|
|||||||
export default class CyberCelebrity extends ui.view.CyberTheme.CelebrityUI {
|
export default class CyberCelebrity extends ui.view.CyberTheme.CelebrityUI {
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
this.btnRetry.on(Laya.Event.CLICK, this, this.random);
|
this.btnRetry.on(Laya.Event.CLICK, this, ()=>this.random());
|
||||||
this.btnNext.on(Laya.Event.CLICK, this, this.next);
|
this.btnNext.on(Laya.Event.CLICK, this, this.next);
|
||||||
this.panelCharacter.vScrollBar.elasticDistance = 150;
|
this.panelCharacter.vScrollBar.elasticDistance = 150;
|
||||||
}
|
}
|
||||||
|
|
||||||
#characters;
|
|
||||||
#selected;
|
#selected;
|
||||||
static #createComponent = Laya.plugin.extractComponents(CyberCelebrity.uiView, ['boxCharacter','boxTalent']);
|
static #createComponent = Laya.plugin.extractComponents(CyberCelebrity.uiView, ['boxCharacter','boxTalent','boxUniqueUnGenerate']);
|
||||||
#createCharacterItem(dataSource, click) {
|
#createCharacterItem(dataSource, click) {
|
||||||
const {name, property, talent} = dataSource;
|
const {name, property, talent} = dataSource;
|
||||||
const item = CyberCelebrity.#createComponent('boxCharacter');
|
const item = CyberCelebrity.#createComponent('boxCharacter');
|
||||||
@@ -45,6 +44,30 @@ export default class CyberCelebrity extends ui.view.CyberTheme.CelebrityUI {
|
|||||||
if(click) item.click(click);
|
if(click) item.click(click);
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
#createUniqueUnGenerateItem(generate) {
|
||||||
|
const item = CyberCelebrity.#createComponent('boxUniqueUnGenerate');
|
||||||
|
const boxName = item.getChildByName('boxName');
|
||||||
|
const vboxStates = item.getChildByName('vboxStates');
|
||||||
|
const label = vboxStates.getChildByName('label');
|
||||||
|
const boxBtn = vboxStates.getChildByName('boxBtn');
|
||||||
|
const btn = boxBtn.getChildByName('btn');
|
||||||
|
|
||||||
|
label.event(Laya.Event.RESIZE);
|
||||||
|
vboxStates.scaleY = 0;
|
||||||
|
item.dataSource = false;
|
||||||
|
item.switch = showDetails => vboxStates.scaleY = !!showDetails?1:0;
|
||||||
|
item.click = (cb, caller) => {
|
||||||
|
boxName.offAll(Laya.Event.CLICK);
|
||||||
|
boxName.on(Laya.Event.CLICK, caller || this, cb);
|
||||||
|
}
|
||||||
|
item.generate = (cb, caller) => {
|
||||||
|
btn.offAll(Laya.Event.CLICK);
|
||||||
|
btn.on(Laya.Event.CLICK, caller || this, cb);
|
||||||
|
}
|
||||||
|
if(generate) item.generate(generate);
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
this.random();
|
this.random();
|
||||||
@@ -55,27 +78,47 @@ export default class CyberCelebrity extends ui.view.CyberTheme.CelebrityUI {
|
|||||||
this.vboxCharacter.destroyChildren(true);
|
this.vboxCharacter.destroyChildren(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
random() {
|
random(g) {
|
||||||
this.#selected = null;
|
this.#selected = null;
|
||||||
this.vboxCharacter.destroyChildren(true);
|
this.vboxCharacter.destroyChildren(true);
|
||||||
this.#characters = core.characterRandom();
|
const {unique, normal} = core.characterRandom();
|
||||||
this.#characters.forEach(character => {
|
const items = [];
|
||||||
const item = this.#createCharacterItem(character);
|
const uniqueItem = this.generateUnique(unique, ()=>{
|
||||||
|
core.generateUnique();
|
||||||
|
this.random(normal);
|
||||||
|
|
||||||
|
});
|
||||||
|
if(uniqueItem) items.push(uniqueItem);
|
||||||
|
(g||normal).forEach(character => items.push(this.#createCharacterItem(character)));
|
||||||
|
|
||||||
|
items.forEach((item, i) => {
|
||||||
|
item.y = i;
|
||||||
this.vboxCharacter.addChild(item);
|
this.vboxCharacter.addChild(item);
|
||||||
item.click(()=>{
|
item.click(()=>{
|
||||||
if(this.#selected) this.#selected.switch(false);
|
if(this.#selected) this.#selected.switch(false);
|
||||||
this.#selected = item;
|
this.#selected = item;
|
||||||
item.switch(true);
|
item.switch(true);
|
||||||
item.event(Laya.Event.RESIZE);
|
item.event(Laya.Event.RESIZE);
|
||||||
});
|
})
|
||||||
});
|
});
|
||||||
|
if(g&&uniqueItem) {
|
||||||
|
this.#selected = uniqueItem;
|
||||||
|
uniqueItem.switch(true);
|
||||||
|
uniqueItem.event(Laya.Event.RESIZE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
generateUnique(data, generate) {
|
||||||
|
if(!data) return null;
|
||||||
|
if(!data.generate) return this.#createUniqueUnGenerateItem(generate);
|
||||||
|
data.name = $lang.UI_UniqueWaTaShi;
|
||||||
|
return this.#createCharacterItem(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
next() {
|
next() {
|
||||||
if(!this.#selected) {
|
if(!this.#selected) return $$event('message', ['M_PleaseSelectOne']);
|
||||||
$$event('message', ['M_PleaseSelectOne']);
|
if(!this.#selected.dataSource) return $$event('message', ['M_UnGenerate']);
|
||||||
return;
|
|
||||||
}
|
|
||||||
const {property: propertyAllocate, talent: talents} = this.#selected.dataSource;
|
const {property: propertyAllocate, talent: talents} = this.#selected.dataSource;
|
||||||
const replace = core.remake(talents.map(talent => talent.id));
|
const replace = core.remake(talents.map(talent => talent.id));
|
||||||
if(replace.length > 0) {
|
if(replace.length > 0) {
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
export default class Celebrity extends ui.view.DefaultTheme.CelebrityUI {
|
export default class Celebrity extends ui.view.DefaultTheme.CelebrityUI {
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
this.btnRetry.on(Laya.Event.CLICK, this, this.random);
|
this.btnRetry.on(Laya.Event.CLICK, this, ()=>this.random());
|
||||||
this.btnNext.on(Laya.Event.CLICK, this, this.next);
|
this.btnNext.on(Laya.Event.CLICK, this, this.next);
|
||||||
this.panelCharacter.vScrollBar.elasticDistance = 150;
|
this.panelCharacter.vScrollBar.elasticDistance = 150;
|
||||||
}
|
}
|
||||||
|
|
||||||
#characters;
|
|
||||||
#selected;
|
#selected;
|
||||||
static #createComponent = Laya.plugin.extractComponents(Celebrity.uiView, ['boxCharacter','boxTalent']);
|
static #createComponent = Laya.plugin.extractComponents(Celebrity.uiView, ['boxCharacter','boxTalent','boxUniqueUnGenerate']);
|
||||||
#createCharacterItem(dataSource, click) {
|
#createCharacterItem(dataSource, click) {
|
||||||
const {name, property, talent} = dataSource;
|
const {name, property, talent} = dataSource;
|
||||||
const style = $ui.common.characterItem;
|
const style = $ui.common.characterItem;
|
||||||
@@ -47,6 +46,35 @@ export default class Celebrity extends ui.view.DefaultTheme.CelebrityUI {
|
|||||||
if(click) item.click(click);
|
if(click) item.click(click);
|
||||||
return item;
|
return item;
|
||||||
}
|
}
|
||||||
|
#createUniqueUnGenerateItem(generate) {
|
||||||
|
const style = $ui.common.characterItem;
|
||||||
|
const item = Celebrity.#createComponent('boxUniqueUnGenerate');
|
||||||
|
const boxName = item.getChildByName('boxName');
|
||||||
|
const vboxStates = item.getChildByName('vboxStates');
|
||||||
|
const label = vboxStates.getChildByName('label');
|
||||||
|
const boxBtn = vboxStates.getChildByName('boxBtn');
|
||||||
|
const btn = boxBtn.getChildByName('btn');
|
||||||
|
|
||||||
|
$_.deepMapSet(boxName, style.name);
|
||||||
|
$_.deepMapSet(vboxStates, style.state);
|
||||||
|
$_.deepMapSet(btn, style.name);
|
||||||
|
|
||||||
|
boxBtn.y = label.height + vboxStates.space;
|
||||||
|
label.event(Laya.Event.RESIZE);
|
||||||
|
vboxStates.scaleY = 0;
|
||||||
|
item.dataSource = false;
|
||||||
|
item.switch = showDetails => vboxStates.scaleY = !!showDetails?1:0;
|
||||||
|
item.click = (cb, caller) => {
|
||||||
|
boxName.offAll(Laya.Event.CLICK);
|
||||||
|
boxName.on(Laya.Event.CLICK, caller || this, cb);
|
||||||
|
}
|
||||||
|
item.generate = (cb, caller) => {
|
||||||
|
btn.offAll(Laya.Event.CLICK);
|
||||||
|
btn.on(Laya.Event.CLICK, caller || this, cb);
|
||||||
|
}
|
||||||
|
if(generate) item.generate(generate);
|
||||||
|
return item;
|
||||||
|
}
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
this.random();
|
this.random();
|
||||||
@@ -57,27 +85,47 @@ export default class Celebrity extends ui.view.DefaultTheme.CelebrityUI {
|
|||||||
this.vboxCharacter.destroyChildren(true);
|
this.vboxCharacter.destroyChildren(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
random() {
|
random(g) {
|
||||||
this.#selected = null;
|
this.#selected = null;
|
||||||
this.vboxCharacter.destroyChildren(true);
|
this.vboxCharacter.destroyChildren(true);
|
||||||
this.#characters = core.characterRandom();
|
const {unique, normal} = core.characterRandom();
|
||||||
this.#characters.forEach(character => {
|
const items = [];
|
||||||
const item = this.#createCharacterItem(character);
|
const uniqueItem = this.generateUnique(unique, ()=>{
|
||||||
|
core.generateUnique();
|
||||||
|
this.random(normal);
|
||||||
|
|
||||||
|
});
|
||||||
|
if(uniqueItem) items.push(uniqueItem);
|
||||||
|
(g||normal).forEach(character => items.push(this.#createCharacterItem(character)));
|
||||||
|
|
||||||
|
items.forEach((item, i) => {
|
||||||
|
item.y = i;
|
||||||
this.vboxCharacter.addChild(item);
|
this.vboxCharacter.addChild(item);
|
||||||
item.click(()=>{
|
item.click(()=>{
|
||||||
if(this.#selected) this.#selected.switch(false);
|
if(this.#selected) this.#selected.switch(false);
|
||||||
this.#selected = item;
|
this.#selected = item;
|
||||||
item.switch(true);
|
item.switch(true);
|
||||||
item.event(Laya.Event.RESIZE);
|
item.event(Laya.Event.RESIZE);
|
||||||
});
|
})
|
||||||
});
|
});
|
||||||
|
if(g&&uniqueItem) {
|
||||||
|
this.#selected = uniqueItem;
|
||||||
|
uniqueItem.switch(true);
|
||||||
|
uniqueItem.event(Laya.Event.RESIZE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
generateUnique(data, generate) {
|
||||||
|
if(!data) return null;
|
||||||
|
if(!data.generate) return this.#createUniqueUnGenerateItem(generate);
|
||||||
|
data.name = $lang.UI_UniqueWaTaShi;
|
||||||
|
return this.#createCharacterItem(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
next() {
|
next() {
|
||||||
if(!this.#selected) {
|
if(!this.#selected) return $$event('message', ['M_PleaseSelectOne']);
|
||||||
$$event('message', ['M_PleaseSelectOne']);
|
if(!this.#selected.dataSource) return $$event('message', ['M_UnGenerate']);
|
||||||
return;
|
|
||||||
}
|
|
||||||
const {property: propertyAllocate, talent: talents} = this.#selected.dataSource;
|
const {property: propertyAllocate, talent: talents} = this.#selected.dataSource;
|
||||||
const replace = core.remake(talents.map(talent => talent.id));
|
const replace = core.remake(talents.map(talent => talent.id));
|
||||||
if(replace.length > 0) {
|
if(replace.length > 0) {
|
||||||
|
|||||||
Reference in New Issue
Block a user