Commit ee9360cc authored by haiyoucuv's avatar haiyoucuv

init

parent c4ded462
...@@ -27,18 +27,6 @@ const API = generateAPI({ ...@@ -27,18 +27,6 @@ const API = generateAPI({
records: "records.query", 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', drawIndex: 'draw/index.do',
doDraw: { doDraw: {
uri: 'draw/draw.do', 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> { ...@@ -9,8 +9,8 @@ export interface IMusicBtnProps extends HTMLAttributes<HTMLDivElement> {
disable?: string; disable?: string;
} }
import musicClose from "@/assets/homePage/musicoff.png"; import musicClose from "@/assets/common/music_close.png";
import musicOpen from "@/assets/homePage/musicon.png"; import musicOpen from "@/assets/common/music_open.png";
@observer @observer
class MusicBtn extends React.Component<IMusicBtnProps> { class MusicBtn extends React.Component<IMusicBtnProps> {
......
...@@ -53,7 +53,6 @@ class GamePage extends React.Component { ...@@ -53,7 +53,6 @@ class GamePage extends React.Component {
paused: boolean = true; paused: boolean = true;
async componentDidMount() { async componentDidMount() {
gameStore.reset();
await initBundle(); await initBundle();
...@@ -82,7 +81,6 @@ class GamePage extends React.Component { ...@@ -82,7 +81,6 @@ class GamePage extends React.Component {
clearInterval(this.interval); clearInterval(this.interval);
gameStore.gameInfo.cd = 0; gameStore.gameInfo.cd = 0;
this.gameOver = true; this.gameOver = true;
gameStore.submit();
} }
}, 1000); }, 1000);
} }
......
...@@ -9,9 +9,9 @@ import { Button } from "@grace/ui"; ...@@ -9,9 +9,9 @@ import { Button } from "@grace/ui";
import MyPrize from '../MyPrize/MyPrize'; import MyPrize from '../MyPrize/MyPrize';
import { PageCtrl } from '@/core/ctrls/PageCtrl'; import { PageCtrl } from '@/core/ctrls/PageCtrl';
import { ModalCtrl } from '@/core/ctrls/ModalCtrl'; import { ModalCtrl } from '@/core/ctrls/ModalCtrl';
import SucPanel from '@/panels/SucPanel/SucPanel'; import SignSucPanel from '@/panels/SignSucPanel/SignSucPanel.tsx';
import Assist_fail from '../../components/assist_fail/assist_fail'; import Assist_fail from '@/components/assist_fail/assist_fail';
import Assist_succeed from '../../components/assist_succeed/assist_succeed'; import Assist_succeed from '@/components/assist_succeed/assist_succeed';
@observer @observer
...@@ -26,7 +26,7 @@ class HomePage extends React.Component<any, any> { ...@@ -26,7 +26,7 @@ class HomePage extends React.Component<any, any> {
// store.doAssist() // store.doAssist()
// } // }
ModalCtrl.showModal(Assist_succeed); ModalCtrl.showModal(SignSucPanel);
} }
clickPrize = ()=>{ clickPrize = ()=>{
......
import React from "react"; import React from "react";
import { observer } from "mobx-react"; import { observer } from "mobx-react";
import { preload } from "@/core/preload.ts"; import { preload } from "@/core/preload.ts";
import "./LoadingDemo.less"; import styles from "./LoadingDemo.module.less";
import { PageCtrl } from "@/core/ctrls/PageCtrl.tsx"; import { PageCtrl } from "@/core/ctrls/PageCtrl.tsx";
import HomePage from "@/pages/HomePage/HomePage.tsx"; import HomePage from "@/pages/HomePage/HomePage.tsx";
import { waitTime } from "@/utils/utils.ts"; import { waitTime } from "@/utils/utils.ts";
...@@ -73,15 +73,15 @@ class LoadingDemo extends React.Component { ...@@ -73,15 +73,15 @@ class LoadingDemo extends React.Component {
const { curPercentage } = this.state; const { curPercentage } = this.state;
return <> return <>
<div className="loading"> <div className={styles.loading}>
<div className="bg"/> <div className={styles.bg}/>
<div className="progressBarBg"/> <div className={styles.progressBarBg}/>
<div className="progressBarFill" style={{ <div className={styles.progressBarFill} style={{
width: `${curPercentage / 100 * 4.7}rem` width: `${curPercentage / 100 * 4.7}rem`
}}/> }}/>
{/*<span className="progressTxt">金豆正在路上...... {curPercentage}%</span>*/} {/*<span className="progressTxt">金豆正在路上...... {curPercentage}%</span>*/}
</div> </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 React from "react";
import {observer} from "mobx-react"; import {observer} from "mobx-react";
import "./SucPanel.less"; import "./SignSucPanel.less";
import {Button} from "@grace/ui"; import {Button} from "@grace/ui";
import {_asyncThrottle} from "@/utils/utils.ts"; import {_asyncThrottle} from "@/utils/utils.ts";
import { ModalCtrl } from "@/core/ctrls/ModalCtrl.tsx"; import { ModalCtrl } from "@/core/ctrls/ModalCtrl.tsx";
import { PageCtrl } from "@/core/ctrls/PageCtrl.tsx"; import { PageCtrl } from "@/core/ctrls/PageCtrl.tsx";
import HomePage from "@/pages/HomePage/HomePage.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 @observer
class SucPanel extends React.Component<ISucPanelProps> { class SignSucPanel extends React.Component<ISignSucPanelProps> {
componentDidMount() { componentDidMount() {
} }
clickClose = () => { clickClose = () => {
ModalCtrl.closeModal(); ModalCtrl.closeModal();
PageCtrl.changePage(HomePage);
}; };
clickBtn = _asyncThrottle(async () => { clickBtn = _asyncThrottle(async () => {
ModalCtrl.closeModal(); ModalCtrl.closeModal();
PageCtrl.changePage(HomePage);
}); });
render() { render() {
const {score, rank} = this.props; return <div className="SignSucPanel modal_center">
<SvgaPlayer className="bgEffect" src={bgEffectSvga}/>
return <div className="SucPanel">
<div className="bg"/> <div className="bg"/>
<div className="rank">当前排名:NO.{rank}</div> <div className="title"/>
<div className="score">{score}<span></span></div>
<div className="tip">恭喜获得抽奖机会<span>+1</span></div> <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="btn" onClick={this.clickBtn}/>
<Button className="close" onClick={this.clickClose}/> <Button className="close" onClick={this.clickClose}/>
</div>; </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 { 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 { 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 { class GameStore {
...@@ -24,38 +13,6 @@ class GameStore { ...@@ -24,38 +13,6 @@ class GameStore {
countdownSeconds?: number 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: { gameInfo: {
score: number, score: number,
remainTimes: number, remainTimes: number,
...@@ -63,23 +20,14 @@ class GameStore { ...@@ -63,23 +20,14 @@ class GameStore {
maxScore: number, maxScore: number,
cd: number, cd: number,
} = { } = {
score: 0, score: 0,
remainTimes: 0, remainTimes: 0,
level: 0, level: 0,
maxScore: 0, maxScore: 0,
cd: GameConfig.gameCd, cd: GameConfig.gameCd,
}
reset() {
this.gameInfo = {
score: 0,
remainTimes: 0,
level: 0,
maxScore: 0,
cd: this.startInfo.countdownSeconds || GameConfig.gameCd,
}
} }
addScore(s: number) { addScore(s: number) {
const score = this.gameInfo.score + s; const score = this.gameInfo.score + s;
this.gameInfo.score = score; this.gameInfo.score = score;
...@@ -95,30 +43,6 @@ class GameStore { ...@@ -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()); 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