CreateRoleScene.ts 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. import { _decorator, Component, Node, EditBox, EventTouch } from 'cc';
  2. import { SceneDef } from '../../scripts/SceneDef';
  3. import { LobbyMgr } from './LobbyMgr';
  4. const { ccclass, property } = _decorator;
  5. /**
  6. * Predefined variables
  7. * Name = Index
  8. * DateTime = Tue Nov 29 2022 20:05:39 GMT+0800 (China Standard Time)
  9. * Author = mykylin
  10. * FileBasename = Index.ts
  11. * FileBasenameNoExtension = Index
  12. * URL = db://assets/scripts/Index.ts
  13. * ManualUrl = https://docs.cocos.com/creator/3.4/manual/zh/
  14. *
  15. */
  16. const LAST_NAMES = ['赵', '李', '张', '王', '姜', '刘', '孙', '吴', '上官', '欧阳', '百里', '武', '西门', '陈', '潘', '东方', '唐'];
  17. const GIVEN_NAMES = ['天涯', '雪梨', '天天', '盼盼', '谋谋', '子轩', '童话', '子修', '婉儿', '松韵', '邱泽', '晨晨', '阳阳', '莎莎', '小小', '舞桐'];
  18. @ccclass('CreateRoleScene')
  19. export class CreateRoleScene extends Component {
  20. @property(EditBox)
  21. edtName: EditBox;
  22. @property(Node)
  23. selector: Node;
  24. @property(Node)
  25. icons: Node;
  26. private _iconIndex = 0;
  27. start() {
  28. tgx.UIMgr.inst.closeAll();
  29. this._iconIndex = Math.floor(Math.random() * this.icons.children.length);
  30. let icon = this.icons.children[this._iconIndex];
  31. this.selector.setWorldPosition(icon.worldPosition);
  32. this.onBtnRandomName();
  33. }
  34. onBtnRandomName() {
  35. let lastName = LAST_NAMES[Math.floor(Math.random() * LAST_NAMES.length)];
  36. let givenName = GIVEN_NAMES[Math.floor(Math.random() * GIVEN_NAMES.length)];
  37. this.edtName.string = lastName + givenName;
  38. }
  39. onIconSelected(event: EventTouch) {
  40. for (let i = 0; i < this.icons.children.length; ++i) {
  41. if (this.icons.children[i] == event.currentTarget) {
  42. this._iconIndex = i;
  43. let icon = this.icons.children[this._iconIndex];
  44. this.selector.setWorldPosition(icon.worldPosition);
  45. }
  46. }
  47. }
  48. async onBtnStart() {
  49. let visualId = this._iconIndex;
  50. let name = this.edtName.string;
  51. let ret = await LobbyMgr.inst.rpc_CreateRole(name, visualId);
  52. if (!ret.isSucc) {
  53. return;
  54. }
  55. //create role successfully, enter meta world
  56. //角色创建成功,进入大厅
  57. tgx.SceneUtil.loadScene(SceneDef.LOBBY);
  58. }
  59. }