diff --git a/Assets/Art/XJMH/pw/pw_atals/goldcolumn/yxjm_jbz.png.meta b/Assets/Art/XJMH/pw/pw_atals/goldcolumn/yxjm_jbz.png.meta
index 76c097136..597880e73 100644
--- a/Assets/Art/XJMH/pw/pw_atals/goldcolumn/yxjm_jbz.png.meta
+++ b/Assets/Art/XJMH/pw/pw_atals/goldcolumn/yxjm_jbz.png.meta
@@ -7,7 +7,7 @@ TextureImporter:
mipmaps:
mipMapMode: 0
enableMipMap: 0
- sRGBTexture: 0
+ sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
diff --git a/Assets/Art/XJMH/pw/pw_atals/goldcolumn/yxjm_jbz_1.png.meta b/Assets/Art/XJMH/pw/pw_atals/goldcolumn/yxjm_jbz_1.png.meta
index 81eab7f06..6cb5bd2a6 100644
--- a/Assets/Art/XJMH/pw/pw_atals/goldcolumn/yxjm_jbz_1.png.meta
+++ b/Assets/Art/XJMH/pw/pw_atals/goldcolumn/yxjm_jbz_1.png.meta
@@ -7,7 +7,7 @@ TextureImporter:
mipmaps:
mipMapMode: 0
enableMipMap: 0
- sRGBTexture: 0
+ sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
diff --git a/Assets/Art/XJMH/pw/pw_atals/goldcolumn/yxjm_jbz_2.png.meta b/Assets/Art/XJMH/pw/pw_atals/goldcolumn/yxjm_jbz_2.png.meta
index fd506c67e..b277da669 100644
--- a/Assets/Art/XJMH/pw/pw_atals/goldcolumn/yxjm_jbz_2.png.meta
+++ b/Assets/Art/XJMH/pw/pw_atals/goldcolumn/yxjm_jbz_2.png.meta
@@ -7,7 +7,7 @@ TextureImporter:
mipmaps:
mipMapMode: 0
enableMipMap: 0
- sRGBTexture: 0
+ sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
diff --git a/Assets/Art/XJMH/pw/pw_atals/goldcolumn/yxjm_ybz.png.meta b/Assets/Art/XJMH/pw/pw_atals/goldcolumn/yxjm_ybz.png.meta
index aac2d74c3..81ca0fabf 100644
--- a/Assets/Art/XJMH/pw/pw_atals/goldcolumn/yxjm_ybz.png.meta
+++ b/Assets/Art/XJMH/pw/pw_atals/goldcolumn/yxjm_ybz.png.meta
@@ -7,7 +7,7 @@ TextureImporter:
mipmaps:
mipMapMode: 0
enableMipMap: 0
- sRGBTexture: 0
+ sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
diff --git a/Assets/MyGame/Scripts/Net/APIRequestList_Supplement.cs b/Assets/MyGame/Scripts/Net/APIRequestList_Supplement.cs
index 99bca2816..c05e37081 100644
--- a/Assets/MyGame/Scripts/Net/APIRequestList_Supplement.cs
+++ b/Assets/MyGame/Scripts/Net/APIRequestList_Supplement.cs
@@ -61,10 +61,10 @@ namespace Assets.MyGame.Scripts.Net
// ---------------- Lottery ----------------
- /// 抽奖配置(GET /api/Lottery/Config)
- public static void GetLotteryConfig(Action callback)
+ /// 抽奖配置(GET /api/Lottery/Config,响应为 LotteryConfigResponse:config + drawnPrizeIds)
+ public static void GetLotteryConfig(Action callback)
{
- APIManager.Response(APIType.Lottery_Config, callback);
+ APIManager.Response(APIType.Lottery_Config, callback);
}
/// 抽奖(GET /api/Lottery/Draw)
diff --git a/Assets/MyGame/Scripts/Net/APIResponses/GameConfig.cs b/Assets/MyGame/Scripts/Net/APIResponses/GameConfig.cs
index fdfbeb041..05f116d38 100644
--- a/Assets/MyGame/Scripts/Net/APIResponses/GameConfig.cs
+++ b/Assets/MyGame/Scripts/Net/APIResponses/GameConfig.cs
@@ -90,5 +90,30 @@ namespace Assets.MyGame.Scripts.Net.API
/// 机器人AI配置(后端下发,useRemoteBotConfig 开关开启时使用)
///
public BotConfig botConfig;
+
+ ///
+ /// 鱼雷配置(本轮新增)
+ ///
+ public List torpedoConfigs;
+
+ ///
+ /// 刮刮卡配置
+ ///
+ public List scratchCardConfig;
+
+ ///
+ /// Boss 配置(后端聚合配置,前端暂无消费;与 killConfig 一致用 object 兜底)
+ ///
+ public object bossConfigs;
+
+ ///
+ /// Boss 掉落配置
+ ///
+ public BossDropConfig bossDropConfig;
+
+ ///
+ /// 机器人击杀播报配置
+ ///
+ public RobotKillConfig robotKillConfig;
}
}
\ No newline at end of file
diff --git a/Assets/MyGame/Scripts/Net/APIResponses/GameConfig_SubClass/GameConfigExtra.cs b/Assets/MyGame/Scripts/Net/APIResponses/GameConfig_SubClass/GameConfigExtra.cs
new file mode 100644
index 000000000..f71be7fee
--- /dev/null
+++ b/Assets/MyGame/Scripts/Net/APIResponses/GameConfig_SubClass/GameConfigExtra.cs
@@ -0,0 +1,94 @@
+using Assets.MyGame.Scripts.Net.API.UserData_SubClass;
+using System;
+using System.Collections.Generic;
+
+namespace Assets.MyGame.Scripts.Net.API.GameConfig_SubClass
+{
+ ///
+ /// 刮刮卡配置(GameConfig.scratchCardConfig)
+ ///
+ [Serializable]
+ public class ScratchCardConfig
+ {
+ /// 奖励类型:1=金币,2=钻石,3=道具
+ public int type;
+ /// 道具详情
+ public BaseProduct baseProduct;
+ /// 奖励数量
+ public int count;
+ /// 权重
+ public int weight;
+ }
+
+ ///
+ /// Boss 掉落配置(GameConfig.bossDropConfig)
+ ///
+ [Serializable]
+ public class BossDropConfig
+ {
+ /// 不掉落权重(概率 = noDropWeight / 总权重和)
+ public int noDropWeight;
+ /// 掉落道具列表
+ public List dropItems;
+ }
+
+ ///
+ /// Boss 掉落道具配置
+ ///
+ [Serializable]
+ public class BossDropItemConfig
+ {
+ /// 道具编号
+ public string propNumber;
+ /// 道具名称
+ public string propName;
+ /// 掉落数量
+ public int count;
+ /// 掉落权重(概率 = weight / 10000)
+ public int weight;
+ }
+
+ ///
+ /// 机器人击杀播报配置(GameConfig.robotKillConfig)
+ ///
+ [Serializable]
+ public class RobotKillConfig
+ {
+ /// 总开关
+ public bool isEnabled;
+ /// 播报间隔(秒),默认 5
+ public int intervalSeconds;
+ /// 播报场景配置
+ public List scenes;
+ }
+
+ ///
+ /// 机器人击杀播报场景配置
+ ///
+ [Serializable]
+ public class RobotKillScene
+ {
+ /// 场次名称(如:风雷之渊)
+ public string gameName;
+ /// 等级名称(如:初级场)
+ public string levelName;
+ /// 游戏类型
+ public int gameType;
+ /// 房间等级
+ public int roomLevel;
+ /// 出现权重
+ public int weight;
+ /// 鱼种名称
+ public string fishName;
+ /// 鱼种编号
+ public string fishNumber;
+ /// 倍数最小值
+ public int multiplierMin;
+ /// 倍数最大值
+ public int multiplierMax;
+ /// 爆奖金额最小值
+ public long jackpotMin;
+ /// 爆奖金额最大值
+ public long jackpotMax;
+ }
+}
diff --git a/Assets/MyGame/Scripts/Net/APIResponses/GameConfig_SubClass/GameConfigExtra.cs.meta b/Assets/MyGame/Scripts/Net/APIResponses/GameConfig_SubClass/GameConfigExtra.cs.meta
new file mode 100644
index 000000000..67da6f71c
--- /dev/null
+++ b/Assets/MyGame/Scripts/Net/APIResponses/GameConfig_SubClass/GameConfigExtra.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: cea80cf2d728fed4ca31613ada9f1163
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/MyGame/Scripts/Net/APIResponses/GameConfig_SubClass/LotteryActivityConfig.cs b/Assets/MyGame/Scripts/Net/APIResponses/GameConfig_SubClass/LotteryActivityConfig.cs
index e7f640a66..f61474ee1 100644
--- a/Assets/MyGame/Scripts/Net/APIResponses/GameConfig_SubClass/LotteryActivityConfig.cs
+++ b/Assets/MyGame/Scripts/Net/APIResponses/GameConfig_SubClass/LotteryActivityConfig.cs
@@ -11,7 +11,8 @@ namespace Assets.MyGame.Scripts.Net.API.GameConfig_SubClass
public long startTime;
public long endTime;
public List pools;
- public List costs;
+ /// 分奖池价格阶梯。Key:"1"=炮台,"2"=战神,"3"=翅膀;每个奖池独立计费,不再使用公共价格
+ public Dictionary> costsByPool;
public int userMaxDraw;
}
diff --git a/Assets/MyGame/Scripts/Net/APIResponses/GameConfig_SubClass/TorpedoConfig.cs b/Assets/MyGame/Scripts/Net/APIResponses/GameConfig_SubClass/TorpedoConfig.cs
new file mode 100644
index 000000000..26a301840
--- /dev/null
+++ b/Assets/MyGame/Scripts/Net/APIResponses/GameConfig_SubClass/TorpedoConfig.cs
@@ -0,0 +1,35 @@
+using System;
+using System.Collections.Generic;
+
+namespace Assets.MyGame.Scripts.Net.API.GameConfig_SubClass
+{
+ ///
+ /// 鱼雷道具配置(GameConfig.torpedoConfigs,本轮新增)
+ ///
+ [Serializable]
+ public class TorpedoItemConfig
+ {
+ /// 鱼雷编号
+ public string number;
+ /// 鱼雷名称
+ public string name;
+ /// 鱼雷颜色
+ public string color;
+ /// 奖励范围列表(按权重随机取金币区间)
+ public List rewardRanges;
+ }
+
+ ///
+ /// 鱼雷奖励范围配置
+ ///
+ [Serializable]
+ public class TorpedoRewardConfig
+ {
+ /// 最小金币
+ public int minGold;
+ /// 最大金币
+ public int maxGold;
+ /// 权重
+ public int weight;
+ }
+}
diff --git a/Assets/MyGame/Scripts/Net/APIResponses/GameConfig_SubClass/TorpedoConfig.cs.meta b/Assets/MyGame/Scripts/Net/APIResponses/GameConfig_SubClass/TorpedoConfig.cs.meta
new file mode 100644
index 000000000..6d1d2323a
--- /dev/null
+++ b/Assets/MyGame/Scripts/Net/APIResponses/GameConfig_SubClass/TorpedoConfig.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 256fe00634345604995f7e0a61127998
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/MyGame/Scripts/Net/APIResponses/SupplementResponses.cs b/Assets/MyGame/Scripts/Net/APIResponses/SupplementResponses.cs
index a2a674c30..822506a5a 100644
--- a/Assets/MyGame/Scripts/Net/APIResponses/SupplementResponses.cs
+++ b/Assets/MyGame/Scripts/Net/APIResponses/SupplementResponses.cs
@@ -84,6 +84,25 @@ namespace Assets.MyGame.Scripts.Net.APIResponses
public int totalDrawCount;
/// 用户活动是否结束(已抽完所有奖项)
public bool isFinished;
+ /// 当前抽奖活动周期标识。活动时间变化时自动开始新一期
+ public string activityCycleKey;
+ /// 活动开始时间(Unix 秒)
+ public int activityStartTime;
+ /// 活动结束时间(Unix 秒)
+ public int activityEndTime;
+ /// 各奖池独立抽奖次数。Key:"1"=炮台,"2"=战神,"3"=翅膀。旧数据没有该字段时自动从空字典开始
+ public Dictionary drawCountByPool;
+ }
+
+ // ---------------- /api/Lottery/Config ----------------
+ /// 抽奖配置响应(config + 用户已抽中奖项ID)
+ [Serializable]
+ public class LotteryConfigResponse
+ {
+ /// 抽奖活动配置
+ public LotteryActivityConfig config;
+ /// 用户已抽中的奖项ID列表
+ public List drawnPrizeIds;
}
// ---------------- /api/SummonCard/use ----------------
diff --git a/Assets/MyGame/Scripts/Turret/TurretData.cs b/Assets/MyGame/Scripts/Turret/TurretData.cs
index 126454355..aaac63b90 100644
--- a/Assets/MyGame/Scripts/Turret/TurretData.cs
+++ b/Assets/MyGame/Scripts/Turret/TurretData.cs
@@ -1,6 +1,7 @@
using Spine.Unity;
using System.Collections.Generic;
using UnityEngine;
+using UnityEngine.UI;
public enum TurretAnimType
{
@@ -158,6 +159,37 @@ public class TurretData : MonoBehaviour
private void OnEnable()
{
PlayState(TurretState.Idle);
+ BindAddDownButtons(); // ⭐ XJMH 加减炮倍:炮台上的 +/- 绑定点击(每次激活重绑,幂等)
+ }
+
+ // ==================== XJMH 加减炮倍按钮绑定 ====================
+ // 炮台上的 obj_Add / obj_Down(物体名 Up / Down)在预制体里没有 Button 组件、也没有任何代码绑定
+ // → 点击无反应。这里在炮台激活时统一补 Button + 绑定:
+ // + → 座位 ChangeTurretAddConsumeNum(发 ChangeGunMultiple,等服务端确认后应用新炮倍)
+ // - → 座位 ChangeTurretMinusConsumeNum
+ // 未拖引用跳过(可要可不要);非本地座位由 SitPosData.HideTurretAddMinusUI 隐藏。
+ private SitPosData ResolveSit()
+ {
+ return setPosData != null ? setPosData : GetComponentInParent();
+ }
+
+ private void OnClickTurretAdd() { ResolveSit()?.ChangeTurretAddConsumeNum(); }
+ private void OnClickTurretMinus() { ResolveSit()?.ChangeTurretMinusConsumeNum(); }
+
+ private void BindAddDownButtons()
+ {
+ BindAddDownButton(obj_Add, OnClickTurretAdd);
+ BindAddDownButton(obj_Down, OnClickTurretMinus);
+ }
+
+ private static void BindAddDownButton(GameObject go, UnityEngine.Events.UnityAction action)
+ {
+ if (go == null) return; // 未拖引用:跳过,不报错
+ var btn = go.GetComponent