index.jsx 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. import styles from "@components/GameItem/styles.module.scss";
  2. import {NavLink, useNavigate} from "react-router-dom";
  3. import {LazyLoadImage} from "react-lazy-load-image-component";
  4. import symbol from "@assets/symbol-defs.svg";
  5. import React from "react";
  6. import {ROUTE_PATH} from "@constants/routes";
  7. import {localStorageSet} from "@utils/helpers";
  8. import {LOCAL_GAME_URL} from "@constants/localkey";
  9. import Imgix from "@components/Imgix";
  10. const GameItem=({data,handleRoom,...props})=>{
  11. const navigate=useNavigate();
  12. const renderOlicon=()=>{
  13. return (
  14. <svg xmlns="http://www.w3.org/2000/svg" width="9" height="10" viewBox="0 0 9 10" fill="none"><path d="M7.78243 7.00126C7.98931 8.18376 7.16525 9.0422 6.01681 9.23532C4.90775 9.42188 3.09993 9.42188 1.99087 9.23532C0.842435 9.04251 0.0183723 8.18438 0.225247 7.00157C0.400872 5.99813 1.25118 5.37282 2.28993 5.42657C3.04868 5.46594 3.51493 5.56469 4.05462 5.56469C4.60056 5.56469 4.96431 5.46594 5.71743 5.42657C6.75587 5.37219 7.60712 5.99782 7.78243 7.00126ZM3.86275 0.907195C4.95368 0.907195 5.83837 1.79157 5.83837 2.88313C5.83837 3.9747 4.95368 4.85907 3.86275 4.85907C2.7715 4.85907 1.88681 3.97438 1.88681 2.88313C1.88681 1.79188 2.7715 0.907195 3.86275 0.907195Z" fill="url(#paint0_linear_451_3515)"></path><path d="M7.42806 5.14407C7.95931 5.2425 8.59868 5.525 8.85493 6.28813C9.09181 6.99375 8.81275 7.54688 8.49493 7.91282C8.39368 8.02938 8.19087 7.92813 8.24118 7.78532C8.37181 7.41594 8.42431 6.94407 8.21993 6.42157C8.02118 5.91313 7.65337 5.59282 7.31962 5.39563C7.18025 5.31344 7.26681 5.11407 7.42806 5.14407ZM5.63118 0.938442C5.47243 0.825317 5.58681 0.582817 5.77868 0.631255C5.98087 0.682192 6.189 0.761567 6.38306 0.883442C7.02337 1.28657 7.33993 1.99969 7.22712 2.79188C7.17462 3.16157 7.01056 3.44907 6.82587 3.66625C6.70431 3.80969 6.46431 3.69032 6.51431 3.51157C6.63181 3.09219 6.6665 2.55657 6.44056 1.96813C6.25431 1.48344 5.93587 1.15625 5.63118 0.938442Z" fill="#26AB4B"></path><defs><linearGradient id="paint0_linear_451_3515" x1="5.21662" y1="0.333274" x2="5.21662" y2="9.37524" gradientUnits="userSpaceOnUse"><stop stop-color="#85F25E"></stop><stop offset="1" stop-color="#33EF00"></stop></linearGradient></defs></svg>
  15. );
  16. }
  17. const formatNum=(num)=>{
  18. num=Number(num);
  19. let snum=num+"";
  20. if (num>=1000){
  21. snum=(num/1000).toFixed(2)+"K";
  22. }
  23. return snum;
  24. }
  25. const getRoom=()=>{
  26. let room=[];
  27. let level_info=data.level_info;
  28. if (level_info){
  29. for (const key in level_info) {
  30. room.push({key:key,value:level_info[key]});
  31. }
  32. }
  33. return room;
  34. }
  35. const onEnterGame=()=>{
  36. let id=data.id;
  37. let url=data.link;
  38. localStorageSet(LOCAL_GAME_URL+id,url);
  39. let path=ROUTE_PATH.GAME+"/"+id;
  40. global.authLockPath=path;
  41. navigate(path);
  42. }
  43. const handleEnterRoom=(e)=>{
  44. if (handleRoom==null)onEnterGame();
  45. else
  46. {
  47. let room=getRoom();
  48. if (room.length>1)handleRoom(e,data);
  49. else onEnterGame();
  50. }
  51. }
  52. // return (
  53. // <div className={styles.grid_item}>
  54. // <button onClick={()=>{
  55. // onEnterGame();
  56. // }} className={styles.game_img_wrap}>
  57. // <LazyLoadImage
  58. // src={data.img}
  59. // alt={"game-icon"}
  60. // effect={"blur"}
  61. // wrapperClassName={`lazy-image ${styles.game_img}`}
  62. // />
  63. // <div className={styles.online}>
  64. // {
  65. // renderOlicon()
  66. // }
  67. // <span>{formatNum(data.online)}</span>
  68. // </div>
  69. // </button>
  70. // <div className={styles.bot_info}>
  71. // <div className={styles.game_tit}>
  72. // <NavLink className={styles.game_desc}>
  73. // {data.brand}
  74. // </NavLink>
  75. // <button>
  76. // <svg className={`${styles.game_desc_icon}`}>
  77. // <use xlinkHref={`${symbol}#icon_Inform`} />
  78. // </svg>
  79. // </button>
  80. // </div>
  81. // </div>
  82. // </div>
  83. // )
  84. return (
  85. <div className={`${styles.grid_item}`} {...props}>
  86. <button className={styles.game_img_wrap} onClick={(e)=>{
  87. // onEnterGame();
  88. // if (handleRoom)handleRoom(e,data);
  89. handleEnterRoom(e)
  90. }}>
  91. {/*<LazyLoadImage*/}
  92. {/* src={data.img}*/}
  93. {/* alt={"game-icon"}*/}
  94. {/* effect={"blur"}*/}
  95. {/* wrapperClassName={`lazy-image ${styles.game_img}`}*/}
  96. {/*/>*/}
  97. <Imgix className={`lazyload ${styles.game_img}`} src={data.img} alt={"game-icon"} width={192}></Imgix>
  98. </button>
  99. </div>
  100. )
  101. }
  102. export default GameItem;