第十阶段 stage 1(三):钱包物品化、连接钱包、空投逐个授权、矿机收款地址

This commit is contained in:
ZHU MINCHAO committed 2026-11-05 01:37:23 +08:00
1 parent f732304f38
commit 59dd3c05bc
20 files changed
+462 -55

No files matched your search

+27 -1
View File
@@ -70,10 +70,36 @@ namespace Decentralized
});
}
/// <summary>挖矿产出按各台机器的算力占比,发到每台机器设置的收款地址;没设置或地址对应的钱包已销毁,这一份丢失。</summary>
private static void PayMined(SaveData d, IEnumerable<(GameItem item, double hash)> cards, double mined, double totalHash)
{
var byMachine = new Dictionary<GameItem, double>();
foreach (var (item, hash) in cards)
{
var machine = Session.TonightMachine.TryGetValue(item, out var mm) ? mm : item;
byMachine[machine] = (byMachine.TryGetValue(machine, out var h) ? h : 0) + hash;
}
double lost = 0;
foreach (var kv in byMachine)
{
double share = mined * kv.Value / totalHash;
string addr = Payout.Get(kv.Key);
var w = string.IsNullOrEmpty(addr) ? null : d.Own(addr);
if (w == null) { lost += share; continue; }
w.Add(Assets.PSC, share);
}
if (lost > 1e-9)
{
Log.Info($"挖矿产出丢失 {lost:0.####} PSC(矿机没设置收款地址,或地址对应的钱包已销毁)");
PlayerStore.Instance.AddNightLog(L.T("nightlog.mined.lost", Fmt.Num(lost)));
}
}
private static void OnSleepEarly()
{
Session.TonightCards.Clear();
Session.TonightDrawn.Clear();
Session.TonightMachine.Clear();
Session.TonightRigs = Session.TonightPoweredRigs = 0;
Session.TonightKj = 0;
}
@@ -173,7 +199,7 @@ namespace Decentralized
var units = Session.TonightCards.Select(c => (item: c.Key, unit: Items.ToUnit(c.Key), bonus: c.Value)).ToList();
double hash = units.Sum(x => x.unit.Hash(x.bonus));
double mined = d.Network.Mine(hash);
if (mined > 0) d.Hot.Add(Assets.PSC, mined);
if (mined > 0 && hash > 0) PayMined(d, units.Select(x => (x.item, x.unit.Hash(x.bonus))), mined, hash);
var report = new NightReport
{