This commit is contained in:
2025-10-11 16:19:57 +08:00
parent 45ec2bbb7d
commit fdea1383d0
27 changed files with 1662 additions and 977 deletions
+11 -13
View File
@@ -22,6 +22,8 @@ import { DataManager, DataId } from "../data/DataManager";
import { GirlData } from "../data/GirlData";
import { EnvData } from "../data/EnvData";
import { logger } from "db://assets/Scripts/Main/Common/Logger";
import { GButton } from "../../Main/Common/GButton";
import { GirlListPanel } from "../ui/panels/GirlListPanel";
const { ccclass, property } = _decorator;
@@ -36,6 +38,8 @@ export class GirlListItem extends Component {
@property(Node)
chatIcon: Node;
@property(Node)
detailBtn: Node;
@property(Node)
starParent: Node;
@@ -68,6 +72,8 @@ export class GirlListItem extends Component {
this,
this.onLanguageChangeCallback
);
GButton.BandClick(this.chatIcon, this.onClickChat, this);
GButton.BandClick(this.detailBtn, this.onClickDetail, this);
}
protected onDestroy(): void {
@@ -78,8 +84,8 @@ export class GirlListItem extends Component {
);
}
baseNode: Node;
refreshData(category: number, girlId: number, baseNode: Node) {
baseNode: GirlListPanel;
refreshData(category: number, girlId: number, baseNode: GirlListPanel) {
if (!this.stars) {
this.stars = this.starParent.getComponentsInChildren(Sprite);
}
@@ -92,17 +98,8 @@ export class GirlListItem extends Component {
this.nameKey = girlData.getGrilName(this.category.toString(), this.id);
this.girlName.string = LanguageUtils.getText(this.nameKey);
this.tagKey = girlData.getGrilTagKey(this.category.toString(), this.id);
// let desc = "";
// const tags = LanguageUtils.getText(this.tagKey).split("|");
// for (let i = 0; i < tags.length; i++) {
// if (i != 0) desc += "|";
// desc += tags[i];
// }
this.tags.string = LanguageUtils.getText(this.tagKey);
let priceType = girlData.getGrilPriceType(
this.category.toString(),
this.id
);
this.starParent.active = true;
this.chatIcon.active = true;
@@ -115,7 +112,7 @@ export class GirlListItem extends Component {
//listAvatarPath = listAvatarPath.replace("Avatar", "avatar"); //临时
ResManager.I.changeRemoteSpriteFrame(this.avatar, newPath, () => {
let sizeTran = this.avatar.node.parent.getComponent(UITransform);
Utils.adjustBgPixelRatioToSize(sizeTran.contentSize, this.avatar.node, 2);
Utils.adjustBgPixelRatioToSize(sizeTran.contentSize, this.avatar.node, 1);
this.loading.active = false;
});
@@ -197,6 +194,7 @@ export class GirlListItem extends Component {
} else {
logger.warn("[GirlListItem] 无法获取当前激活的主页面");
}
this.baseNode.close();
}
onClickChat() {
@@ -4,6 +4,7 @@ import Utils from "db://assets/Scripts/Main/Common/Utils";
import {
NavigationManager,
PageTransitionType,
PanelType,
} from "../manager/NavigationManager";
import LanguageUtils from "../../Main/Common/LanguageUtils";
import { InnerMsgCode } from "../../Main/Config/InnerMsgCode";
@@ -11,6 +12,8 @@ import { DataManager, DataId } from "../data/DataManager";
import { GirlData } from "../data/GirlData";
import { EnvData } from "../data/EnvData";
import { ThemeData } from "../data/ThemeData";
import { GButton } from "../../Main/Common/GButton";
import { logger } from "../../Main/Common/Logger";
const { ccclass, property } = _decorator;
@@ -28,6 +31,11 @@ export class PastGirlListItem extends Component {
@property(Node)
starParent: Node;
@property(Node)
chatBtn: Node;
@property(Node)
detailBtn: Node;
stars: Sprite[];
id: number = -1;
@@ -55,6 +63,9 @@ export class PastGirlListItem extends Component {
this,
this.onLanguageChangeCallback
);
GButton.BandClick(this.chatBtn, this.onClickChat, this);
GButton.BandClick(this.detailBtn, this.onClickDetail, this);
}
protected onDestroy(): void {
@@ -120,7 +131,7 @@ export class PastGirlListItem extends Component {
let newPath = envData.cdn + "/" + "Girls/" + avatarPath + ".png";
ResManager.I.changeRemoteSpriteFrame(this.avatar, newPath, () => {
let sizeTran = this.avatar.node.parent.getComponent(UITransform);
Utils.adjustBgPixelRatioToSize(sizeTran.contentSize, this.avatar.node, 2);
Utils.adjustBgPixelRatioToSize(sizeTran.contentSize, this.avatar.node, 1);
});
// 显示星级(好感度)
@@ -194,20 +205,48 @@ export class PastGirlListItem extends Component {
}
}
onClickGirl() {
// 由于都是已解锁的女孩,直接打开聊天面板作为子面板
// 先设置选中的角色ID
NavigationManager.Instance.setSelectedGirlId(this.id);
onClickDetail() {
const girlData = DataManager.I.getDataById<GirlData>(DataId.Girl);
// 是否已经解锁
// 通过openSubPanel打开ChatPanel作为子面板
const chatData = { base: this.baseNode };
NavigationManager.Instance.openSubPanel(
"ChatPanel",
this.baseNode,
chatData,
{
openAnimation: PageTransitionType.SLIDE_LEFT,
closeAnimation: PageTransitionType.SLIDE_RIGHT,
NavigationManager.Instance.setSelectedGirlId(this.id);
NavigationManager.Instance.setSelectedCategoryId(this.category);
// 以subpanel方式打开GirlDetailPanel
const currentPanel = NavigationManager.Instance.getCurrentActivePanelNode();
if (currentPanel) {
NavigationManager.Instance.openSubPanel(
"GirlDetailPanel",
currentPanel,
this.id,
{
openAnimation: PageTransitionType.SLIDE_LEFT,
closeAnimation: PageTransitionType.SLIDE_RIGHT,
hideBasePanel: true, // 隐藏底层panel,实现全屏显示
}
);
} else {
logger.warn("[GirlListItem] 无法获取当前激活的主页面");
}
}
onClickChat() {
const girlData = DataManager.I.getDataById<GirlData>(DataId.Girl);
NavigationManager.Instance.setSelectedGirlId(this.id);
NavigationManager.Instance.setSelectedCategoryId(
girlData.getGrilCategoryById(this.id)
);
NavigationManager.Instance.switchToPanel(
PanelType.PAST_GIRL_LIST,
false,
(base) => {
const chatData = { girlId: this.id, base: base };
NavigationManager.Instance.openSubPanel("ChatPanel", base, chatData, {
openAnimation: PageTransitionType.SLIDE_LEFT,
closeAnimation: PageTransitionType.SLIDE_RIGHT,
});
}
);
}
+19 -15
View File
@@ -51,19 +51,31 @@ export class RecomandItem extends Component {
this.id = girlId;
const girlData = DataManager.I.getDataById<GirlData>(DataId.Girl);
const category = girlData.getGrilCategoryById(girlId);
const rectNameKey = girlData.getRecommendGrilName();
this.girlName.string = LanguageUtils.getText(rectNameKey);
const tagkey = girlData.getGrilTagKey(category.toString(), girlId);
this.tag.string = LanguageUtils.getText(tagkey);
// 数据
let nameKey = girlData.getGrilName(category.toString(), this.id);
this.girlName.string = LanguageUtils.getText(nameKey);
let tagKey = girlData.getGrilTagKey(category.toString(), this.id);
let avatarPath = girlData.getRecommendGrilAvatar();
this.tag.string = LanguageUtils.getText(tagKey);
const starCount = girlData.getStar(category.toString(), girlId);
this.heartParent.active = true;
let avatarPath = girlData.getGrilAvatar(category.toString(), this.id);
const envData = DataManager.I.getDataById<EnvData>(DataId.Env);
let newPath = envData.cdn + "/" + "Girls/" + avatarPath + ".png";
//listAvatarPath = listAvatarPath.replace("Avatar", "avatar"); //临时
ResManager.I.changeRemoteSpriteFrame(this.recPic, newPath, () => {
let sizeTran = this.recPic.node.parent.getComponent(UITransform);
Utils.adjustBgPixelRatioToSize(sizeTran.contentSize, this.recPic.node, 1);
});
const star = girlData.getStar(category.toString(), this.id);
logger.log("好感度:" + star);
for (let i = 0; i < this.hearts.length; i++) {
const element = this.hearts[i];
if (starCount > i) {
if (star > i) {
ResManager.I.changeResourceSpriteFrame(
element,
"ui/common/heart/heart"
@@ -75,14 +87,6 @@ export class RecomandItem extends Component {
);
}
}
// 加载远程资源
const envData = DataManager.I.getDataById<EnvData>(DataId.Env);
let newPath = envData.cdn + "/" + "Girls/" + avatarPath + ".png";
ResManager.I.changeRemoteSpriteFrame(this.recPic, newPath, () => {
let sizeTran = this.recPic.node.parent.getComponent(UITransform);
Utils.adjustBgPixelRatioToSize(sizeTran.contentSize, this.recPic.node, 1);
});
}
chatToHer() {
const girlData = DataManager.I.getDataById<GirlData>(DataId.Girl);