Commit ee9360cc authored by haiyoucuv's avatar haiyoucuv

init

parent c4ded462
......@@ -27,18 +27,6 @@ const API = generateAPI({
records: "records.query",
index: "tcs/index.do",
submit: {
uri: "tcs/submit.do",
withToken: true,
method: "post",
},
start: {
uri: "tcs/start.do",
withToken: true,
},
guide: "tcs/guide.do",
rankInfo: 'tcs/rankIndex.do',
drawIndex: 'draw/index.do',
doDraw: {
uri: 'draw/draw.do',
......
src/assets/common/close.png

1.76 KB | W: | H:

src/assets/common/close.png

1.54 KB | W: | H:

src/assets/common/close.png
src/assets/common/close.png
src/assets/common/close.png
src/assets/common/close.png
  • 2-up
  • Swipe
  • Onion skin
......@@ -9,8 +9,8 @@ export interface IMusicBtnProps extends HTMLAttributes<HTMLDivElement> {
disable?: string;
}
import musicClose from "@/assets/homePage/musicoff.png";
import musicOpen from "@/assets/homePage/musicon.png";
import musicClose from "@/assets/common/music_close.png";
import musicOpen from "@/assets/common/music_open.png";
@observer
class MusicBtn extends React.Component<IMusicBtnProps> {
......
......@@ -53,7 +53,6 @@ class GamePage extends React.Component {
paused: boolean = true;
async componentDidMount() {
gameStore.reset();
await initBundle();
......@@ -82,7 +81,6 @@ class GamePage extends React.Component {
clearInterval(this.interval);
gameStore.gameInfo.cd = 0;
this.gameOver = true;
gameStore.submit();
}
}, 1000);
}
......
......@@ -9,9 +9,9 @@ import { Button } from "@grace/ui";
import MyPrize from '../MyPrize/MyPrize';
import { PageCtrl } from '@/core/ctrls/PageCtrl';
import { ModalCtrl } from '@/core/ctrls/ModalCtrl';
import SucPanel from '@/panels/SucPanel/SucPanel';
import Assist_fail from '../../components/assist_fail/assist_fail';
import Assist_succeed from '../../components/assist_succeed/assist_succeed';
import SignSucPanel from '@/panels/SignSucPanel/SignSucPanel.tsx';
import Assist_fail from '@/components/assist_fail/assist_fail';
import Assist_succeed from '@/components/assist_succeed/assist_succeed';
@observer
......@@ -26,7 +26,7 @@ class HomePage extends React.Component<any, any> {
// store.doAssist()
// }
ModalCtrl.showModal(Assist_succeed);
ModalCtrl.showModal(SignSucPanel);
}
clickPrize = ()=>{
......
import React from "react";
import { observer } from "mobx-react";
import { preload } from "@/core/preload.ts";
import "./LoadingDemo.less";
import styles from "./LoadingDemo.module.less";
import { PageCtrl } from "@/core/ctrls/PageCtrl.tsx";
import HomePage from "@/pages/HomePage/HomePage.tsx";
import { waitTime } from "@/utils/utils.ts";
......@@ -73,15 +73,15 @@ class LoadingDemo extends React.Component {
const { curPercentage } = this.state;
return <>
<div className="loading">
<div className="bg"/>
<div className="progressBarBg"/>
<div className="progressBarFill" style={{
<div className={styles.loading}>
<div className={styles.bg}/>
<div className={styles.progressBarBg}/>
<div className={styles.progressBarFill} style={{
width: `${curPercentage / 100 * 4.7}rem`
}}/>
{/*<span className="progressTxt">金豆正在路上...... {curPercentage}%</span>*/}
</div>
<div className="title"/>
<div className={styles.title}/>
</>;
}
}
......
@import "../../res.less";
.SignSucPanel {
width: 750px;
height: 1624px;
position: absolute;
left: 0;
top: 0;
.bgEffect {
width: 750px;
height: 1624px;
position: absolute;
left: 0;
top: 0;
}
.bg {
position: absolute;
left: 0;
top: 397px;
width: 750px;
height: 741px;
.webpBg("SignSucPanel/bg.png");
}
.title {
position: absolute;
left: 138px;
top: 306px;
width: 384px;
height: 84px;
.webpBg("SignSucPanel/签到成功.png");
}
.normal {
.tip {
font-family: "zzgfyht";
font-size: 53.62px;
color: #8f2245;
position: absolute;
left: 0;
top: 485px;
width: 100%;
text-align: center;
}
.img {
position: absolute;
left: 245px;
top: 583px;
width: 263px;
height: 253px;
.webpBg("SignSucPanel/金币堆.png");
}
}
.vip {
color: #8f2245;
text-align: center;
font-family: "zzgfyht";
.tip {
font-size: 54.52px;
position: absolute;
left: 0;
top: 481px;
width: 100%;
text-align: center;
}
.left {
position: absolute;
left: 105px;
top: 581px;
width: 300px;
font-size: 43.19px;
}
.right {
position: absolute;
left: 336px;
top: 581px;
width: 300px;
font-size: 43.19px;
}
.img {
position: absolute;
left: 168px;
top: 643px;
width: 402px;
height: 184px;
.webpBg("SignSucPanel/会员金币堆.png");
}
}
.btn {
position: absolute;
left: 164px;
top: 925px;
width: 420px;
height: 123px;
.webpBg("SignSucPanel/按钮.png");
}
.close {
position: absolute;
left: 336px;
top: 1194px;
width: 79px;
height: 79px;
.webpBg("common/close.png");
}
}
import React from "react";
import {observer} from "mobx-react";
import "./SucPanel.less";
import "./SignSucPanel.less";
import {Button} from "@grace/ui";
import {_asyncThrottle} from "@/utils/utils.ts";
import { ModalCtrl } from "@/core/ctrls/ModalCtrl.tsx";
import { PageCtrl } from "@/core/ctrls/PageCtrl.tsx";
import HomePage from "@/pages/HomePage/HomePage.tsx";
import { SvgaPlayer } from "@grace/svgaplayer";
import bgEffectSvga from "@/assets/svga/2输出签到成功弹窗.svga";
export interface ISignSucPanelProps {
export interface ISucPanelProps {
score: number,
rank: number,
prizeName: string,
reachTargetScore: boolean,
drawChance: number,
}
@observer
class SucPanel extends React.Component<ISucPanelProps> {
class SignSucPanel extends React.Component<ISignSucPanelProps> {
componentDidMount() {
}
clickClose = () => {
ModalCtrl.closeModal();
PageCtrl.changePage(HomePage);
};
clickBtn = _asyncThrottle(async () => {
ModalCtrl.closeModal();
PageCtrl.changePage(HomePage);
});
render() {
const {score, rank} = this.props;
return <div className="SucPanel">
return <div className="SignSucPanel modal_center">
<SvgaPlayer className="bgEffect" src={bgEffectSvga}/>
<div className="bg"/>
<div className="rank">当前排名:NO.{rank}</div>
<div className="score">{score}<span></span></div>
<div className="tip">恭喜获得抽奖机会<span>+1</span></div>
<div className="title"/>
<div className="vip">
<div className="tip">获得</div>
<div className="left">300积分</div>
<div className="right">200积分</div>
<div className="img"/>
</div>
{/*<div className="normal">*/}
{/* <div className="tip">获得300积分</div>*/}
{/* <div className="img"/>*/}
{/*</div>*/}
<Button className="btn" onClick={this.clickBtn}/>
<Button className="close" onClick={this.clickClose}/>
</div>;
}
}
export default SucPanel;
export default SignSucPanel;
@import "../../res.less";
.SucPanel {
width: 750px;
height: 1624px;
position: absolute;
left: 0;
top: 0;
.bg {
position: absolute;
left: 153px;
top: 335px;
width: 444px;
height: 706px;
.webpBg("SucPanel/bg.png");
}
.rank {
font-size: 29px;
color: rgb(255, 255, 255);
position: absolute;
left: 0;
top: 424px;
width: 100%;
text-align: center;
text-shadow: 0 0 5px #16c8c2,
0 0 5px #16c8c2,
0 0 5px #16c8c2,
0 0 10px #16c8c2,
0 0 10px #16c8c2,
0 0 20px #16c8c2;
}
.score {
font-size: 96.09px;
color: rgb(255, 255, 255);
font-weight: bold;
text-align: center;
position: absolute;
left: 0;
top: 555px;
width: 100%;
text-shadow: 0 0 5px #f3d71a,
0 0 5px #f3d71a,
0 0 5px #f3d71a,
0 0 10px #f3d71a,
0 0 10px #f3d71a;
span {
font-size: 32.34px;
}
}
.tip {
color: rgb(255, 255, 255);
font-size: 32.34px;
text-align: center;
position: absolute;
left: 0;
top: 682px;
width: 100%;
span {
margin-left: 10px;
font-size: 32.34px;
text-shadow: 0 0 5px #f3d71a,
0 0 5px #f3d71a,
0 0 5px #f3d71a,
0 0 10px #f3d71a,
0 0 10px #f3d71a;
}
}
.btn {
position: absolute;
left: 233px;
top: 904px;
width: 284px;
height: 90px;
.webpBg("SucPanel/btn.png");
}
.close {
position: absolute;
left: 341px;
top: 1065px;
width: 70px;
height: 70px;
.webpBg("SucPanel/close.png");
}
}
import { makeAutoObservable, } from 'mobx';
import API from "@/api";
import store from "@/store/store.ts";
import { Toast } from "@grace/ui";
import { AESDecrypt, AESEncrypt } from "@/utils/Crypto.ts";
import { PageCtrl } from "@/core/ctrls/PageCtrl.tsx";
import HomePage from "@/pages/HomePage/HomePage.tsx";
import { GameConfig } from "@/pages/GamePage/config/Config.ts";
import FailPanel from "@/panels/FailPanel/FailPanel.tsx";
import SucPanel from "@/panels/SucPanel/SucPanel.tsx";
import { ModalCtrl } from "@/core/ctrls/ModalCtrl.tsx";
import GamePage from "@/pages/GamePage/GamePage.tsx";
import GuidePage from "@/pages/GuidePage/GuidePage.tsx";
class GameStore {
......@@ -24,38 +13,6 @@ class GameStore {
countdownSeconds?: number
} = {}
async start() {
if (store.indexData.remainTimes <= 0) {
Toast.show("今日游戏次数已用尽,明天再来吧~");
return false;
}
const { success, data } = await API.start();
store.updateIndex();
if (!success) {
return false;
}
try {
const decrypt = JSON.parse(AESDecrypt(data, "3C8C48E792E9241B", "cDOiBC1n2QrkAY2P"));
this.startInfo = decrypt;
if (decrypt.guide) {
PageCtrl.changePage(GuidePage);
} else {
PageCtrl.changePage(GamePage);
}
} catch (e) {
return false;
}
return success;
}
gameInfo: {
score: number,
remainTimes: number,
......@@ -70,15 +27,6 @@ class GameStore {
cd: GameConfig.gameCd,
}
reset() {
this.gameInfo = {
score: 0,
remainTimes: 0,
level: 0,
maxScore: 0,
cd: this.startInfo.countdownSeconds || GameConfig.gameCd,
}
}
addScore(s: number) {
const score = this.gameInfo.score + s;
......@@ -95,30 +43,6 @@ class GameStore {
}
}
async submit() {
const { recordId } = this.startInfo;
const { score } = this.gameInfo;
const param = AESEncrypt(JSON.stringify({
timestamp: Date.now(),
recordId,
score,
}), "3C8C48E792E9241B", "cDOiBC1n2QrkAY2P");
const { success, data } = await API.submit({ param });
if (!success) {
PageCtrl.changePage(HomePage);
return;
}
if (data.reachTargetScore) {
ModalCtrl.showModal(SucPanel, data);
} else {
ModalCtrl.showModal(FailPanel, data);
}
}
}
export default (new GameStore());
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment