diff --git a/assets/resources/gui/element/herobox.prefab b/assets/resources/gui/element/herobox.prefab index 9678fa00..21b67fcd 100644 --- a/assets/resources/gui/element/herobox.prefab +++ b/assets/resources/gui/element/herobox.prefab @@ -37,23 +37,23 @@ "__id__": 341 }, { - "__id__": 435 + "__id__": 423 } ], "_active": true, "_components": [ { - "__id__": 466 + "__id__": 454 }, { - "__id__": 468 + "__id__": 456 }, { - "__id__": 470 + "__id__": 458 } ], "_prefab": { - "__id__": 572 + "__id__": 560 }, "_lpos": { "__type__": "cc.Vec3", @@ -5922,23 +5922,23 @@ "__id__": 342 }, { - "__id__": 385 + "__id__": 379 } ], "_active": true, "_components": [ { - "__id__": 428 + "__id__": 416 }, { - "__id__": 430 + "__id__": 418 }, { - "__id__": 432 + "__id__": 420 } ], "_prefab": { - "__id__": 434 + "__id__": 422 }, "_lpos": { "__type__": "cc.Vec3", @@ -6032,6 +6032,9 @@ { "__id__": 360 }, + { + "__id__": 361 + }, { "__id__": 362 }, @@ -6048,37 +6051,25 @@ "__id__": 368 }, { - "__id__": 370 + "__id__": 369 }, { - "__id__": 372 + "__id__": 371 }, { "__id__": 373 }, { - "__id__": 374 + "__id__": 375 }, { - "__id__": 375 + "__id__": 376 }, { "__id__": 377 }, { - "__id__": 379 - }, - { - "__id__": 381 - }, - { - "__id__": 382 - }, - { - "__id__": 383 - }, - { - "__id__": 384 + "__id__": 378 } ], "removedComponents": [] @@ -6230,67 +6221,6 @@ "propertyPath": [ "_contentSize" ], - "value": { - "__type__": "cc.Size", - "width": 190, - "height": 60 - } - }, - { - "__type__": "cc.TargetInfo", - "localID": [ - "cdti5U6ZNG2Z/RykAJNVTw" - ] - }, - { - "__type__": "CCPropertyOverrideInfo", - "targetInfo": { - "__id__": 359 - }, - "propertyPath": [ - "_contentSize" - ], - "value": { - "__type__": "cc.Size", - "width": 182, - "height": 48 - } - }, - { - "__type__": "cc.TargetInfo", - "localID": [ - "3cTH6kgb9D1bt8syQyX+k8" - ] - }, - { - "__type__": "CCPropertyOverrideInfo", - "targetInfo": { - "__id__": 361 - }, - "propertyPath": [ - "_lpos" - ], - "value": { - "__type__": "cc.Vec3", - "x": -85, - "y": 20.5, - "z": 0 - } - }, - { - "__type__": "cc.TargetInfo", - "localID": [ - "3eGuUajkVIeK78uF29soeR" - ] - }, - { - "__type__": "CCPropertyOverrideInfo", - "targetInfo": { - "__id__": 363 - }, - "propertyPath": [ - "_contentSize" - ], "value": { "__type__": "cc.Size", "width": 96.123046875, @@ -6306,7 +6236,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 365 + "__id__": 359 }, "propertyPath": [ "_top" @@ -6322,7 +6252,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 365 + "__id__": 359 }, "propertyPath": [ "_bottom" @@ -6347,7 +6277,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 369 + "__id__": 363 }, "propertyPath": [ "_string" @@ -6363,7 +6293,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 371 + "__id__": 365 }, "propertyPath": [ "_contentSize" @@ -6383,7 +6313,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 369 + "__id__": 363 }, "propertyPath": [ "_fontSize" @@ -6393,7 +6323,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 369 + "__id__": 363 }, "propertyPath": [ "_actualFontSize" @@ -6403,7 +6333,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 369 + "__id__": 363 }, "propertyPath": [ "_lineHeight" @@ -6413,14 +6343,14 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 376 + "__id__": 370 }, "propertyPath": [ "_lpos" ], "value": { "__type__": "cc.Vec3", - "x": 27, + "x": -27, "y": 0, "z": 0 } @@ -6434,7 +6364,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 378 + "__id__": 372 }, "propertyPath": [ "_layoutType" @@ -6450,14 +6380,14 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 380 + "__id__": 374 }, "propertyPath": [ "_lpos" ], "value": { "__type__": "cc.Vec3", - "x": -21.0615234375, + "x": 21.0615234375, "y": 0, "z": 0 } @@ -6471,7 +6401,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 378 + "__id__": 372 }, "propertyPath": [ "_isAlign" @@ -6481,7 +6411,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 365 + "__id__": 359 }, "propertyPath": [ "_left" @@ -6491,7 +6421,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 365 + "__id__": 359 }, "propertyPath": [ "_right" @@ -6515,14 +6445,14 @@ "__id__": 341 }, "_prefab": { - "__id__": 386 + "__id__": 380 }, "__editorExtras__": {} }, { "__type__": "cc.PrefabInfo", "root": { - "__id__": 385 + "__id__": 379 }, "asset": { "__uuid__": "506d0f89-1cf1-4c3b-be47-a3abaf3695e8", @@ -6530,7 +6460,7 @@ }, "fileId": "60RuUkpjBAGoLk3z4xlHcF", "instance": { - "__id__": 387 + "__id__": 381 }, "targetOverrides": null }, @@ -6543,24 +6473,36 @@ "mountedChildren": [], "mountedComponents": [ { - "__id__": 388 + "__id__": 382 } ], "propertyOverrides": [ { - "__id__": 392 + "__id__": 386 }, { - "__id__": 394 + "__id__": 388 + }, + { + "__id__": 389 + }, + { + "__id__": 390 + }, + { + "__id__": 391 + }, + { + "__id__": 393 }, { "__id__": 395 }, { - "__id__": 396 + "__id__": 397 }, { - "__id__": 397 + "__id__": 398 }, { "__id__": 399 @@ -6569,22 +6511,25 @@ "__id__": 401 }, { - "__id__": 403 + "__id__": 402 + }, + { + "__id__": 404 }, { "__id__": 405 }, { - "__id__": 407 + "__id__": 406 }, { - "__id__": 409 + "__id__": 408 }, { "__id__": 410 }, { - "__id__": 411 + "__id__": 412 }, { "__id__": 413 @@ -6593,31 +6538,7 @@ "__id__": 414 }, { - "__id__": 416 - }, - { - "__id__": 417 - }, - { - "__id__": 418 - }, - { - "__id__": 420 - }, - { - "__id__": 422 - }, - { - "__id__": 424 - }, - { - "__id__": 425 - }, - { - "__id__": 426 - }, - { - "__id__": 427 + "__id__": 415 } ], "removedComponents": [] @@ -6625,11 +6546,11 @@ { "__type__": "cc.MountedComponentsInfo", "targetInfo": { - "__id__": 389 + "__id__": 383 }, "components": [ { - "__id__": 390 + "__id__": 384 } ] }, @@ -6645,15 +6566,15 @@ "_objFlags": 0, "__editorExtras__": { "mountedRoot": { - "__id__": 385 + "__id__": 379 } }, "node": { - "__id__": 385 + "__id__": 379 }, "_enabled": true, "__prefab": { - "__id__": 391 + "__id__": 385 }, "_alignFlags": 0, "_target": null, @@ -6682,7 +6603,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 393 + "__id__": 387 }, "propertyPath": [ "_name" @@ -6698,7 +6619,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 393 + "__id__": 387 }, "propertyPath": [ "_lpos" @@ -6713,7 +6634,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 393 + "__id__": 387 }, "propertyPath": [ "_lrot" @@ -6729,7 +6650,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 393 + "__id__": 387 }, "propertyPath": [ "_euler" @@ -6744,7 +6665,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 398 + "__id__": 392 }, "propertyPath": [ "_contentSize" @@ -6764,68 +6685,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 400 - }, - "propertyPath": [ - "_contentSize" - ], - "value": { - "__type__": "cc.Size", - "width": 190, - "height": 60 - } - }, - { - "__type__": "cc.TargetInfo", - "localID": [ - "cdti5U6ZNG2Z/RykAJNVTw" - ] - }, - { - "__type__": "CCPropertyOverrideInfo", - "targetInfo": { - "__id__": 402 - }, - "propertyPath": [ - "_contentSize" - ], - "value": { - "__type__": "cc.Size", - "width": 182, - "height": 48 - } - }, - { - "__type__": "cc.TargetInfo", - "localID": [ - "3cTH6kgb9D1bt8syQyX+k8" - ] - }, - { - "__type__": "CCPropertyOverrideInfo", - "targetInfo": { - "__id__": 404 - }, - "propertyPath": [ - "_lpos" - ], - "value": { - "__type__": "cc.Vec3", - "x": -85, - "y": 20.5, - "z": 0 - } - }, - { - "__type__": "cc.TargetInfo", - "localID": [ - "3eGuUajkVIeK78uF29soeR" - ] - }, - { - "__type__": "CCPropertyOverrideInfo", - "targetInfo": { - "__id__": 406 + "__id__": 394 }, "propertyPath": [ "_contentSize" @@ -6845,7 +6705,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 408 + "__id__": 396 }, "propertyPath": [ "_top" @@ -6861,7 +6721,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 408 + "__id__": 396 }, "propertyPath": [ "_bottom" @@ -6871,7 +6731,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 393 + "__id__": 387 }, "propertyPath": [ "_lscale" @@ -6886,7 +6746,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 412 + "__id__": 400 }, "propertyPath": [ "_string" @@ -6902,7 +6762,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 412 + "__id__": 400 }, "propertyPath": [ "_fontSize" @@ -6912,7 +6772,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 415 + "__id__": 403 }, "propertyPath": [ "_contentSize" @@ -6932,7 +6792,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 412 + "__id__": 400 }, "propertyPath": [ "_actualFontSize" @@ -6942,7 +6802,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 412 + "__id__": 400 }, "propertyPath": [ "_lineHeight" @@ -6952,14 +6812,14 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 419 + "__id__": 407 }, "propertyPath": [ "_lpos" ], "value": { "__type__": "cc.Vec3", - "x": 27, + "x": -27, "y": 0, "z": 0 } @@ -6973,7 +6833,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 421 + "__id__": 409 }, "propertyPath": [ "_layoutType" @@ -6989,14 +6849,14 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 423 + "__id__": 411 }, "propertyPath": [ "_lpos" ], "value": { "__type__": "cc.Vec3", - "x": -21.0615234375, + "x": 21.0615234375, "y": 0, "z": 0 } @@ -7010,7 +6870,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 421 + "__id__": 409 }, "propertyPath": [ "_isAlign" @@ -7020,7 +6880,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 408 + "__id__": 396 }, "propertyPath": [ "_left" @@ -7030,7 +6890,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 408 + "__id__": 396 }, "propertyPath": [ "_right" @@ -7040,7 +6900,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 393 + "__id__": 387 }, "propertyPath": [ "_active" @@ -7057,7 +6917,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 429 + "__id__": 417 }, "_contentSize": { "__type__": "cc.Size", @@ -7085,7 +6945,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 431 + "__id__": 419 }, "_alignFlags": 20, "_target": null, @@ -7121,7 +6981,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 433 + "__id__": 421 }, "_resizeMode": 1, "_layoutType": 2, @@ -7172,26 +7032,26 @@ }, "_children": [ { - "__id__": 436 + "__id__": 424 }, { - "__id__": 453 + "__id__": 441 } ], "_active": false, "_components": [ { - "__id__": 459 + "__id__": 447 }, { - "__id__": 461 + "__id__": 449 }, { - "__id__": 463 + "__id__": 451 } ], "_prefab": { - "__id__": 465 + "__id__": 453 }, "_lpos": { "__type__": "cc.Vec3", @@ -7226,17 +7086,17 @@ "__type__": "cc.Node", "_objFlags": 0, "_parent": { - "__id__": 435 + "__id__": 423 }, "_prefab": { - "__id__": 437 + "__id__": 425 }, "__editorExtras__": {} }, { "__type__": "cc.PrefabInfo", "root": { - "__id__": 436 + "__id__": 424 }, "asset": { "__uuid__": "555f7387-1025-41a8-a2a8-ff61c76004a3", @@ -7244,7 +7104,7 @@ }, "fileId": "50T0YGiGBH7qZZFeATiEP+", "instance": { - "__id__": 438 + "__id__": 426 }, "targetOverrides": null }, @@ -7258,31 +7118,31 @@ "mountedComponents": [], "propertyOverrides": [ { - "__id__": 439 + "__id__": 427 }, { - "__id__": 441 + "__id__": 429 }, { - "__id__": 442 + "__id__": 430 }, { - "__id__": 443 + "__id__": 431 }, { - "__id__": 444 + "__id__": 432 }, { - "__id__": 446 + "__id__": 434 }, { - "__id__": 448 + "__id__": 436 }, { - "__id__": 450 + "__id__": 438 }, { - "__id__": 452 + "__id__": 440 } ], "removedComponents": [] @@ -7290,7 +7150,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 440 + "__id__": 428 }, "propertyPath": [ "_name" @@ -7306,7 +7166,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 440 + "__id__": 428 }, "propertyPath": [ "_lpos" @@ -7321,7 +7181,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 440 + "__id__": 428 }, "propertyPath": [ "_lrot" @@ -7337,7 +7197,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 440 + "__id__": 428 }, "propertyPath": [ "_euler" @@ -7352,7 +7212,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 445 + "__id__": 433 }, "propertyPath": [ "_contentSize" @@ -7372,7 +7232,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 447 + "__id__": 435 }, "propertyPath": [ "_contentSize" @@ -7392,7 +7252,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 449 + "__id__": 437 }, "propertyPath": [ "_contentSize" @@ -7412,7 +7272,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 451 + "__id__": 439 }, "propertyPath": [ "_contentSize" @@ -7432,7 +7292,7 @@ { "__type__": "CCPropertyOverrideInfo", "targetInfo": { - "__id__": 440 + "__id__": 428 }, "propertyPath": [ "_active" @@ -7445,20 +7305,20 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 435 + "__id__": 423 }, "_children": [], "_active": false, "_components": [ { - "__id__": 454 + "__id__": 442 }, { - "__id__": 456 + "__id__": 444 } ], "_prefab": { - "__id__": 458 + "__id__": 446 }, "_lpos": { "__type__": "cc.Vec3", @@ -7495,11 +7355,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 453 + "__id__": 441 }, "_enabled": true, "__prefab": { - "__id__": 455 + "__id__": 443 }, "_contentSize": { "__type__": "cc.Size", @@ -7523,11 +7383,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 453 + "__id__": 441 }, "_enabled": true, "__prefab": { - "__id__": 457 + "__id__": 445 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -7581,11 +7441,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 435 + "__id__": 423 }, "_enabled": true, "__prefab": { - "__id__": 460 + "__id__": 448 }, "_contentSize": { "__type__": "cc.Size", @@ -7609,11 +7469,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 435 + "__id__": 423 }, "_enabled": true, "__prefab": { - "__id__": 462 + "__id__": 450 }, "_alignFlags": 45, "_target": null, @@ -7645,11 +7505,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 435 + "__id__": 423 }, "_enabled": true, "__prefab": { - "__id__": 464 + "__id__": 452 }, "_id": "" }, @@ -7680,7 +7540,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 467 + "__id__": 455 }, "_contentSize": { "__type__": "cc.Size", @@ -7708,7 +7568,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 469 + "__id__": 457 }, "_alignFlags": 0, "_target": null, @@ -7744,7 +7604,7 @@ }, "_enabled": true, "__prefab": { - "__id__": 471 + "__id__": 459 }, "icon_node": { "__id__": 224 @@ -7759,19 +7619,19 @@ "__id__": 255 }, "noHero": { - "__id__": 435 + "__id__": 423 }, "sell_btn": { - "__id__": 472 + "__id__": 460 }, "upgrade_btn": { "__id__": 342 }, "sell_price_label": { - "__id__": 489 + "__id__": 471 }, "upgrade_price_label": { - "__id__": 522 + "__id__": 510 }, "ap_all_label": { "__id__": 289 @@ -7801,11 +7661,11 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 385 + "__id__": 379 }, "_children": [ { - "__id__": 473 + "__id__": 461 }, { "__id__": 479 @@ -7817,17 +7677,17 @@ "_active": true, "_components": [ { - "__id__": 515 + "__id__": 503 }, { - "__id__": 517 + "__id__": 505 }, { - "__id__": 519 + "__id__": 507 } ], "_prefab": { - "__id__": 521 + "__id__": 509 }, "_lpos": { "__type__": "cc.Vec3", @@ -7860,15 +7720,22 @@ }, { "__type__": "cc.Node", - "_name": "Label", + "_name": "coin", "_objFlags": 0, "__editorExtras__": { "mountedRoot": null }, "_parent": { - "__id__": 472 + "__id__": 460 }, - "_children": [], + "_children": [ + { + "__id__": 462 + }, + { + "__id__": 468 + } + ], "_active": true, "_components": [ { @@ -7883,7 +7750,57 @@ }, "_lpos": { "__type__": "cc.Vec3", - "x": -21.0615234375, + "x": -27, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "icon", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 461 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 463 + }, + { + "__id__": 465 + } + ], + "_prefab": { + "__id__": 467 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": -7.5615234375, "y": 0, "z": 0 }, @@ -7916,16 +7833,16 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 473 + "__id__": 462 }, "_enabled": true, "__prefab": { - "__id__": 475 + "__id__": 464 }, "_contentSize": { "__type__": "cc.Size", - "width": 54, - "height": 30.46 + "width": 27, + "height": 27 }, "_anchorPoint": { "__type__": "cc.Vec2", @@ -7936,19 +7853,19 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "a4sqCI1VpI8YJnOwF8QknG" + "fileId": "39O3Ak8hhKxKF4zeoDUgVQ" }, { - "__type__": "cc.Label", + "__type__": "cc.Sprite", "_name": "", "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 473 + "__id__": 462 }, "_enabled": true, "__prefab": { - "__id__": 477 + "__id__": 466 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -7960,13 +7877,149 @@ "b": 255, "a": 255 }, - "_string": "出售", + "_spriteFrame": { + "__uuid__": "6165ffc9-a838-4a33-b569-bdbaaab0e6b4@ec5a5", + "__expectedType__": "cc.SpriteFrame" + }, + "_type": 0, + "_fillType": 0, + "_sizeMode": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_useGrayscale": false, + "_atlas": null, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "fb5HbJnLdPp5vG2ekEjx0W" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "6aPcHyYFpJtqTknWOBQjrH", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, + { + "__type__": "cc.Node", + "_name": "num", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 461 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 469 + }, + { + "__id__": 471 + } + ], + "_prefab": { + "__id__": 473 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 13.5, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 468 + }, + "_enabled": true, + "__prefab": { + "__id__": 470 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 15.123046875, + "height": 54.4 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "3dJ0AU7pFORpdUaZBM3Z/u" + }, + { + "__type__": "cc.Label", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 468 + }, + "_enabled": true, + "__prefab": { + "__id__": 472 + }, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_string": "2", "_horizontalAlign": 1, "_verticalAlign": 1, - "_actualFontSize": 25, - "_fontSize": 25, + "_actualFontSize": 20, + "_fontSize": 20, "_fontFamily": "Arial", - "_lineHeight": 21, + "_lineHeight": 40, "_overflow": 0, "_enableWrapText": true, "_font": null, @@ -8004,7 +8057,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "cea0FpTiVBEprBOaYQFSav" + "fileId": "9deqZrZeZEEKkvtD7QlGHO" }, { "__type__": "cc.PrefabInfo", @@ -8014,20 +8067,99 @@ "asset": { "__id__": 0 }, - "fileId": "28D4tFgVRPwbG9iXo3cRl7", + "fileId": "bfLo+sXdxPSY6pJ+TTshHA", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 461 + }, + "_enabled": true, + "__prefab": { + "__id__": 475 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 42.123046875, + "height": 30 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "e03E8E9MNHWqlyzsRwdhQj" + }, + { + "__type__": "cc.Layout", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 461 + }, + "_enabled": true, + "__prefab": { + "__id__": 477 + }, + "_resizeMode": 1, + "_layoutType": 1, + "_cellSize": { + "__type__": "cc.Size", + "width": 40, + "height": 40 + }, + "_startAxis": 0, + "_paddingLeft": 0, + "_paddingRight": 0, + "_paddingTop": 0, + "_paddingBottom": 0, + "_spacingX": 0, + "_spacingY": 0, + "_verticalDirection": 1, + "_horizontalDirection": 0, + "_constraint": 0, + "_constraintNum": 2, + "_affectedByScale": false, + "_isAlign": false, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "306oiXmUNKlqXJd/x4wic4" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "deRkP/BNlLX52OUGvpThIO", "instance": null, "targetOverrides": null, "nestedPrefabInstanceRoots": null }, { "__type__": "cc.Node", - "_name": "coin", + "_name": "stone", "_objFlags": 0, "__editorExtras__": { "mountedRoot": null }, "_parent": { - "__id__": 472 + "__id__": 460 }, "_children": [ { @@ -8037,7 +8169,7 @@ "__id__": 486 } ], - "_active": true, + "_active": false, "_components": [ { "__id__": 492 @@ -8051,8 +8183,8 @@ }, "_lpos": { "__type__": "cc.Vec3", - "x": 27, - "y": 0, + "x": 0, + "y": -32.75, "z": 0 }, "_lrot": { @@ -8154,7 +8286,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "39O3Ak8hhKxKF4zeoDUgVQ" + "fileId": "31GJSeBupAjL6B0JSMWEDn" }, { "__type__": "cc.Sprite", @@ -8179,7 +8311,7 @@ "a": 255 }, "_spriteFrame": { - "__uuid__": "6165ffc9-a838-4a33-b569-bdbaaab0e6b4@ec5a5", + "__uuid__": "6165ffc9-a838-4a33-b569-bdbaaab0e6b4@66d28", "__expectedType__": "cc.SpriteFrame" }, "_type": 0, @@ -8194,12 +8326,15 @@ "_fillRange": 0, "_isTrimmedMode": true, "_useGrayscale": false, - "_atlas": null, + "_atlas": { + "__uuid__": "6165ffc9-a838-4a33-b569-bdbaaab0e6b4", + "__expectedType__": "cc.SpriteAtlas" + }, "_id": "" }, { "__type__": "cc.CompPrefabInfo", - "fileId": "fb5HbJnLdPp5vG2ekEjx0W" + "fileId": "f0Ah1lXhpLIZry/aPq9YzL" }, { "__type__": "cc.PrefabInfo", @@ -8209,7 +8344,7 @@ "asset": { "__id__": 0 }, - "fileId": "6aPcHyYFpJtqTknWOBQjrH", + "fileId": "d5mcu1TmRMYpCqlMi96hsO", "instance": null, "targetOverrides": null, "nestedPrefabInstanceRoots": null @@ -8290,7 +8425,7 @@ }, { "__type__": "cc.CompPrefabInfo", - "fileId": "3dJ0AU7pFORpdUaZBM3Z/u" + "fileId": "94OK1DwMRAl7qOBrTxG/i4" }, { "__type__": "cc.Label", @@ -8356,442 +8491,6 @@ "_shadowBlur": 2, "_id": "" }, - { - "__type__": "cc.CompPrefabInfo", - "fileId": "9deqZrZeZEEKkvtD7QlGHO" - }, - { - "__type__": "cc.PrefabInfo", - "root": { - "__id__": 1 - }, - "asset": { - "__id__": 0 - }, - "fileId": "bfLo+sXdxPSY6pJ+TTshHA", - "instance": null, - "targetOverrides": null, - "nestedPrefabInstanceRoots": null - }, - { - "__type__": "cc.UITransform", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 479 - }, - "_enabled": true, - "__prefab": { - "__id__": 493 - }, - "_contentSize": { - "__type__": "cc.Size", - "width": 42.123046875, - "height": 30 - }, - "_anchorPoint": { - "__type__": "cc.Vec2", - "x": 0.5, - "y": 0.5 - }, - "_id": "" - }, - { - "__type__": "cc.CompPrefabInfo", - "fileId": "e03E8E9MNHWqlyzsRwdhQj" - }, - { - "__type__": "cc.Layout", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 479 - }, - "_enabled": true, - "__prefab": { - "__id__": 495 - }, - "_resizeMode": 1, - "_layoutType": 1, - "_cellSize": { - "__type__": "cc.Size", - "width": 40, - "height": 40 - }, - "_startAxis": 0, - "_paddingLeft": 0, - "_paddingRight": 0, - "_paddingTop": 0, - "_paddingBottom": 0, - "_spacingX": 0, - "_spacingY": 0, - "_verticalDirection": 1, - "_horizontalDirection": 0, - "_constraint": 0, - "_constraintNum": 2, - "_affectedByScale": false, - "_isAlign": false, - "_id": "" - }, - { - "__type__": "cc.CompPrefabInfo", - "fileId": "306oiXmUNKlqXJd/x4wic4" - }, - { - "__type__": "cc.PrefabInfo", - "root": { - "__id__": 1 - }, - "asset": { - "__id__": 0 - }, - "fileId": "deRkP/BNlLX52OUGvpThIO", - "instance": null, - "targetOverrides": null, - "nestedPrefabInstanceRoots": null - }, - { - "__type__": "cc.Node", - "_name": "stone", - "_objFlags": 0, - "__editorExtras__": { - "mountedRoot": null - }, - "_parent": { - "__id__": 472 - }, - "_children": [ - { - "__id__": 498 - }, - { - "__id__": 504 - } - ], - "_active": false, - "_components": [ - { - "__id__": 510 - }, - { - "__id__": 512 - } - ], - "_prefab": { - "__id__": 514 - }, - "_lpos": { - "__type__": "cc.Vec3", - "x": 0, - "y": -32.75, - "z": 0 - }, - "_lrot": { - "__type__": "cc.Quat", - "x": 0, - "y": 0, - "z": 0, - "w": 1 - }, - "_lscale": { - "__type__": "cc.Vec3", - "x": 1, - "y": 1, - "z": 1 - }, - "_mobility": 0, - "_layer": 1073741824, - "_euler": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_id": "" - }, - { - "__type__": "cc.Node", - "_name": "icon", - "_objFlags": 0, - "__editorExtras__": {}, - "_parent": { - "__id__": 497 - }, - "_children": [], - "_active": true, - "_components": [ - { - "__id__": 499 - }, - { - "__id__": 501 - } - ], - "_prefab": { - "__id__": 503 - }, - "_lpos": { - "__type__": "cc.Vec3", - "x": -7.5615234375, - "y": 0, - "z": 0 - }, - "_lrot": { - "__type__": "cc.Quat", - "x": 0, - "y": 0, - "z": 0, - "w": 1 - }, - "_lscale": { - "__type__": "cc.Vec3", - "x": 1, - "y": 1, - "z": 1 - }, - "_mobility": 0, - "_layer": 1073741824, - "_euler": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_id": "" - }, - { - "__type__": "cc.UITransform", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 498 - }, - "_enabled": true, - "__prefab": { - "__id__": 500 - }, - "_contentSize": { - "__type__": "cc.Size", - "width": 27, - "height": 27 - }, - "_anchorPoint": { - "__type__": "cc.Vec2", - "x": 0.5, - "y": 0.5 - }, - "_id": "" - }, - { - "__type__": "cc.CompPrefabInfo", - "fileId": "31GJSeBupAjL6B0JSMWEDn" - }, - { - "__type__": "cc.Sprite", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 498 - }, - "_enabled": true, - "__prefab": { - "__id__": 502 - }, - "_customMaterial": null, - "_srcBlendFactor": 2, - "_dstBlendFactor": 4, - "_color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - }, - "_spriteFrame": { - "__uuid__": "6165ffc9-a838-4a33-b569-bdbaaab0e6b4@66d28", - "__expectedType__": "cc.SpriteFrame" - }, - "_type": 0, - "_fillType": 0, - "_sizeMode": 0, - "_fillCenter": { - "__type__": "cc.Vec2", - "x": 0, - "y": 0 - }, - "_fillStart": 0, - "_fillRange": 0, - "_isTrimmedMode": true, - "_useGrayscale": false, - "_atlas": { - "__uuid__": "6165ffc9-a838-4a33-b569-bdbaaab0e6b4", - "__expectedType__": "cc.SpriteAtlas" - }, - "_id": "" - }, - { - "__type__": "cc.CompPrefabInfo", - "fileId": "f0Ah1lXhpLIZry/aPq9YzL" - }, - { - "__type__": "cc.PrefabInfo", - "root": { - "__id__": 1 - }, - "asset": { - "__id__": 0 - }, - "fileId": "d5mcu1TmRMYpCqlMi96hsO", - "instance": null, - "targetOverrides": null, - "nestedPrefabInstanceRoots": null - }, - { - "__type__": "cc.Node", - "_name": "num", - "_objFlags": 0, - "__editorExtras__": {}, - "_parent": { - "__id__": 497 - }, - "_children": [], - "_active": true, - "_components": [ - { - "__id__": 505 - }, - { - "__id__": 507 - } - ], - "_prefab": { - "__id__": 509 - }, - "_lpos": { - "__type__": "cc.Vec3", - "x": 13.5, - "y": 0, - "z": 0 - }, - "_lrot": { - "__type__": "cc.Quat", - "x": 0, - "y": 0, - "z": 0, - "w": 1 - }, - "_lscale": { - "__type__": "cc.Vec3", - "x": 1, - "y": 1, - "z": 1 - }, - "_mobility": 0, - "_layer": 1073741824, - "_euler": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_id": "" - }, - { - "__type__": "cc.UITransform", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 504 - }, - "_enabled": true, - "__prefab": { - "__id__": 506 - }, - "_contentSize": { - "__type__": "cc.Size", - "width": 15.123046875, - "height": 54.4 - }, - "_anchorPoint": { - "__type__": "cc.Vec2", - "x": 0.5, - "y": 0.5 - }, - "_id": "" - }, - { - "__type__": "cc.CompPrefabInfo", - "fileId": "94OK1DwMRAl7qOBrTxG/i4" - }, - { - "__type__": "cc.Label", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 504 - }, - "_enabled": true, - "__prefab": { - "__id__": 508 - }, - "_customMaterial": null, - "_srcBlendFactor": 2, - "_dstBlendFactor": 4, - "_color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - }, - "_string": "2", - "_horizontalAlign": 1, - "_verticalAlign": 1, - "_actualFontSize": 20, - "_fontSize": 20, - "_fontFamily": "Arial", - "_lineHeight": 40, - "_overflow": 0, - "_enableWrapText": true, - "_font": null, - "_isSystemFontUsed": true, - "_spacingX": 0, - "_isItalic": false, - "_isBold": true, - "_isUnderline": false, - "_underlineHeight": 2, - "_cacheMode": 0, - "_enableOutline": true, - "_outlineColor": { - "__type__": "cc.Color", - "r": 0, - "g": 0, - "b": 0, - "a": 255 - }, - "_outlineWidth": 2, - "_enableShadow": false, - "_shadowColor": { - "__type__": "cc.Color", - "r": 0, - "g": 0, - "b": 0, - "a": 255 - }, - "_shadowOffset": { - "__type__": "cc.Vec2", - "x": 2, - "y": 2 - }, - "_shadowBlur": 2, - "_id": "" - }, { "__type__": "cc.CompPrefabInfo", "fileId": "38htj7TVBI84FdhXPqZi9Y" @@ -8815,11 +8514,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 497 + "__id__": 479 }, "_enabled": true, "__prefab": { - "__id__": 511 + "__id__": 493 }, "_contentSize": { "__type__": "cc.Size", @@ -8843,11 +8542,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 497 + "__id__": 479 }, "_enabled": true, "__prefab": { - "__id__": 513 + "__id__": 495 }, "_resizeMode": 1, "_layoutType": 1, @@ -8888,17 +8587,178 @@ "targetOverrides": null, "nestedPrefabInstanceRoots": null }, + { + "__type__": "cc.Node", + "_name": "Label", + "_objFlags": 0, + "__editorExtras__": { + "mountedRoot": null + }, + "_parent": { + "__id__": 460 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 498 + }, + { + "__id__": 500 + } + ], + "_prefab": { + "__id__": 502 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 21.0615234375, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, { "__type__": "cc.UITransform", "_name": "", "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 472 + "__id__": 497 }, "_enabled": true, "__prefab": { - "__id__": 516 + "__id__": 499 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 54, + "height": 30.46 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "a4sqCI1VpI8YJnOwF8QknG" + }, + { + "__type__": "cc.Label", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 497 + }, + "_enabled": true, + "__prefab": { + "__id__": 501 + }, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_string": "出售", + "_horizontalAlign": 1, + "_verticalAlign": 1, + "_actualFontSize": 25, + "_fontSize": 25, + "_fontFamily": "Arial", + "_lineHeight": 21, + "_overflow": 0, + "_enableWrapText": true, + "_font": null, + "_isSystemFontUsed": true, + "_spacingX": 0, + "_isItalic": false, + "_isBold": true, + "_isUnderline": false, + "_underlineHeight": 2, + "_cacheMode": 0, + "_enableOutline": true, + "_outlineColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_outlineWidth": 2, + "_enableShadow": false, + "_shadowColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_shadowOffset": { + "__type__": "cc.Vec2", + "x": 2, + "y": 2 + }, + "_shadowBlur": 2, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "cea0FpTiVBEprBOaYQFSav" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "28D4tFgVRPwbG9iXo3cRl7", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 460 + }, + "_enabled": true, + "__prefab": { + "__id__": 504 }, "_contentSize": { "__type__": "cc.Size", @@ -8922,11 +8782,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 472 + "__id__": 460 }, "_enabled": true, "__prefab": { - "__id__": 518 + "__id__": 506 }, "_alignFlags": 45, "_target": null, @@ -8958,11 +8818,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 472 + "__id__": 460 }, "_enabled": true, "__prefab": { - "__id__": 520 + "__id__": 508 }, "_resizeMode": 1, "_layoutType": 1, @@ -9009,11 +8869,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 523 + "__id__": 511 }, "_enabled": true, "__prefab": { - "__id__": 571 + "__id__": 559 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -9073,20 +8933,20 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 524 + "__id__": 512 }, "_children": [], "_active": true, "_components": [ { - "__id__": 568 + "__id__": 556 }, { - "__id__": 522 + "__id__": 510 } ], "_prefab": { - "__id__": 570 + "__id__": 558 }, "_lpos": { "__type__": "cc.Vec3", @@ -9125,31 +8985,31 @@ "mountedRoot": null }, "_parent": { - "__id__": 525 + "__id__": 513 }, "_children": [ { - "__id__": 557 + "__id__": 545 }, { - "__id__": 523 + "__id__": 511 } ], "_active": true, "_components": [ { - "__id__": 563 + "__id__": 551 }, { - "__id__": 565 + "__id__": 553 } ], "_prefab": { - "__id__": 567 + "__id__": 555 }, "_lpos": { "__type__": "cc.Vec3", - "x": 27, + "x": -27, "y": 0, "z": 0 }, @@ -9186,10 +9046,10 @@ }, "_children": [ { - "__id__": 526 + "__id__": 512 }, { - "__id__": 524 + "__id__": 514 }, { "__id__": 532 @@ -9198,17 +9058,17 @@ "_active": true, "_components": [ { - "__id__": 550 + "__id__": 538 }, { - "__id__": 552 + "__id__": 540 }, { - "__id__": 554 + "__id__": 542 } ], "_prefab": { - "__id__": 556 + "__id__": 544 }, "_lpos": { "__type__": "cc.Vec3", @@ -9241,16 +9101,23 @@ }, { "__type__": "cc.Node", - "_name": "Label", + "_name": "stone", "_objFlags": 0, "__editorExtras__": { "mountedRoot": null }, "_parent": { - "__id__": 525 + "__id__": 513 }, - "_children": [], - "_active": true, + "_children": [ + { + "__id__": 515 + }, + { + "__id__": 521 + } + ], + "_active": false, "_components": [ { "__id__": 527 @@ -9264,7 +9131,57 @@ }, "_lpos": { "__type__": "cc.Vec3", - "x": -21.0615234375, + "x": 0, + "y": -32.75, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.Node", + "_name": "icon", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 514 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 516 + }, + { + "__id__": 518 + } + ], + "_prefab": { + "__id__": 520 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": -7.5615234375, "y": 0, "z": 0 }, @@ -9297,12 +9214,391 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { + "__id__": 515 + }, + "_enabled": true, + "__prefab": { + "__id__": 517 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 27, + "height": 27 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "31GJSeBupAjL6B0JSMWEDn" + }, + { + "__type__": "cc.Sprite", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 515 + }, + "_enabled": true, + "__prefab": { + "__id__": 519 + }, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_spriteFrame": { + "__uuid__": "6165ffc9-a838-4a33-b569-bdbaaab0e6b4@66d28", + "__expectedType__": "cc.SpriteFrame" + }, + "_type": 0, + "_fillType": 0, + "_sizeMode": 0, + "_fillCenter": { + "__type__": "cc.Vec2", + "x": 0, + "y": 0 + }, + "_fillStart": 0, + "_fillRange": 0, + "_isTrimmedMode": true, + "_useGrayscale": false, + "_atlas": { + "__uuid__": "6165ffc9-a838-4a33-b569-bdbaaab0e6b4", + "__expectedType__": "cc.SpriteAtlas" + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "f0Ah1lXhpLIZry/aPq9YzL" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "d5mcu1TmRMYpCqlMi96hsO", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, + { + "__type__": "cc.Node", + "_name": "num", + "_objFlags": 0, + "__editorExtras__": {}, + "_parent": { + "__id__": 514 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 522 + }, + { + "__id__": 524 + } + ], + "_prefab": { "__id__": 526 }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 13.5, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 521 + }, + "_enabled": true, + "__prefab": { + "__id__": 523 + }, + "_contentSize": { + "__type__": "cc.Size", + "width": 15.123046875, + "height": 54.4 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "94OK1DwMRAl7qOBrTxG/i4" + }, + { + "__type__": "cc.Label", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 521 + }, + "_enabled": true, + "__prefab": { + "__id__": 525 + }, + "_customMaterial": null, + "_srcBlendFactor": 2, + "_dstBlendFactor": 4, + "_color": { + "__type__": "cc.Color", + "r": 255, + "g": 255, + "b": 255, + "a": 255 + }, + "_string": "2", + "_horizontalAlign": 1, + "_verticalAlign": 1, + "_actualFontSize": 20, + "_fontSize": 20, + "_fontFamily": "Arial", + "_lineHeight": 40, + "_overflow": 0, + "_enableWrapText": true, + "_font": null, + "_isSystemFontUsed": true, + "_spacingX": 0, + "_isItalic": false, + "_isBold": true, + "_isUnderline": false, + "_underlineHeight": 2, + "_cacheMode": 0, + "_enableOutline": true, + "_outlineColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_outlineWidth": 2, + "_enableShadow": false, + "_shadowColor": { + "__type__": "cc.Color", + "r": 0, + "g": 0, + "b": 0, + "a": 255 + }, + "_shadowOffset": { + "__type__": "cc.Vec2", + "x": 2, + "y": 2 + }, + "_shadowBlur": 2, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "38htj7TVBI84FdhXPqZi9Y" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "5aV+d4uupA3430zZytYs+/", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 514 + }, "_enabled": true, "__prefab": { "__id__": 528 }, + "_contentSize": { + "__type__": "cc.Size", + "width": 42.123046875, + "height": 30 + }, + "_anchorPoint": { + "__type__": "cc.Vec2", + "x": 0.5, + "y": 0.5 + }, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "daubq3MHBCvZhVT7CCunA4" + }, + { + "__type__": "cc.Layout", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 514 + }, + "_enabled": true, + "__prefab": { + "__id__": 530 + }, + "_resizeMode": 1, + "_layoutType": 1, + "_cellSize": { + "__type__": "cc.Size", + "width": 40, + "height": 40 + }, + "_startAxis": 0, + "_paddingLeft": 0, + "_paddingRight": 0, + "_paddingTop": 0, + "_paddingBottom": 0, + "_spacingX": 0, + "_spacingY": 0, + "_verticalDirection": 1, + "_horizontalDirection": 0, + "_constraint": 0, + "_constraintNum": 2, + "_affectedByScale": false, + "_isAlign": false, + "_id": "" + }, + { + "__type__": "cc.CompPrefabInfo", + "fileId": "867zQklidJAJ9K6dAQWCB6" + }, + { + "__type__": "cc.PrefabInfo", + "root": { + "__id__": 1 + }, + "asset": { + "__id__": 0 + }, + "fileId": "32ZgIQHstCXYwNDGBH6HPk", + "instance": null, + "targetOverrides": null, + "nestedPrefabInstanceRoots": null + }, + { + "__type__": "cc.Node", + "_name": "Label", + "_objFlags": 0, + "__editorExtras__": { + "mountedRoot": null + }, + "_parent": { + "__id__": 513 + }, + "_children": [], + "_active": true, + "_components": [ + { + "__id__": 533 + }, + { + "__id__": 535 + } + ], + "_prefab": { + "__id__": 537 + }, + "_lpos": { + "__type__": "cc.Vec3", + "x": 21.0615234375, + "y": 0, + "z": 0 + }, + "_lrot": { + "__type__": "cc.Quat", + "x": 0, + "y": 0, + "z": 0, + "w": 1 + }, + "_lscale": { + "__type__": "cc.Vec3", + "x": 1, + "y": 1, + "z": 1 + }, + "_mobility": 0, + "_layer": 1073741824, + "_euler": { + "__type__": "cc.Vec3", + "x": 0, + "y": 0, + "z": 0 + }, + "_id": "" + }, + { + "__type__": "cc.UITransform", + "_name": "", + "_objFlags": 0, + "__editorExtras__": {}, + "node": { + "__id__": 532 + }, + "_enabled": true, + "__prefab": { + "__id__": 534 + }, "_contentSize": { "__type__": "cc.Size", "width": 54, @@ -9325,11 +9621,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 526 + "__id__": 532 }, "_enabled": true, "__prefab": { - "__id__": 530 + "__id__": 536 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -9400,454 +9696,18 @@ "targetOverrides": null, "nestedPrefabInstanceRoots": null }, - { - "__type__": "cc.Node", - "_name": "stone", - "_objFlags": 0, - "__editorExtras__": { - "mountedRoot": null - }, - "_parent": { - "__id__": 525 - }, - "_children": [ - { - "__id__": 533 - }, - { - "__id__": 539 - } - ], - "_active": false, - "_components": [ - { - "__id__": 545 - }, - { - "__id__": 547 - } - ], - "_prefab": { - "__id__": 549 - }, - "_lpos": { - "__type__": "cc.Vec3", - "x": 0, - "y": -32.75, - "z": 0 - }, - "_lrot": { - "__type__": "cc.Quat", - "x": 0, - "y": 0, - "z": 0, - "w": 1 - }, - "_lscale": { - "__type__": "cc.Vec3", - "x": 1, - "y": 1, - "z": 1 - }, - "_mobility": 0, - "_layer": 1073741824, - "_euler": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_id": "" - }, - { - "__type__": "cc.Node", - "_name": "icon", - "_objFlags": 0, - "__editorExtras__": {}, - "_parent": { - "__id__": 532 - }, - "_children": [], - "_active": true, - "_components": [ - { - "__id__": 534 - }, - { - "__id__": 536 - } - ], - "_prefab": { - "__id__": 538 - }, - "_lpos": { - "__type__": "cc.Vec3", - "x": -7.5615234375, - "y": 0, - "z": 0 - }, - "_lrot": { - "__type__": "cc.Quat", - "x": 0, - "y": 0, - "z": 0, - "w": 1 - }, - "_lscale": { - "__type__": "cc.Vec3", - "x": 1, - "y": 1, - "z": 1 - }, - "_mobility": 0, - "_layer": 1073741824, - "_euler": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_id": "" - }, { "__type__": "cc.UITransform", "_name": "", "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 533 + "__id__": 513 }, "_enabled": true, "__prefab": { - "__id__": 535 - }, - "_contentSize": { - "__type__": "cc.Size", - "width": 27, - "height": 27 - }, - "_anchorPoint": { - "__type__": "cc.Vec2", - "x": 0.5, - "y": 0.5 - }, - "_id": "" - }, - { - "__type__": "cc.CompPrefabInfo", - "fileId": "31GJSeBupAjL6B0JSMWEDn" - }, - { - "__type__": "cc.Sprite", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 533 - }, - "_enabled": true, - "__prefab": { - "__id__": 537 - }, - "_customMaterial": null, - "_srcBlendFactor": 2, - "_dstBlendFactor": 4, - "_color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - }, - "_spriteFrame": { - "__uuid__": "6165ffc9-a838-4a33-b569-bdbaaab0e6b4@66d28", - "__expectedType__": "cc.SpriteFrame" - }, - "_type": 0, - "_fillType": 0, - "_sizeMode": 0, - "_fillCenter": { - "__type__": "cc.Vec2", - "x": 0, - "y": 0 - }, - "_fillStart": 0, - "_fillRange": 0, - "_isTrimmedMode": true, - "_useGrayscale": false, - "_atlas": { - "__uuid__": "6165ffc9-a838-4a33-b569-bdbaaab0e6b4", - "__expectedType__": "cc.SpriteAtlas" - }, - "_id": "" - }, - { - "__type__": "cc.CompPrefabInfo", - "fileId": "f0Ah1lXhpLIZry/aPq9YzL" - }, - { - "__type__": "cc.PrefabInfo", - "root": { - "__id__": 1 - }, - "asset": { - "__id__": 0 - }, - "fileId": "d5mcu1TmRMYpCqlMi96hsO", - "instance": null, - "targetOverrides": null, - "nestedPrefabInstanceRoots": null - }, - { - "__type__": "cc.Node", - "_name": "num", - "_objFlags": 0, - "__editorExtras__": {}, - "_parent": { - "__id__": 532 - }, - "_children": [], - "_active": true, - "_components": [ - { - "__id__": 540 - }, - { - "__id__": 542 - } - ], - "_prefab": { - "__id__": 544 - }, - "_lpos": { - "__type__": "cc.Vec3", - "x": 13.5, - "y": 0, - "z": 0 - }, - "_lrot": { - "__type__": "cc.Quat", - "x": 0, - "y": 0, - "z": 0, - "w": 1 - }, - "_lscale": { - "__type__": "cc.Vec3", - "x": 1, - "y": 1, - "z": 1 - }, - "_mobility": 0, - "_layer": 1073741824, - "_euler": { - "__type__": "cc.Vec3", - "x": 0, - "y": 0, - "z": 0 - }, - "_id": "" - }, - { - "__type__": "cc.UITransform", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { "__id__": 539 }, - "_enabled": true, - "__prefab": { - "__id__": 541 - }, - "_contentSize": { - "__type__": "cc.Size", - "width": 15.123046875, - "height": 54.4 - }, - "_anchorPoint": { - "__type__": "cc.Vec2", - "x": 0.5, - "y": 0.5 - }, - "_id": "" - }, - { - "__type__": "cc.CompPrefabInfo", - "fileId": "94OK1DwMRAl7qOBrTxG/i4" - }, - { - "__type__": "cc.Label", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 539 - }, - "_enabled": true, - "__prefab": { - "__id__": 543 - }, - "_customMaterial": null, - "_srcBlendFactor": 2, - "_dstBlendFactor": 4, - "_color": { - "__type__": "cc.Color", - "r": 255, - "g": 255, - "b": 255, - "a": 255 - }, - "_string": "2", - "_horizontalAlign": 1, - "_verticalAlign": 1, - "_actualFontSize": 20, - "_fontSize": 20, - "_fontFamily": "Arial", - "_lineHeight": 40, - "_overflow": 0, - "_enableWrapText": true, - "_font": null, - "_isSystemFontUsed": true, - "_spacingX": 0, - "_isItalic": false, - "_isBold": true, - "_isUnderline": false, - "_underlineHeight": 2, - "_cacheMode": 0, - "_enableOutline": true, - "_outlineColor": { - "__type__": "cc.Color", - "r": 0, - "g": 0, - "b": 0, - "a": 255 - }, - "_outlineWidth": 2, - "_enableShadow": false, - "_shadowColor": { - "__type__": "cc.Color", - "r": 0, - "g": 0, - "b": 0, - "a": 255 - }, - "_shadowOffset": { - "__type__": "cc.Vec2", - "x": 2, - "y": 2 - }, - "_shadowBlur": 2, - "_id": "" - }, - { - "__type__": "cc.CompPrefabInfo", - "fileId": "38htj7TVBI84FdhXPqZi9Y" - }, - { - "__type__": "cc.PrefabInfo", - "root": { - "__id__": 1 - }, - "asset": { - "__id__": 0 - }, - "fileId": "5aV+d4uupA3430zZytYs+/", - "instance": null, - "targetOverrides": null, - "nestedPrefabInstanceRoots": null - }, - { - "__type__": "cc.UITransform", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 532 - }, - "_enabled": true, - "__prefab": { - "__id__": 546 - }, - "_contentSize": { - "__type__": "cc.Size", - "width": 42.123046875, - "height": 30 - }, - "_anchorPoint": { - "__type__": "cc.Vec2", - "x": 0.5, - "y": 0.5 - }, - "_id": "" - }, - { - "__type__": "cc.CompPrefabInfo", - "fileId": "daubq3MHBCvZhVT7CCunA4" - }, - { - "__type__": "cc.Layout", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 532 - }, - "_enabled": true, - "__prefab": { - "__id__": 548 - }, - "_resizeMode": 1, - "_layoutType": 1, - "_cellSize": { - "__type__": "cc.Size", - "width": 40, - "height": 40 - }, - "_startAxis": 0, - "_paddingLeft": 0, - "_paddingRight": 0, - "_paddingTop": 0, - "_paddingBottom": 0, - "_spacingX": 0, - "_spacingY": 0, - "_verticalDirection": 1, - "_horizontalDirection": 0, - "_constraint": 0, - "_constraintNum": 2, - "_affectedByScale": false, - "_isAlign": false, - "_id": "" - }, - { - "__type__": "cc.CompPrefabInfo", - "fileId": "867zQklidJAJ9K6dAQWCB6" - }, - { - "__type__": "cc.PrefabInfo", - "root": { - "__id__": 1 - }, - "asset": { - "__id__": 0 - }, - "fileId": "32ZgIQHstCXYwNDGBH6HPk", - "instance": null, - "targetOverrides": null, - "nestedPrefabInstanceRoots": null - }, - { - "__type__": "cc.UITransform", - "_name": "", - "_objFlags": 0, - "__editorExtras__": {}, - "node": { - "__id__": 525 - }, - "_enabled": true, - "__prefab": { - "__id__": 551 - }, "_contentSize": { "__type__": "cc.Size", "width": 96.123046875, @@ -9870,11 +9730,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 525 + "__id__": 513 }, "_enabled": true, "__prefab": { - "__id__": 553 + "__id__": 541 }, "_alignFlags": 45, "_target": null, @@ -9906,11 +9766,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 525 + "__id__": 513 }, "_enabled": true, "__prefab": { - "__id__": 555 + "__id__": 543 }, "_resizeMode": 1, "_layoutType": 1, @@ -9957,20 +9817,20 @@ "_objFlags": 0, "__editorExtras__": {}, "_parent": { - "__id__": 524 + "__id__": 512 }, "_children": [], "_active": true, "_components": [ { - "__id__": 558 + "__id__": 546 }, { - "__id__": 560 + "__id__": 548 } ], "_prefab": { - "__id__": 562 + "__id__": 550 }, "_lpos": { "__type__": "cc.Vec3", @@ -10007,11 +9867,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 557 + "__id__": 545 }, "_enabled": true, "__prefab": { - "__id__": 559 + "__id__": 547 }, "_contentSize": { "__type__": "cc.Size", @@ -10035,11 +9895,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 557 + "__id__": 545 }, "_enabled": true, "__prefab": { - "__id__": 561 + "__id__": 549 }, "_customMaterial": null, "_srcBlendFactor": 2, @@ -10093,11 +9953,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 524 + "__id__": 512 }, "_enabled": true, "__prefab": { - "__id__": 564 + "__id__": 552 }, "_contentSize": { "__type__": "cc.Size", @@ -10121,11 +9981,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 524 + "__id__": 512 }, "_enabled": true, "__prefab": { - "__id__": 566 + "__id__": 554 }, "_resizeMode": 1, "_layoutType": 1, @@ -10172,11 +10032,11 @@ "_objFlags": 0, "__editorExtras__": {}, "node": { - "__id__": 523 + "__id__": 511 }, "_enabled": true, "__prefab": { - "__id__": 569 + "__id__": 557 }, "_contentSize": { "__type__": "cc.Size", @@ -10222,34 +10082,34 @@ "fileId": "5dVotvOAFMoaprbNZVAkgY", "instance": null, "targetOverrides": [ + { + "__id__": 561 + }, + { + "__id__": 563 + }, + { + "__id__": 565 + }, + { + "__id__": 567 + }, + { + "__id__": 569 + }, + { + "__id__": 571 + }, { "__id__": 573 - }, - { - "__id__": 575 - }, - { - "__id__": 577 - }, - { - "__id__": 579 - }, - { - "__id__": 581 - }, - { - "__id__": 583 - }, - { - "__id__": 585 } ], "nestedPrefabInstanceRoots": [ { - "__id__": 436 + "__id__": 424 }, { - "__id__": 385 + "__id__": 379 }, { "__id__": 342 @@ -10283,7 +10143,7 @@ ], "target": null, "targetInfo": { - "__id__": 574 + "__id__": 562 } }, { @@ -10301,7 +10161,7 @@ ], "target": null, "targetInfo": { - "__id__": 576 + "__id__": 564 } }, { @@ -10313,17 +10173,17 @@ { "__type__": "cc.TargetOverrideInfo", "source": { - "__id__": 470 + "__id__": 458 }, "sourceInfo": null, "propertyPath": [ "sell_btn" ], "target": { - "__id__": 385 + "__id__": 379 }, "targetInfo": { - "__id__": 578 + "__id__": 566 } }, { @@ -10335,17 +10195,17 @@ { "__type__": "cc.TargetOverrideInfo", "source": { - "__id__": 470 + "__id__": 458 }, "sourceInfo": null, "propertyPath": [ "sell_price_label" ], "target": { - "__id__": 385 + "__id__": 379 }, "targetInfo": { - "__id__": 580 + "__id__": 568 } }, { @@ -10357,7 +10217,7 @@ { "__type__": "cc.TargetOverrideInfo", "source": { - "__id__": 470 + "__id__": 458 }, "sourceInfo": null, "propertyPath": [ @@ -10365,7 +10225,7 @@ ], "target": null, "targetInfo": { - "__id__": 582 + "__id__": 570 } }, { @@ -10377,7 +10237,7 @@ { "__type__": "cc.TargetOverrideInfo", "source": { - "__id__": 470 + "__id__": 458 }, "sourceInfo": null, "propertyPath": [ @@ -10385,7 +10245,7 @@ ], "target": null, "targetInfo": { - "__id__": 584 + "__id__": 572 } }, { @@ -10397,7 +10257,7 @@ { "__type__": "cc.TargetOverrideInfo", "source": { - "__id__": 470 + "__id__": 458 }, "sourceInfo": null, "propertyPath": [ @@ -10407,7 +10267,7 @@ "__id__": 342 }, "targetInfo": { - "__id__": 586 + "__id__": 574 } }, { diff --git a/assets/script/game/common/HeroSkillText.ts b/assets/script/game/common/HeroSkillText.ts index 7e51d3d8..81a54c6b 100644 --- a/assets/script/game/common/HeroSkillText.ts +++ b/assets/script/game/common/HeroSkillText.ts @@ -16,7 +16,7 @@ * * 触发组口径:每个触发槽位(atking/dead/fstart/atked/call/field)整组视为一个技能, * 组内多个 s_uuid / 光环词条合并为一个名称(组内首个自定义名)与一套说明统一展示: - * - buildHeroSkillDesc 中每组合并为一行(CHeroComp / HeroBoxComp 等直接消费) + * - buildHeroSkillDesc 中每组合并为一行(CHeroComp / HeroMoreCom 等直接消费) * - buildHeroGroupTierLines(heroUuid, slot) 供弹窗按整组分档渲染(SinfoComp) * * 占位符规范(模板作者可用,渲染时数值片段自动绿色高亮): diff --git a/assets/script/game/common/config/heroSet.ts b/assets/script/game/common/config/heroSet.ts index 6bf73242..6f845ed3 100644 --- a/assets/script/game/common/config/heroSet.ts +++ b/assets/script/game/common/config/heroSet.ts @@ -562,7 +562,7 @@ export const HeroInfo: Record = { ], }, bonus: [ - { lv: 12, attrs: {"def":50}, name: "钢铁壁垒", }, + { lv: 12, attrs: {"def":50}, name: "钢铁壁垒", icon: "46-Iron-Clad", }, ], info: "自身强护盾+群体小护盾,强生存", }, @@ -588,7 +588,7 @@ export const HeroInfo: Record = { ], }, bonus: [ - { lv: 12, attrs: {"hp":50}, name: "不屈战意", }, + { lv: 12, attrs: {"hp":50}, name: "不屈战意", icon: "29-Endure", }, ], info: "易伤+风怒,近战 dps", }, @@ -612,7 +612,7 @@ export const HeroInfo: Record = { { lv: 4, uuids: [{ uuid: 7005, value: 0.25, name: "大圣神威" }] }, ], bonus: [ - { lv: 12, attrs: {"hp":50}, name: "不屈战意", }, + { lv: 12, attrs: {"hp":50}, name: "不屈战意", icon: "29-Endure", }, ], info: "必晕爆发+暴击光环,近战收割", }, @@ -636,7 +636,7 @@ export const HeroInfo: Record = { { lv: 4, uuids: [{ uuid: 7004, value: 0.12, name: "剑刃风暴" }, { uuid: 7005, value: 0.2, name: "斩魂利刃" }] }, ], bonus: [ - { lv: 12, attrs: {"ap":50}, name: "致命本能", }, + { lv: 12, attrs: {"ap":50}, name: "致命本能", icon: "36-Guardian-Stance", }, ], info: "暴击+暴伤双光环,暴击流刺客", }, @@ -660,7 +660,7 @@ export const HeroInfo: Record = { { lv: 4, uuids: [{ uuid: 7002, value: 10, name: "攻击光环" }] }, ], bonus: [ - { lv: 12, attrs: {"ap":50}, name: "致命本能", }, + { lv: 12, attrs: {"ap":50}, name: "致命本能", icon: "36-Guardian-Stance", }, ], info: "普攻出血+大招群体出血,持续消耗", }, @@ -684,7 +684,7 @@ export const HeroInfo: Record = { { lv: 4, uuids: [{ uuid: 7006, value: 0.15 }] }, ], bonus: [ - { lv: 12, attrs: {"ap":50}, name: "鹰眼锁定", }, + { lv: 12, attrs: {"ap":50}, name: "鹰眼锁定", icon: "27-Hawkeye", }, ], info: "冰冻控场+多重箭,远程控制", }, @@ -708,7 +708,7 @@ export const HeroInfo: Record = { { lv: 4, uuids: [{ uuid: 7002, value: 0.15, name: "深渊威压" }] }, ], bonus: [ - { lv: 12, attrs: {"ap":50}, name: "奥术共鸣", }, + { lv: 12, attrs: {"ap":50}, name: "奥术共鸣", icon: "100-Enchant-Magic", }, ], info: "烈焰击退+易伤光环,法系压场", }, @@ -734,7 +734,7 @@ export const HeroInfo: Record = { ], }, bonus: [ - { lv: 12, attrs: {"hp":50}, name: "守护之心", }, + { lv: 12, attrs: {"hp":50}, name: "守护之心", icon: "29-Endure", }, ], info: "全体治疗+攻击附盾,团队续航", }, @@ -760,7 +760,7 @@ export const HeroInfo: Record = { ], }, bonus: [ - { lv: 12, attrs: {"def":50}, name: "钢铁壁垒", }, + { lv: 12, attrs: {"def":50}, name: "钢铁壁垒", icon: "46-Iron-Clad", }, ], info: "受击自疗+击退,自愈坦克", }, @@ -786,7 +786,7 @@ export const HeroInfo: Record = { ], }, bonus: [ - { lv: 12, attrs: {"ap":50}, name: "鹰眼锁定", }, + { lv: 12, attrs: {"ap":50}, name: "鹰眼锁定", icon: "27-Hawkeye", }, ], info: "万箭齐射+高频击退,远程压制", }, @@ -812,7 +812,7 @@ export const HeroInfo: Record = { ], }, bonus: [ - { lv: 12, attrs: {"def":50}, name: "钢铁壁垒", }, + { lv: 12, attrs: {"def":50}, name: "钢铁壁垒", icon: "46-Iron-Clad", }, ], info: "永久和计时生命最大值,控血大师", }, @@ -836,7 +836,7 @@ export const HeroInfo: Record = { { lv: 4, uuids: [{ uuid: 7006, value: 10 }] }, ], bonus: [ - { lv: 12, attrs: {"ap":50}, name: "奥术共鸣", }, + { lv: 12, attrs: {"ap":50}, name: "奥术共鸣", icon: "100-Enchant-Magic", }, ], info: "普攻 大招加速 buff+加速光环,加速大师", }, @@ -862,7 +862,7 @@ export const HeroInfo: Record = { ], }, bonus: [ - { lv: 12, attrs: {"hp":50}, name: "守护之心", }, + { lv: 12, attrs: {"hp":50}, name: "守护之心", icon: "29-Endure", }, ], info: "大招全体反伤 普攻暴击 暴击反伤辅助", }, @@ -886,7 +886,7 @@ export const HeroInfo: Record = { { lv: 4, uuids: [{ uuid: 7023, value: 10 }] }, ], bonus: [ - { lv: 12, attrs: {"hp":50}, name: "不屈战意", }, + { lv: 12, attrs: {"hp":50}, name: "不屈战意", icon: "29-Endure", }, ], info: "", }, diff --git a/assets/script/game/map/HeroBoxComp.ts b/assets/script/game/map/HeroBoxComp.ts deleted file mode 100644 index 5d581382..00000000 --- a/assets/script/game/map/HeroBoxComp.ts +++ /dev/null @@ -1,676 +0,0 @@ -/** - * @file HeroBoxComp.ts - * @description 英雄面板单个英雄盒组件(UI 视图层) - * - * 职责: - * 1. 同步显示一个已登场英雄的基础信息(图标 / 名称 / 等级 / AP / HP)。 - * 2. 长按英雄盒同步实例化信息面板(more.prefab),展示次级属性与技能描述;放开手指销毁。 - * 3. 由 MissionCardComp 实例化到 herosBoxNode 下,最多 3 个,与场上英雄一一对应。 - * 4. 英雄卖出 / 死亡后槽位保留,通过 applyEmpty() 显示为空英雄信息。 - * - * 依赖: - * - HeroAttrsComp —— 英雄属性数据模型 - * - HeroInfo(heroSet)—— 英雄静态配置 - */ -import { mLogger } from "../common/Logger"; -import { _decorator, Node, Sprite, Label, resources, AnimationClip, SpriteFrame, NodeEventType, EventTouch, Tween, tween, Vec3, Color, Prefab, instantiate, director, find } from "cc"; -import { ecs } from "../../../../extensions/oops-plugin-framework/assets/libs/ecs/ECS"; -import { CCComp } from "../../../../extensions/oops-plugin-framework/assets/module/common/CCComp"; -import { oops } from "db://oops-framework/core/Oops"; -import { GameEvent } from "../common/config/GameEvent"; -import { HeroInfo, calcGrowBonus } from "../common/config/heroSet"; -import { HeroAttrsComp } from "../hero/HeroAttrsComp"; -import { Hero } from "../hero/Hero"; -import { FacSet, FightSet, getLvColor, NumberFormatter } from "../common/config/GameSet"; -import { buildHeroSkillDesc } from "../common/HeroSkillText"; -import { MissionEconomy } from "./MissionEconomy"; -import { UIID } from "../common/config/GameUIConfig"; -import { HeroMoreCom } from "./HeroMoreCom"; - -const { ccclass, property } = _decorator; - -/** - * HeroBoxComp —— 英雄面板单个英雄信息盒 - * - * 与场上英雄一一绑定(eid),英雄移除后显示空状态。 - */ -@ccclass('HeroBoxComp') -@ecs.register('HeroBoxComp', false) -export class HeroBoxComp extends CCComp { - private debugMode: boolean = false; - - /** 金币不足时升级费用标红色(暗红,区别于正常白色) */ - private static readonly INSUFFICIENT_COLOR: Color = new Color(231, 76, 60); - - // ======================== 编辑器绑定节点 ======================== - - - - /** 英雄图标节点 */ - @property({ type: Node }) - private icon_node: Node = null; - /** 背景节点 */ - @property({ type: Node }) - private bg_node: Node = null; - /** 英雄名称 */ - @property(Label) - private name_label: Label = null; - /** 等级标签 */ - @property(Label) - private level_label: Label = null; - - /** 空槽位标识节点(未绑定英雄时激活,点击打开英雄卡池) */ - @property(Node) - private noHero: Node = null; - - /** 出售按钮(绑定英雄时激活,点击出售该英雄) */ - @property(Node) - private sell_btn: Node = null; - - /** 升级按钮(绑定英雄时激活,点击弹出升级预览确认框) */ - @property(Node) - private upgrade_btn: Node = null; - - /** 出售价格标签(按英雄等级显示当前卖价,含驻场加成) */ - @property(Label) - private sell_price_label: Label = null; - - /** 升级费用标签(按当前等级显示升级消耗金币,满级时隐藏) */ - @property(Label) - private upgrade_price_label: Label = null; - - // ======================== 战斗信息标签(总值 + 附加值) ======================== - - /** 攻击总值 */ - @property(Label) - private ap_all_label: Label = null; - /** 攻击附加值 */ - @property(Label) - private ap_plus_label: Label = null; - /** 生命总值 */ - @property(Label) - private hp_all_label: Label = null; - /** 生命附加值 */ - @property(Label) - private hp_plus_label: Label = null; - - /** 英雄信息弹窗预制体(长按英雄盒时同步实例化展示,绕开 oops.gui 异步加载) */ - @property(Prefab) - private morePrefab: Prefab = null; - - // ======================== 运行时状态 ======================== - - /** 绑定的英雄实体 ID(0 表示空槽位) */ - private eid: number = 0; - /** 绑定的英雄属性数据模型引用 */ - private model: HeroAttrsComp | null = null; - /** 图标视觉令牌(异步加载竞态保护) */ - private iconVisualToken: number = 0; - /** 当前显示的英雄 UUID(避免相同 UUID 重复加载动画) */ - private iconHeroUuid: number = 0; - - /** 当前已弹出的英雄信息面板节点(null 表示未弹出) */ - private moreNode: Node | null = null; - - /** 长按判定:当前按下触摸 ID(-1 表示无) */ - private longPressTouchId: number = -1; - /** 长按判定:按下起点 UI 坐标 */ - private longPressStartX: number = 0; - private longPressStartY: number = 0; - /** 长按触发时长(秒) */ - private static readonly LONG_PRESS_DURATION = 0.5; - /** 长按最大位移容差(像素),超出则取消判定 */ - private static readonly LONG_PRESS_SLOP = 30; - - // ======================== 生命周期 ======================== - - onLoad() { - // 长按英雄盒任意区域实例化信息面板(more.prefab);出售/升级按钮上的触摸不触发 - this.node.on(NodeEventType.TOUCH_START, this.onBoxTouchStart, this); - this.node.on(NodeEventType.TOUCH_MOVE, this.onBoxTouchMove, this); - this.node.on(NodeEventType.TOUCH_END, this.onBoxTouchEnd, this); - this.node.on(NodeEventType.TOUCH_CANCEL, this.onBoxTouchCancel, this); - // 空槽位点击 → 打开英雄卡池 - this.noHero?.on(NodeEventType.TOUCH_END, this.onNoHeroClick, this); - // 出售按钮点击 → 出售当前绑定英雄 - this.sell_btn?.on(NodeEventType.TOUCH_END, this.onSellHeroClick, this); - // 升级按钮点击 → 弹出升级预览确认框 - this.upgrade_btn?.on(NodeEventType.TOUCH_END, this.onUpgradeHeroClick, this); - } - - onDestroy() { - if (this.node && this.node.isValid) { - this.node.off(NodeEventType.TOUCH_START, this.onBoxTouchStart, this); - this.node.off(NodeEventType.TOUCH_MOVE, this.onBoxTouchMove, this); - this.node.off(NodeEventType.TOUCH_END, this.onBoxTouchEnd, this); - this.node.off(NodeEventType.TOUCH_CANCEL, this.onBoxTouchCancel, this); - } - if (this.noHero && this.noHero.isValid) { - this.noHero.off(NodeEventType.TOUCH_END, this.onNoHeroClick, this); - } - if (this.sell_btn && this.sell_btn.isValid) { - this.sell_btn.off(NodeEventType.TOUCH_END, this.onSellHeroClick, this); - } - if (this.upgrade_btn && this.upgrade_btn.isValid) { - this.upgrade_btn.off(NodeEventType.TOUCH_END, this.onUpgradeHeroClick, this); - } - // 销毁时一并清理已弹出的信息面板 - this.closeMoreNode(); - } - - /** - * 升级按钮点击:构建升级后新能力预览,弹出公共确认框。 - * Why: 升级消耗金币不可逆,需展示收益并二次确认。 - */ - private onUpgradeHeroClick() { - if (!this.eid || !this.model) return; - const heroLv = Math.max(1, Math.floor(this.model.lv ?? 1)); - // 无限升级:不再拦截满级 - oops.audio.playEffect("music/button"); - - const nextLv = heroLv + 1; - const cost = MissionEconomy.getUpgradeCost(heroLv); - // 金币不足:smalltip 气泡提示(挂载金币节点),不弹确认框 - if (MissionEconomy.getCoin() < cost) { - oops.message.dispatchEvent(GameEvent.ShowSmallTip, { type: "buy_coin", text: "金币不足" }); - return; - } - const preview = this.buildUpgradePreview(heroLv, nextLv); - - // oops.gui 公共确认窗口(自定义 CommonPrompt:内容支持富文本高亮) - oops.gui.open(UIID.Window, { - title: `升级英雄`, - content: preview, - okWord: "升级", - cancelWord: "取消", - needCancel: true, - okFunc: () => this.executeUpgradeHero() - }); - } - - /** - * 执行升级:校验状态后派发 HeroUpgrade 事件,由 MissionCardComp 扣费并应用等级。 - * Why: 扣费/属性重算统一走 MissionCardComp(与升级卡共用 tryUpgradeHeroByEid), - * 本组件仅负责 UI 交互与预览,保证单一数据源。 - */ - private executeUpgradeHero() { - // 确认窗口打开期间英雄可能已死亡/被移除,需二次校验 - if (!this.eid || !this.model) return; - oops.message.dispatchEvent(GameEvent.HeroUpgrade, { eid: this.eid }); - } - - /** - * 构建升级前后对比富文本(当前属性/能力 vs 升级后属性/能力)。 - * 技能描述统一按局外等级口径渲染(buildHeroSkillDesc),与英雄信息弹窗同一套 - * 文案规则;战斗内升级不改变局外等级,故技能段前后一致,仅属性段随等级变化。 - * - * @param heroLv 当前英雄等级 - * @param nextLv 目标等级 - * @returns 多行富文本:当前属性→升级后属性 + 当前技能 vs 升级后技能 - */ - private buildUpgradePreview(heroLv: number, nextLv: number): string { - const hero = HeroInfo[this.model?.hero_uuid ?? 0]; - if (!hero) return ""; - - // ---- 属性成长(固定基础值 + 成长类型指数递增 + 一次性加成) ---- - const attrLine = (lv: number): string => { - const grow = calcGrowBonus(hero, lv); - const ap = Math.floor(hero.ap + grow.ap + HeroBoxComp.sumBonusPct(hero.ap + grow.ap, hero.bonus, 'ap', lv)); - const hp = Math.floor(hero.hp + grow.hp + HeroBoxComp.sumBonusPct(hero.hp + grow.hp, hero.bonus, 'hp', lv)); - return `攻击 ${ap} 生命 ${hp}`; - }; - - // ---- 升级前后能力对比(局外等级口径,战斗内升级技能段不变) ---- - const skillDesc = buildHeroSkillDesc(hero.uuid); - const curDesc = skillDesc; - const nextDesc = skillDesc; - - return `` + [ - `当前 Lv.${heroLv}:`, - attrLine(heroLv), - curDesc, - ``, - `升级后 Lv.${nextLv}:`, - attrLine(nextLv), - nextDesc, - ].filter(s => s !== undefined).join("\n") + ``; - } - - /** 累加等级额外加成(≤目标等级的所有档位) */ - /** 累加 bonus 中某百分比键的档位总量,并按"基础+成长"快照换算为固定增量(≤目标等级的所有档位) */ - private static sumBonusPct(snap: number, entries: HeroInfo[number]['bonus'], key: 'hp' | 'ap' | 'def', lv: number): number { - if (!entries) return 0; - let pct = 0; - for (const e of entries) { if (e.lv <= lv) pct += e.attrs[key] ?? 0; } - return Math.round(snap * pct / 100); - } - - /** - * 出售按钮点击:弹出公共确认窗口,确认后再执行出售。 - * Why: 出售不可逆,需二次确认防止误触。 - */ - private onSellHeroClick() { - if (!this.eid || !this.model) return; - // 场上仅剩 1 个英雄时不允许出售:复用英雄栏 smalltip 气泡提示(与满员同一挂载点) - if (HeroBoxComp.getAliveHeroCount() <= 1) { - oops.message.dispatchEvent(GameEvent.ShowSmallTip, { type: "hero_full", text: "至少保留 1 个英雄" }); - return; - } - oops.audio.playEffect("music/button"); - - const heroName = this.model.hero_name ?? ""; - const heroLv = Math.max(1, Math.floor(this.model.lv ?? 1)); - const gold = MissionEconomy.getSellGold(heroLv); - - // oops.gui 公共确认窗口(自定义 CommonPrompt:内容支持富文本高亮) - oops.gui.open(UIID.Window, { - title: "出售英雄", - content: `确定出售 ${heroName}(Lv.${heroLv})吗?\n出售后获得 ${gold} 金币`, - okWord: "出售", - cancelWord: "取消", - needCancel: true, - okFunc: () => this.executeSellHero() - }); - } - - /** - * 执行出售:移除英雄实体、按等级结算金币并派发 HeroSell 事件。 - * MissionCardComp 监听该事件后会刷新槽位,本盒自动切为空状态。 - */ - private executeSellHero() { - // 确认窗口打开期间英雄可能已死亡/被移除,需二次校验 - if (!this.eid || !this.model) return; - const heroLv = Math.max(1, Math.floor(this.model.lv ?? 1)); - // 移除 ECS 实体失败(实体已失效)则不做后续结算 - if (!Hero.removeByEid(this.eid)) return; - - // 统一经济管理入口:按等级计算卖价并加金币 - const gold = MissionEconomy.executeSellHero(heroLv); - mLogger.log(this.debugMode, "HeroBoxComp", "executeSellHero", { eid: this.eid, heroLv, gold }); - - // 通知 MissionCardComp 更新场上英雄数量并刷新英雄盒槽位 - oops.message.dispatchEvent(GameEvent.HeroSell, { eid: this.eid }); - } - - /** - * 空槽位点击:播放主节点点击动画,并派发事件通知 MissionCardComp 展示英雄卡池。 - */ - private onNoHeroClick() { - oops.audio.playEffect("music/button"); - this.playClickAnim(); - oops.message.dispatchEvent(GameEvent.HeroBoxEmptyClick); - } - - /** 主节点点击动画:缩放按下 → 回弹 */ - private playClickAnim() { - if (!this.node || !this.node.isValid) return; - Tween.stopAllByTarget(this.node); - this.node.setScale(1, 1, 1); - tween(this.node) - .to(0.06, { scale: new Vec3(0.94, 0.94, 1) }) - .to(0.1, { scale: new Vec3(1, 1, 1) }) - .start(); - } - - /** 刷新计时累计(降频刷新实时属性) */ - private refreshElapsed: number = 0; - /** 实时刷新间隔(秒) */ - private static readonly REFRESH_INTERVAL = 0.25; - - /** - * 帧更新:绑定英雄后按固定间隔实时刷新面板信息。 - * Why: AP/HP/暴击等属性受 buff/光环影响实时变化,需降频轮询同步; - * 实体失效时 refresh 会自动切换为空状态。 - */ - update(dt: number) { - if (!this.model) return; - this.refreshElapsed += dt; - if (this.refreshElapsed < HeroBoxComp.REFRESH_INTERVAL) return; - this.refreshElapsed = 0; - this.refresh(); - } - - /** - * 英雄盒按下:记录起点并启动长按判定。 - * 出售/升级按钮上的触摸不触发长按(按钮有各自的 TOUCH_END 行为)。 - */ - private onBoxTouchStart(event: EventTouch) { - if (!this.hasHero) return; - const target = event.target as Node | null; - if (this.isNodeWithin(target, this.sell_btn) || this.isNodeWithin(target, this.upgrade_btn)) return; - this.longPressTouchId = event.touch?.getID() ?? -1; - const pos = event.getUILocation(); - this.longPressStartX = pos.x; - this.longPressStartY = pos.y; - this.scheduleOnce(this.onLongPressFired, HeroBoxComp.LONG_PRESS_DURATION); - } - - /** 英雄盒拖动:位移超出容差取消长按判定 */ - private onBoxTouchMove(event: EventTouch) { - if (this.longPressTouchId < 0) return; - if ((event.touch?.getID() ?? -1) !== this.longPressTouchId) return; - const pos = event.getUILocation(); - const dx = pos.x - this.longPressStartX; - const dy = pos.y - this.longPressStartY; - if (dx * dx + dy * dy > HeroBoxComp.LONG_PRESS_SLOP * HeroBoxComp.LONG_PRESS_SLOP) { - this.cancelLongPress(); - } - } - - /** 英雄盒抬起:取消未触发的长按判定;若长按已弹出信息面板则立即关闭 */ - private onBoxTouchEnd(event: EventTouch) { - if (this.longPressTouchId < 0) return; - if ((event.touch?.getID() ?? -1) !== this.longPressTouchId) return; - this.cancelLongPress(); - // 直接销毁已弹出的信息面板(同步 destroy,无竞态) - this.closeMoreNode(); - } - - /** 英雄盒触摸被系统打断:取消长按判定;若已弹窗则一并关闭 */ - private onBoxTouchCancel(event: EventTouch) { - this.onBoxTouchEnd(event); - } - - /** 取消长按判定(复位触摸 ID 并移除定时) */ - private cancelLongPress() { - this.longPressTouchId = -1; - this.unschedule(this.onLongPressFired); - } - - /** 长按触发:同步实例化英雄信息面板(more.prefab,展示次级属性与技能描述) */ - private onLongPressFired() { - // 不重置 longPressTouchId:保留以便 onBoxTouchEnd 能识别同一触摸并销毁弹窗 - if (!this.hasHero || !(this.model as any)?.ent) return; - if (!this.morePrefab) { - mLogger.warn(true, "HeroBoxComp", "onLongPressFired morePrefab 未绑定,请在编辑器拖入 more.prefab"); - return; - } - oops.audio.playEffect("music/button"); - // 同步实例化:避开 oops.gui 首次异步加载窗口期,确保放开时能立即 destroy - this.closeMoreNode(); - this.moreNode = instantiate(this.morePrefab); - // more.prefab 是全屏遮罩弹窗,必须挂到 Canvas 根节点,避免被英雄盒父节点的 Mask 裁剪或坐标系错位 - const canvas = find("Canvas") || director.getScene()?.getChildByName("Canvas"); - (canvas ?? this.node.parent)?.addChild(this.moreNode); - // 整体上移 100 像素(弹窗相对英雄盒偏上展示) - this.moreNode.setPosition(this.moreNode.position.x, this.moreNode.position.y + 100, this.moreNode.position.z); - this.moreNode.getComponent(HeroMoreCom)?.init(this.eid); - } - - /** 关闭并清理已弹出的英雄信息面板(同步 destroy) */ - private closeMoreNode() { - if (this.moreNode && this.moreNode.isValid) { - this.moreNode.destroy(); - } - this.moreNode = null; - } - - /** - * 判断触摸目标节点是否位于指定祖先节点(含自身)之内。 - * @param target 触摸命中的节点(可能为空) - * @param ancestor 祖先节点(可能为空,空时返回 false) - * @returns 命中节点是否为 ancestor 的后代或自身 - */ - private isNodeWithin(target: Node | null, ancestor: Node | null): boolean { - if (!target || !ancestor || !ancestor.isValid) return false; - let cur: Node | null = target; - while (cur) { - if (cur === ancestor) return true; - if (cur === this.node) break; - cur = cur.parent; - } - return false; - } - - /** ECS 组件移除时销毁节点 */ - reset() { - if (this.node && this.node.isValid) { - this.node.destroy(); - } - } - - // ======================== 数据绑定 ======================== - - /** 当前槽位是否绑定了英雄 */ - public get hasHero(): boolean { - return this.eid > 0 && !!this.model; - } - - /** 当前绑定的英雄实体 ID */ - public get bindEid(): number { - return this.eid; - } - - /** - * 绑定场上英雄并刷新显示。 - * @param eid 英雄 ECS 实体 ID - * @param model 英雄属性组件 - */ - public bindHero(eid: number, model: HeroAttrsComp) { - this.eid = eid; - this.model = model; - this.node.active = true; - if (this.noHero && this.noHero.isValid) { - this.noHero.active = false; - } - if (this.sell_btn && this.sell_btn.isValid) { - this.sell_btn.active = true; - } - if (this.upgrade_btn && this.upgrade_btn.isValid) { - this.upgrade_btn.active = true; - } - this.refresh(); - } - - /** 清空槽位,显示空英雄信息 */ - public applyEmpty() { - this.eid = 0; - this.model = null; - this.iconHeroUuid = 0; - this.iconVisualToken += 1; - - if (this.noHero && this.noHero.isValid) { - this.noHero.active = true; - } - - if (this.sell_btn && this.sell_btn.isValid) { - this.sell_btn.active = false; - } - if (this.upgrade_btn && this.upgrade_btn.isValid) { - this.upgrade_btn.active = false; - } - if (this.sell_price_label && this.sell_price_label.isValid) { - this.sell_price_label.string = ""; - } - if (this.upgrade_price_label && this.upgrade_price_label.isValid) { - this.upgrade_price_label.string = ""; - } - - if (this.name_label && this.name_label.isValid) { - this.name_label.string = ""; - } - if (this.level_label && this.level_label.isValid) { - this.level_label.string = ""; - } - if (this.icon_node && this.icon_node.isValid) { - const sprite = this.icon_node.getComponent(Sprite) || this.icon_node.getComponentInChildren(Sprite); - if (sprite) sprite.spriteFrame = null; - } - this.clearStatRow(this.ap_all_label, this.ap_plus_label); - this.clearStatRow(this.hp_all_label, this.hp_plus_label); - } - - /** - * 刷新显示:同步英雄等级、名称、AP / HP 与图标(次级属性与技能描述已分离至 HeroMoreCom 弹窗)。 - * 绑定的英雄实体已失效时自动切换为空状态。 - */ - public refresh() { - if (!this.model || !(this.model as any).ent) { - this.applyEmpty(); - return; - } - - const heroUuid = this.model.hero_uuid ?? 0; - const hero = HeroInfo[heroUuid]; - - // ---- 背景(按 rarity 切换 bg_node 颜色子节点) ---- - this.updateBgNode(hero?.rarity ?? 1); - - // ---- 名称 ---- - if (this.name_label && this.name_label.isValid) { - this.name_label.string = this.model.hero_name ?? ""; - } - - // ---- 等级 ---- - if (this.level_label && this.level_label.isValid) { - const lv = this.model.lv ?? 1; - this.level_label.string = `Lv.${lv}`; - this.level_label.color = getLvColor(lv); - } - - // ---- 出售价格(按等级计算) ---- - if (this.sell_price_label && this.sell_price_label.isValid) { - const lv = Math.max(1, Math.floor(this.model.lv ?? 1)); - this.sell_price_label.string = `${MissionEconomy.getSellGold(lv)}`; - } - - // ---- 升级费用(无限升级:始终显示;金币不足时标红提示) ---- - if (this.upgrade_price_label && this.upgrade_price_label.isValid) { - const lv = Math.max(1, Math.floor(this.model.lv ?? 1)); - const cost = MissionEconomy.getUpgradeCost(lv); - this.upgrade_price_label.string = `${cost}`; - // 金币不足标红,足够恢复默认色,给玩家直观的可升级反馈 - this.upgrade_price_label.color = MissionEconomy.getCoin() >= cost ? Color.WHITE : HeroBoxComp.INSUFFICIENT_COLOR; - } - - // ---- AP / HP ---- - // plus(附加值)= 最终值 - 当前等级基础值;基础值 = 1 级原始 base + 等级成长 + bonus 百分比加成。 - // Why: base_ap/base_hp 是不含任何等级增长的原始值,直接用 final-base 会把升级带来的 - // 属性增长也计入增量。这里补齐等级增长作为基准,使 plus 仅反映 buff/光环等临时增益。 - const lv = Math.max(1, Math.floor(this.model.lv ?? 1)); - const grow = hero ? calcGrowBonus(hero, lv) : { ap: 0, hp: 0 }; - - const finalAp = Math.max(0, Math.floor(this.model.getFinalAp())); - const lvBaseAp = Math.max(0, Math.floor((this.model.base_ap ?? 0) + grow.ap + HeroBoxComp.sumBonusPct((this.model.base_ap ?? 0) + grow.ap, hero?.bonus, 'ap', lv))); - this.setStatRow(this.ap_all_label, this.ap_plus_label, finalAp, finalAp - lvBaseAp); - - const finalHp = Math.max(0, Math.floor(this.model.getFinalHpMax())); - const lvBaseHp = Math.max(0, Math.floor((this.model.base_hp ?? 0) + grow.hp + HeroBoxComp.sumBonusPct((this.model.base_hp ?? 0) + grow.hp, hero?.bonus, 'hp', lv))); - this.setStatRow(this.hp_all_label, this.hp_plus_label, finalHp, finalHp - lvBaseHp); - - // ---- 图标(UUID 变化时重新加载首帧动画) ---- - if (hero && heroUuid !== this.iconHeroUuid) { - this.iconHeroUuid = heroUuid; - this.iconVisualToken += 1; - this.updateHeroIcon(hero.path, heroUuid, this.iconVisualToken); - } - } - - // ======================== 内部工具 ======================== - - /** - * 根据 rarity 切换 bg_node 下的颜色子节点显示。 - * 等级与颜色对应关系: - * rarity 1 → green - * rarity 2 → blue - * rarity 3 → purple - * rarity 4 → red - * rarity 5 → yellow - * @param rarity 英雄卡牌等级(HeroInfo.rarity,缺省按 1 处理) - */ - private updateBgNode(rarity: number) { - if (!this.bg_node || !this.bg_node.isValid) return; - const lvToColor: Record = { - 1: "green", - 2: "blue", - 3: "purple", - 4: "red", - 5: "yellow", - }; - const targetColor = lvToColor[rarity] ?? lvToColor[1]; - this.bg_node.children.forEach(child => { - child.active = (child.name === targetColor); - }); - } - - /** - * 统计场上存活英雄数量(与 MissionCardComp.getAliveHeroCount 口径一致)。 - */ - private static getAliveHeroCount(): number { - let count = 0; - ecs.query(ecs.allOf(HeroAttrsComp)).forEach((entity: ecs.Entity) => { - const model = entity.get(HeroAttrsComp); - if (model && model.fac === FacSet.HERO) { - count++; - } - }); - return count; - } - - /** - * 写入一行战斗信息(总值 + 附加值)。 - * 总值始终显示(0 不隐藏);附加值为 0 时隐藏,正/负分别显示 (+x) / (x)。 - * - * @param allLabel 总值标签(可为空,空时跳过) - * @param plusLabel 附加值标签(可为空) - * @param total 总数值(最终生效值) - * @param bonus 附加数值(最终值 - 基础值) - * @param suffix 数值后缀(如 "%") - * @param decimals 保留小数位数(默认 0,取整) - */ - private setStatRow(allLabel: Label | null, plusLabel: Label | null, total: number, bonus: number, suffix: string = "", decimals: number = 0) { - // 整数数值统一走 NumberFormatter 千分位缩写(如 12.3k),避免大数值溢出标签 - const fmt = (v: number) => decimals > 0 ? v.toFixed(decimals) : NumberFormatter.formatNumber(Math.floor(v)); - if (allLabel && allLabel.isValid) { - allLabel.string = `${fmt(total)}${suffix}`; - } - if (plusLabel && plusLabel.isValid) { - if (bonus !== 0) { - plusLabel.string = bonus > 0 ? `(+${fmt(bonus)}${suffix})` : `(${fmt(bonus)}${suffix})`; - } else { - plusLabel.string = ""; - } - } - } - - /** 清空一行战斗信息(空槽位时使用) */ - private clearStatRow(allLabel: Label | null, plusLabel: Label | null) { - if (allLabel && allLabel.isValid) allLabel.string = ""; - if (plusLabel && plusLabel.isValid) plusLabel.string = ""; - } - - /** - * 加载英雄 idle 动画首帧作为静态图标。 - * @param path 英雄美术资源名(HeroInfo.path) - * @param uuid 英雄 UUID(竞态校验用) - * @param token 视觉令牌(竞态保护) - */ - private updateHeroIcon(path: string, uuid: number, token: number) { - if (!this.icon_node || !this.icon_node.isValid) return; - const sprite = this.icon_node.getComponent(Sprite) || this.icon_node.getComponentInChildren(Sprite); - if (sprite) sprite.spriteFrame = null; - - resources.load(`game/heros/hero/${path}/idle`, AnimationClip, (err, clip) => { - if (err || !clip) return; - // 异步加载期间槽位可能已被复用 / 清空 - if (token !== this.iconVisualToken) return; - if (this.iconHeroUuid !== uuid) return; - if (!this.icon_node || !this.icon_node.isValid) return; - const target = this.icon_node.getComponent(Sprite) || this.icon_node.getComponentInChildren(Sprite); - if (!target || !target.isValid) return; - // 帧动画数据存于 spriteFrame 轨道的 _channel._curve._values(裸 SpriteFrame 数组) - let firstFrame: SpriteFrame | undefined; - for (const track of clip.tracks) { - const curve = (track as unknown as { channel?: { curve?: { _values?: unknown[] } } }).channel?.curve; - const frame = curve?._values?.[0]; - if (frame instanceof SpriteFrame) { - firstFrame = frame; - break; - } - } - if (firstFrame) { - target.spriteFrame = firstFrame; - } - }); - } -} diff --git a/assets/script/game/map/HeroMoreCom.ts b/assets/script/game/map/HeroMoreCom.ts index e3e937c3..e637e64a 100644 --- a/assets/script/game/map/HeroMoreCom.ts +++ b/assets/script/game/map/HeroMoreCom.ts @@ -3,11 +3,10 @@ * @description 英雄信息弹窗组件(UI 视图层) * * 职责: - * 1. 展示单个英雄的次级属性(攻速/击晕/暴击/爆伤/冰冻/击退/穿透/风怒)与技能描述, - * 展示内容由原 HeroBoxComp 分离而来,计算口径与其完全一致。 - * 2. 由 HeroBoxComp 长按英雄盒时同步实例化(instantiate more.prefab)并调用 init(eid)。 + * 1. 展示单个英雄的次级属性(攻速/击晕/暴击/爆伤/冰冻/击退/穿透/风怒)与技能描述。 + * 2. 由调用方同步实例化(instantiate more.prefab)并调用 init(eid)。 * 3. 属性受 buff/光环影响实时变化,打开期间按固定间隔降频刷新;英雄死亡/被卖出自动关闭。 - * 4. 点击弹窗内任意位置(含全屏透明遮罩)或 HeroBoxComp 放开手指时由调用方 destroy。 + * 4. 点击弹窗内任意位置(含全屏透明遮罩)时由调用方 destroy。 * * 依赖: * - HeroAttrsComp —— 英雄属性数据模型 @@ -230,7 +229,7 @@ export class HeroMoreCom extends Component { // ======================== 交互 ======================== - /** 点击面板任意处(含遮罩)关闭(备用交互,主路径由 HeroBoxComp 放开手指 destroy) */ + /** 点击面板任意处(含遮罩)关闭(备用交互,主路径由调用方 destroy) */ private onTouchEndClose() { oops.audio.playEffect("music/button"); this.closeSelf(); diff --git a/assets/script/game/map/MissionCardComp.ts b/assets/script/game/map/MissionCardComp.ts index 5f493859..d484a3c6 100644 --- a/assets/script/game/map/MissionCardComp.ts +++ b/assets/script/game/map/MissionCardComp.ts @@ -47,7 +47,6 @@ import { drawItemCards } from "../common/config/ICardSet"; import { drawSkillCards } from "../common/config/SCardSet"; import { CHeroComp } from "./CHeroComp"; import { EquipListComp } from "./EquipListComp"; -import { HeroBoxComp } from "./HeroBoxComp"; import { SCardComp } from "./SCardComp"; import { MissEquipComp } from "./MissEquipComp"; import { MissSkillsComp } from "./MissSkillsComp"; @@ -189,8 +188,6 @@ export class MissionCardComp extends CCComp { /** 三个槽位对应的 CHeroComp 控制器缓存(有序数组) */ private cardComps: CHeroComp[] = []; - /** 英雄面板 HeroBoxComp 控制器缓存(与场上英雄一一对应,最多 3 个) */ - private heroBoxComps: HeroBoxComp[] = []; /** 装备卡槽控制器缓存 */ private equipCardComps: EquipListComp[] = []; /** 技能卡槽控制器缓存 */ @@ -266,7 +263,6 @@ export class MissionCardComp extends CCComp { onLoad() { this.bindEvents(); this.cacheCardComps(); - this.hideAllHeroBoxSlots(); this.initCardsPanelPos(); this.initPanelLayout(); // 初始即永久隐藏手动插卡按钮,任何阶段都不再激活 @@ -378,17 +374,12 @@ export class MissionCardComp extends CCComp { mLogger.log(this.debugMode, "MissionCardComp", "mission start"); } - /** 任务结束:清空 3 槽 + 装备商店 + 技能卡槽 + 英雄面板并隐藏整个节点 */ + /** 任务结束:清空 3 槽 + 装备商店 + 技能卡槽并隐藏整个节点 */ onMissionEnd() { this.clearAllCards(); this.clearEquipments(); this.clearSkillCards(); this.clearShopItems(); - for (const comp of this.heroBoxComps) { - if (comp && comp.node && comp.node.isValid) { - comp.applyEmpty(); - } - } // 任务结束清理:停止新手卡牌引导动画 this.stopCardsGuideAnim(); this.unscheduleAllCallbacks(); @@ -439,8 +430,6 @@ export class MissionCardComp extends CCComp { oops.message.on(GameEvent.UseSpecialCard, this.onUseSpecialCard, this); oops.message.on(GameEvent.ShowSmallTip, this.onShowSmallTip, this); oops.message.on(GameEvent.CardUsed, this.onCardUsed, this); - oops.message.on(GameEvent.HeroBoxEmptyClick, this.onHeroBoxEmptyClick, this); - oops.message.on(GameEvent.HeroUpgrade, this.onHeroUpgrade, this); /** 按钮触控事件:抽卡 */ this.cards_refresh?.on(NodeEventType.TOUCH_START, this.onDrawTouchStart, this); @@ -698,8 +687,6 @@ export class MissionCardComp extends CCComp { oops.message.off(GameEvent.UseSpecialCard, this.onUseSpecialCard, this); oops.message.off(GameEvent.ShowSmallTip, this.onShowSmallTip, this); oops.message.off(GameEvent.CardUsed, this.onCardUsed, this); - oops.message.off(GameEvent.HeroBoxEmptyClick, this.onHeroBoxEmptyClick, this); - oops.message.off(GameEvent.HeroUpgrade, this.onHeroUpgrade, this); if (this.cards_refresh && this.cards_refresh.isValid) { this.cards_refresh.off(NodeEventType.TOUCH_START, this.onDrawTouchStart, this); this.cards_refresh.off(NodeEventType.TOUCH_END, this.onDrawTouchEnd, this); @@ -756,56 +743,20 @@ export class MissionCardComp extends CCComp { this.hasCalledHero = true; this.updatePanelButtonsInteractable(); } - - - - // 英雄登场后同步英雄信息盒 - // 暂不启用 herobox 同步(后续可能恢复) - // this.refreshHeroBoxSlots(); } - /** 英雄死亡事件回调:刷新面板列表并更新英雄数量 UI */ + /** 英雄死亡事件回调:更新英雄数量 UI */ private onHeroDead() { this.updateHeroNumUI(true, false); - // 暂不启用 herobox 同步(后续可能恢复) - // this.refreshHeroBoxSlots(); } - /** 英雄被出售事件回调:更新英雄数量 UI 并清空对应英雄信息盒 */ + /** 英雄被出售事件回调:更新英雄数量 UI */ private onHeroSell() { this.updateHeroNumUI(true, false); - // 暂不启用 herobox 同步(后续可能恢复) - // this.refreshHeroBoxSlots(); } - /** - * 英雄面板升级请求回调(由 HeroBoxComp 确认弹窗后派发)。 - * 扣费成功后按 eid 精确升级;金币不足或不可升级时 toast 提示。 - */ - private onHeroUpgrade(event: string, args: any) { - const payload = args ?? event; - const eid: number = payload?.eid ?? 0; - if (!eid) return; - const actor = this.queryAliveHeroActors().find(item => item.eid === eid); - if (!actor) return; - // 无限升级:不再拦截满级,仅校验金币 - // 统一经济管理入口:按当前等级扣费 - if (!MissionEconomy.executeUpgradeCost(actor.model.lv)) { - oops.gui.toast(`金币不足`); - return; - } - this.tryUpgradeHeroByEid(eid); - } - - /** 英雄升级事件回调:刷新英雄信息盒显示 */ + /** 英雄升级事件回调 */ private onHeroLvUp() { - // 暂不启用 herobox 同步(后续可能恢复) - // this.refreshHeroBoxSlots(); - } - - /** 英雄面板空槽位点击回调:展示英雄卡池选择界面 */ - private onHeroBoxEmptyClick() { - this.onShowCardsClick(); } /** @@ -1169,76 +1120,6 @@ export class MissionCardComp extends CCComp { this.showHeros.active = false; } - // ======================== 英雄信息盒(herosBoxNode) ======================== - - /** - * 同步英雄信息盒槽位与场上英雄: - * 1. 刷新 herosBoxNode 下 HeroBoxComp 槽位缓存(编辑器已预放 3 个)。 - * 2. 查询当前存活英雄列表,按序绑定到槽位(bindHero 内部激活节点)。 - * 3. 多余槽位清空数据并隐藏(默认全部隐藏,召唤一个激活一个)。 - * - * Why: 英雄召唤 / 死亡 / 卖出 / 升级后调用,保证面板与场上一一对应。 - * - * 备注:当前版本暂不启用 herobox 同步显示英雄信息(后续可能恢复), - * 方法体已整体注释,所有调用点也已注释。恢复时取消方法体与调用点注释。 - */ - private refreshHeroBoxSlots() { - /* 暂不启用 herobox 同步,保留实现备查 - if (!this.herosBoxNode || !this.herosBoxNode.isValid) return; - - this.ensureHeroBoxSlots(); - - // 查询场上存活英雄(含复活中的实体,按 eid 升序保证稳定顺序) - const actors: Array<{ eid: number, model: HeroAttrsComp }> = []; - ecs.query(ecs.allOf(HeroAttrsComp)).forEach((entity: ecs.Entity) => { - const model = entity.get(HeroAttrsComp); - if (!model) return; - if (model.fac !== FacSet.HERO) return; - if (model.is_dead) return; - actors.push({ eid: entity.eid, model }); - }); - actors.sort((a, b) => a.eid - b.eid); - - for (let i = 0; i < this.heroBoxComps.length; i++) { - const comp = this.heroBoxComps[i]; - if (!comp || !comp.node || !comp.node.isValid) continue; - const actor = actors[i]; - if (actor) { - comp.bindHero(actor.eid, actor.model); - } else { - // 空槽位默认隐藏:召唤一个英雄才激活一个槽位 - comp.applyEmpty(); - comp.node.active = false; - } - } - - // 列表高度只按可见槽位(存活英雄数)计算,空槽位已隐藏不再占位 - this.resizeListBox(this.herosBoxNode, actors.length); - */ - } - - /** - * 缓存英雄信息盒槽位组件引用。 - * 槽位已在编辑器中预先放置(herosBoxNode 下挂 HeroBoxComp), - * 运行时仅刷新缓存,不再动态实例化。 - */ - private ensureHeroBoxSlots() { - if (!this.herosBoxNode || !this.herosBoxNode.isValid) return; - this.heroBoxComps = this.herosBoxNode.children - .map(node => node.getComponent(HeroBoxComp)) - .filter((comp): comp is HeroBoxComp => !!comp); - } - - /** 英雄信息盒槽位默认全部隐藏,召唤一个英雄再激活一个 */ - private hideAllHeroBoxSlots() { - this.ensureHeroBoxSlots(); - for (const comp of this.heroBoxComps) { - if (comp && comp.node && comp.node.isValid) { - comp.node.active = false; - } - } - } - /** * 支付抽卡面板开启费用: * 金币足够则扣除当前费用,并将该面板费用递增 PANEL_OPEN_COST_STEP; @@ -2316,7 +2197,6 @@ export class MissionCardComp extends CCComp { // 关键:在 reset/销毁 时将 Map 置空,彻底切断引用 this.cardComps = []; - this.heroBoxComps = []; this.skillCardComps = []; if (this.node && this.node.isValid) { diff --git a/put/server/data/heroes.json b/put/server/data/heroes.json index 87b29b73..8bd99ebe 100644 --- a/put/server/data/heroes.json +++ b/put/server/data/heroes.json @@ -101,7 +101,8 @@ "attrs": { "def": 50 }, - "name": "钢铁壁垒" + "name": "钢铁壁垒", + "icon": "46-Iron-Clad" } ] }, @@ -202,7 +203,8 @@ "attrs": { "hp": 50 }, - "name": "不屈战意" + "name": "不屈战意", + "icon": "29-Endure" } ] }, @@ -300,7 +302,8 @@ "attrs": { "hp": 50 }, - "name": "不屈战意" + "name": "不屈战意", + "icon": "29-Endure" } ] }, @@ -400,7 +403,8 @@ "attrs": { "ap": 50 }, - "name": "致命本能" + "name": "致命本能", + "icon": "36-Guardian-Stance" } ] }, @@ -501,7 +505,8 @@ "attrs": { "ap": 50 }, - "name": "致命本能" + "name": "致命本能", + "icon": "36-Guardian-Stance" } ] }, @@ -600,7 +605,8 @@ "attrs": { "ap": 50 }, - "name": "鹰眼锁定" + "name": "鹰眼锁定", + "icon": "27-Hawkeye" } ] }, @@ -699,7 +705,8 @@ "attrs": { "ap": 50 }, - "name": "奥术共鸣" + "name": "奥术共鸣", + "icon": "100-Enchant-Magic" } ] }, @@ -795,7 +802,8 @@ "attrs": { "hp": 50 }, - "name": "守护之心" + "name": "守护之心", + "icon": "29-Endure" } ] }, @@ -898,7 +906,8 @@ "attrs": { "def": 50 }, - "name": "钢铁壁垒" + "name": "钢铁壁垒", + "icon": "46-Iron-Clad" } ] }, @@ -999,7 +1008,8 @@ "attrs": { "ap": 50 }, - "name": "鹰眼锁定" + "name": "鹰眼锁定", + "icon": "27-Hawkeye" } ] }, @@ -1103,7 +1113,8 @@ "attrs": { "def": 50 }, - "name": "钢铁壁垒" + "name": "钢铁壁垒", + "icon": "46-Iron-Clad" } ] }, @@ -1226,7 +1237,8 @@ "attrs": { "ap": 50 }, - "name": "奥术共鸣" + "name": "奥术共鸣", + "icon": "100-Enchant-Magic" } ] }, @@ -1334,7 +1346,8 @@ "attrs": { "hp": 50 }, - "name": "守护之心" + "name": "守护之心", + "icon": "29-Endure" } ] }, @@ -1440,9 +1453,10 @@ "attrs": { "hp": 50 }, - "name": "不屈战意" + "name": "不屈战意", + "icon": "29-Endure" } ] } ] -} \ No newline at end of file +}