4a2b270714
- 服务端:游戏表追加可空 cover_object_key / screenshots_json,版本表追加可空 metadata_json,创建版本时校验必需封面、最多 6 张截图与图片素材归属,并从素材记录派生对象键生成冻结资料。 - 服务端:审核通过时把冻结资料整体生效到游戏行;只有已公开且存在有效活动版本的游戏,其封面/截图素材才在 /api/assets/read-url 获得匿名读授权。 - 服务端:作者与管理员回读版本时追加 frozenMetadata,带回封面与截图素材 ID 供续发复用,公开投影仍只暴露对象键。 - 网页:/games/publish 新增「封面与截图」区,复用平台图片直传与 confirm 通道,缺封面或截图超量在发请求前拦截,更新版本时按冻结资料回填且不要求重新上传。 - 网页:游戏广场卡片与详情页 hero 换签展示真实封面,详情页新增可点击的截图缩略图条,无素材或换签失败时静默回退原有渐变占位。 - AGC:发布面板支持封面必选与截图最多 6 张,新增素材直传服务并在创建游戏前拦截缺封面,同一文件重复提交复用素材 ID。 - AGC:http 能力作用域新增阿里云 OSS 直传地址,客户端同时校验直传目标必须是平台素材存储。 - 契约与文档:同步 shared-contracts、packages/shared 契约,更新 SpacetimeDB 迁移注释、后端架构、玩法链路与实施计划文档,并补齐网页端与 AGC 定向测试。
76 lines
1.5 KiB
CSS
76 lines
1.5 KiB
CSS
/*
|
|
* 游戏分发封面与截图的展示层补充样式。
|
|
*
|
|
* 真实封面/截图换签成功后覆盖原有渐变占位;未上传、换签失败或仍在解析时保持
|
|
* gameDistribution.css 里的占位视觉,因此这里的规则只负责“图片已就绪”这一态。
|
|
*/
|
|
.game-cover__image {
|
|
position: absolute;
|
|
inset: 0;
|
|
display: block;
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.game-detail-showcase {
|
|
display: grid;
|
|
gap: 0.7rem;
|
|
min-width: 0;
|
|
}
|
|
|
|
.game-detail-thumbs {
|
|
display: flex;
|
|
gap: 0.5rem;
|
|
overflow-x: auto;
|
|
padding-bottom: 0.15rem;
|
|
scroll-snap-type: x proximity;
|
|
scrollbar-width: thin;
|
|
}
|
|
|
|
.game-detail-thumb {
|
|
flex: 0 0 auto;
|
|
width: 5.4rem;
|
|
aspect-ratio: 16 / 9;
|
|
overflow: hidden;
|
|
border: 1px solid var(--platform-surface-border);
|
|
border-radius: 0.7rem;
|
|
padding: 0;
|
|
background: linear-gradient(
|
|
135deg,
|
|
rgba(241, 159, 95, 0.24),
|
|
rgba(91, 49, 42, 0.16)
|
|
);
|
|
cursor: pointer;
|
|
scroll-snap-align: start;
|
|
transition: 160ms ease;
|
|
}
|
|
|
|
.game-detail-thumb:hover {
|
|
border-color: rgba(199, 101, 61, 0.45);
|
|
}
|
|
|
|
.game-detail-thumb[aria-pressed='true'] {
|
|
border-color: rgba(199, 101, 61, 0.62);
|
|
box-shadow: 0 0 0 2px rgba(199, 101, 61, 0.22);
|
|
}
|
|
|
|
.game-detail-thumb img {
|
|
display: block;
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.game-detail-thumb__placeholder {
|
|
display: block;
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
|
|
@media (max-width: 560px) {
|
|
.game-detail-thumb {
|
|
width: 4.6rem;
|
|
}
|
|
}
|