feat: group 1.0.0
This commit is contained in:
243
assets/seripts/scenes/LoveStorySceneControl.ts
Normal file
243
assets/seripts/scenes/LoveStorySceneControl.ts
Normal file
@@ -0,0 +1,243 @@
|
||||
import {
|
||||
_decorator,
|
||||
Color,
|
||||
Component,
|
||||
director,
|
||||
Label,
|
||||
Node,
|
||||
PageView,
|
||||
Sprite,
|
||||
} from "cc";
|
||||
import { GlobalData } from "../config/GlobalData";
|
||||
import Common from "../libs/Common";
|
||||
import AudioEffect from "../libs/AudioEffect";
|
||||
import { EventDispatcher } from "../libs/EventDispatcher";
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
@ccclass("LoveStorySceneControl")
|
||||
export class LoveStorySceneControl extends Component {
|
||||
// 总金币的标签
|
||||
@property(Label)
|
||||
totalScoreLabel: Label = null;
|
||||
|
||||
// 故事简介的标签
|
||||
@property(Label)
|
||||
storyDescLabel: Label = null;
|
||||
|
||||
// pageview 组件
|
||||
@property(PageView)
|
||||
pageviewComp: PageView = null;
|
||||
|
||||
// 按钮组节点
|
||||
@property(Node)
|
||||
buttonGroupNode: Node = null;
|
||||
|
||||
// 临时保存当前小恐龙的 id
|
||||
private selectDinoID: number = 0;
|
||||
|
||||
//恐龙列表
|
||||
dinoList: any[] = [
|
||||
{
|
||||
id: 1,
|
||||
name: "小恐龙1",
|
||||
desc: "爱你",
|
||||
isLocked: 0,
|
||||
unlockGold: 0,
|
||||
dinoColor: "#ffffff",
|
||||
bgColor: "#cce5cd",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: "小恐龙2",
|
||||
desc: "我的宝",
|
||||
isLocked: 1,
|
||||
unlockGold: 1000,
|
||||
dinoColor: "#FFE064",
|
||||
bgColor: "#f3ffc8",
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
name: "小恐龙3",
|
||||
desc: "哎萌萌",
|
||||
isLocked: 1,
|
||||
unlockGold: 2000,
|
||||
dinoColor: "#FD6445",
|
||||
bgColor: "#ffaf6d",
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
name: "小恐龙4",
|
||||
desc: "嘻嘻",
|
||||
isLocked: 1,
|
||||
unlockGold: 3000,
|
||||
dinoColor: "#9164FF",
|
||||
bgColor: "#a4a2ff",
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
name: "小恐龙5",
|
||||
desc: "cccc",
|
||||
isLocked: 1,
|
||||
unlockGold: 4000,
|
||||
dinoColor: "#FD64F2",
|
||||
bgColor: "#f19dff",
|
||||
},
|
||||
];
|
||||
|
||||
onLoad() {
|
||||
// 设置页面背景色
|
||||
this.setBackgroundColor();
|
||||
// 初始化小恐龙列表的解锁状态
|
||||
this.initDinoListLockStatus();
|
||||
}
|
||||
|
||||
start() {
|
||||
// 设置总的金币数标签
|
||||
this.setTotalScoreLabel();
|
||||
// 初始刷pageView
|
||||
this.initPageView();
|
||||
}
|
||||
|
||||
private setTotalScoreLabel() {
|
||||
this.totalScoreLabel.string = GlobalData.totalScore.toString();
|
||||
}
|
||||
// 初始化小恐龙列表的解锁状态
|
||||
private initDinoListLockStatus() {
|
||||
// 默认解锁小恐龙id为1的小恐龙
|
||||
Common.unlockDino(1);
|
||||
// 遍历小恐龙列表设置哪几个小恐龙解锁了
|
||||
this.dinoList.forEach((item) => {
|
||||
item.isLocked = Common.isDinoUnlocked(item.id) ? 0 : 1;
|
||||
});
|
||||
}
|
||||
|
||||
// 设置当前页面的背景色
|
||||
private setBackgroundColor() {
|
||||
// 获取当前小恐龙信息
|
||||
const dionInfo = GlobalData.currentDinoInfo;
|
||||
const bgColor = dionInfo.bgColor;
|
||||
Common.setPageBackgroundColor(
|
||||
this.node.getChildByName("bg"),
|
||||
new Color(bgColor),
|
||||
);
|
||||
}
|
||||
|
||||
// 三个按钮方法
|
||||
// 回到首页
|
||||
onBackToHome() {
|
||||
// 播放点击音效
|
||||
AudioEffect.playClickAudio();
|
||||
// 加载首页
|
||||
director.loadScene("home");
|
||||
}
|
||||
|
||||
// 购买小恐龙
|
||||
onBuyDino() {
|
||||
// 播放点击音效
|
||||
AudioEffect.playClickAudio();
|
||||
// 获取当前选择的小恐龙信息
|
||||
const dionInfo = this.dinoList.find(
|
||||
(item) => item.id === this.selectDinoID,
|
||||
);
|
||||
if (!dionInfo) {
|
||||
return;
|
||||
}
|
||||
// 当前金币数如果大于所需要的金币数
|
||||
if (GlobalData.totalScore >= dionInfo.unlockGold) {
|
||||
// 扣除所需要的金币数
|
||||
GlobalData.totalScore -= dionInfo.unlockGold;
|
||||
// 更新总的金币数标签
|
||||
this.setTotalScoreLabel();
|
||||
// 解锁当前小恐龙
|
||||
Common.unlockDino(dionInfo.id);
|
||||
// 获取当前选中小恐龙索引
|
||||
const currentIndex = this.selectDinoID - 1;
|
||||
// 设置当前选中的小恐龙信息为解锁状态
|
||||
this.dinoList[currentIndex].isLocked = 0;
|
||||
// 刷新按钮显示
|
||||
this.refreshButtonDisplay(currentIndex);
|
||||
} else {
|
||||
// 发送提示消息
|
||||
EventDispatcher.getTarget().emit(EventDispatcher.TIP_MSG, "金币不足");
|
||||
}
|
||||
}
|
||||
|
||||
// 确认购买
|
||||
onConfirmBuyDino() {
|
||||
// 播放点击音效
|
||||
AudioEffect.playClickAudio();
|
||||
// 设置当前选择小恐龙的 id
|
||||
if (this.selectDinoID > 0) {
|
||||
GlobalData.selectedDinoID = this.selectDinoID;
|
||||
// 设置小恐龙信息
|
||||
GlobalData.currentDinoInfo = this.dinoList[this.selectDinoID - 1];
|
||||
}
|
||||
// 回到首页
|
||||
this.scheduleOnce(() => {
|
||||
director.loadScene("home");
|
||||
}, 0.4);
|
||||
}
|
||||
|
||||
// 轮播滑动事件
|
||||
onSlideEvent(event: any) {
|
||||
// 获取当前的索引
|
||||
const currentIndex = parseInt(event.curPageIdx);
|
||||
// 获取选中小恐龙信息
|
||||
const dionInfo = this.dinoList[currentIndex];
|
||||
// 更新当前临时选择的小恐龙 id
|
||||
this.selectDinoID = dionInfo.id || 1;
|
||||
// 设置故事简介
|
||||
this.storyDescLabel.string = dionInfo.desc;
|
||||
|
||||
// 设置页面的背景颜色
|
||||
Common.setPageBackgroundColor(
|
||||
this.node.getChildByName("bg"),
|
||||
new Color(dionInfo.bgColor),
|
||||
);
|
||||
|
||||
// 刷新按钮显示
|
||||
this.refreshButtonDisplay(currentIndex);
|
||||
}
|
||||
|
||||
// 刷新按钮显示
|
||||
private refreshButtonDisplay(currentIndex: number) {
|
||||
// 保存当前临时保存的小恐龙 id
|
||||
this.selectDinoID = this.dinoList[currentIndex].id || 1;
|
||||
// 获取当前选中的小恐龙信息
|
||||
const dionInfo = this.dinoList[currentIndex];
|
||||
// 如果当前小恐龙未解锁
|
||||
if (dionInfo.isLocked) {
|
||||
this.buttonGroupNode.getChildByName("button_buy").active = true;
|
||||
this.buttonGroupNode.getChildByName("button_cancel").active = true;
|
||||
this.buttonGroupNode.getChildByName("button_ok").active = false;
|
||||
// 设置购买的金额
|
||||
this.buttonGroupNode
|
||||
.getChildByName("button_buy")
|
||||
.getChildByName("gold_num")
|
||||
.getComponent(Label).string = dionInfo.unlockGold.toString() ?? "0";
|
||||
} else {
|
||||
this.buttonGroupNode.getChildByName("button_buy").active = false;
|
||||
this.buttonGroupNode.getChildByName("button_cancel").active = false;
|
||||
this.buttonGroupNode.getChildByName("button_ok").active = true;
|
||||
}
|
||||
}
|
||||
|
||||
// 初始化 pageview 组件
|
||||
private initPageView() {
|
||||
// 设置默认显示第几个小恐龙 index
|
||||
const index = this.dinoList.findIndex(
|
||||
(item) => item.id === GlobalData.selectedDinoID,
|
||||
);
|
||||
if (index !== -1) {
|
||||
this.pageviewComp.setCurrentPageIndex(index);
|
||||
// 获取小恐龙信息
|
||||
const dionInfo = this.dinoList[index];
|
||||
// 设置故事简介
|
||||
this.storyDescLabel.string = dionInfo.desc;
|
||||
// 刷新按钮显示
|
||||
this.refreshButtonDisplay(index);
|
||||
}
|
||||
}
|
||||
|
||||
update(deltaTime: number) {}
|
||||
}
|
||||
Reference in New Issue
Block a user