mirror of
https://github.com/MikuLeaks/MikuSB.git
synced 2026-06-04 08:04:01 +00:00
add interactable scene but cant switch yet
This commit is contained in:
@@ -13,7 +13,7 @@ public class InventoryManager(PlayerInstance player) : BasePlayerManager(player)
|
||||
public async ValueTask<GameWeaponInfo?> AddWeaponItem(ItemTypeEnum genre, uint detail, uint particular, uint level = 1)
|
||||
{
|
||||
if (genre != ItemTypeEnum.TYPE_WEAPON) return null;
|
||||
var weaponData = GameData.WeaponData.Values.FirstOrDefault(x => x.Genre == (int)genre && x.Detail == detail && x.Particular == particular);
|
||||
var weaponData = GameData.WeaponData.Values.FirstOrDefault(x => x.Genre == (int)genre && x.Detail == detail && x.Particular == particular && x.Level == level);
|
||||
if (weaponData == null) return null;
|
||||
|
||||
var templateId = GameResourceTemplateId.FromGdpl((uint)genre,detail,particular,level);
|
||||
@@ -50,7 +50,7 @@ public class InventoryManager(PlayerInstance player) : BasePlayerManager(player)
|
||||
public async ValueTask<GameSkinInfo?> AddSkinItem(ItemTypeEnum genre, uint detail, uint particular, uint level = 1)
|
||||
{
|
||||
if (genre != ItemTypeEnum.TYPE_CARD_SKIN) return null;
|
||||
var skinData = GameData.CardSkinData.Values.FirstOrDefault(x => x.Genre == (int)genre && x.Detail == detail && x.Particular == particular);
|
||||
var skinData = GameData.CardSkinData.Values.FirstOrDefault(x => x.Genre == (int)genre && x.Detail == detail && x.Particular == particular && x.Level == level);
|
||||
if (skinData == null) return null;
|
||||
|
||||
var templateId = GameResourceTemplateId.FromGdpl((uint)genre,detail,particular,level);
|
||||
@@ -82,4 +82,58 @@ public class InventoryManager(PlayerInstance player) : BasePlayerManager(player)
|
||||
var templateId = GameResourceTemplateId.FromGdpl((uint)genre,detail,particular,level);
|
||||
return InventoryData.Skins.Values.FirstOrDefault(x => x.TemplateId == templateId);
|
||||
}
|
||||
|
||||
public async ValueTask<BaseGameItemInfo?> AddArItem(ItemTypeEnum genre, uint detail, uint particular, uint level = 1)
|
||||
{
|
||||
if (genre != ItemTypeEnum.TYPE_AR) return null;
|
||||
var arData = GameData.ArItemData.Values.FirstOrDefault(x => x.Genre == (int)genre && x.Detail == detail && x.Particular == particular && x.Level == level);
|
||||
if (arData == null) return null;
|
||||
|
||||
var templateId = GameResourceTemplateId.FromGdpl((uint)genre, detail, particular, level);
|
||||
if (InventoryData.Items.Values.Any(x => x.TemplateId == templateId)) return null;
|
||||
var arInfo = new BaseGameItemInfo
|
||||
{
|
||||
TemplateId = templateId,
|
||||
UniqueId = InventoryData.NextUniqueUid++,
|
||||
Flag = ItemFlagEnum.FLAG_READED,
|
||||
ItemCount = 1
|
||||
};
|
||||
InventoryData.Items[arInfo.UniqueId] = arInfo;
|
||||
return arInfo;
|
||||
}
|
||||
|
||||
public async ValueTask<BaseGameItemInfo?> AddManifestationItem(ItemTypeEnum genre, uint detail, uint particular, uint level = 1)
|
||||
{
|
||||
if (genre != ItemTypeEnum.TYPE_MANIFESTATION) return null;
|
||||
var manifestData = GameData.ManifestationData.Values.FirstOrDefault(x => x.Genre == (int)genre && x.Detail == detail && x.Particular == particular && x.Level == level);
|
||||
if (manifestData == null) return null;
|
||||
|
||||
var templateId = GameResourceTemplateId.FromGdpl((uint)genre, detail, particular, level);
|
||||
if (InventoryData.Items.Values.Any(x => x.TemplateId == templateId)) return null;
|
||||
var manifestInfo = new BaseGameItemInfo
|
||||
{
|
||||
TemplateId = templateId,
|
||||
UniqueId = InventoryData.NextUniqueUid++,
|
||||
Flag = ItemFlagEnum.FLAG_READED,
|
||||
ItemCount = 1
|
||||
};
|
||||
InventoryData.Items[manifestInfo.UniqueId] = manifestInfo;
|
||||
return manifestInfo;
|
||||
}
|
||||
|
||||
public BaseGameItemInfo? GetNormalItem(uint uniqueId)
|
||||
{
|
||||
return InventoryData.Items.GetValueOrDefault(uniqueId);
|
||||
}
|
||||
|
||||
public BaseGameItemInfo? GetNormalItemByTemplateId(ulong templateId)
|
||||
{
|
||||
return InventoryData.Items.Values.FirstOrDefault(x => x.TemplateId == templateId);
|
||||
}
|
||||
|
||||
public BaseGameItemInfo? GetNormalItemGDPL(ItemTypeEnum genre, uint detail, uint particular, uint level)
|
||||
{
|
||||
var templateId = GameResourceTemplateId.FromGdpl((uint)genre, detail, particular, level);
|
||||
return InventoryData.Items.Values.FirstOrDefault(x => x.TemplateId == templateId);
|
||||
}
|
||||
}
|
||||
@@ -52,6 +52,14 @@ public class PlayerInstance(PlayerGameData data)
|
||||
{
|
||||
await InventoryManager.AddWeaponItem((ItemTypeEnum)weapon.Genre, weapon.Detail, weapon.Particular, weapon.Level);
|
||||
}
|
||||
foreach (var ar in GameData.ArItemData.Values)
|
||||
{
|
||||
await InventoryManager.AddArItem((ItemTypeEnum)ar.Genre, ar.Detail, ar.Particular, ar.Level);
|
||||
}
|
||||
foreach (var manifest in GameData.ManifestationData.Values)
|
||||
{
|
||||
await InventoryManager.AddManifestationItem((ItemTypeEnum)manifest.Genre, manifest.Detail, manifest.Particular, manifest.Level);
|
||||
}
|
||||
foreach (var card in GameData.CardData.Values)
|
||||
{
|
||||
await CharacterManager.AddCharacter((ItemTypeEnum)card.Genre, card.Detail, card.Particular, card.Level);
|
||||
@@ -168,6 +176,7 @@ public class PlayerInstance(PlayerGameData data)
|
||||
},
|
||||
};
|
||||
|
||||
foreach (var item in InventoryManager.InventoryData.Items.Values) proto.Items.Add(item.ToProto());
|
||||
foreach (var weapon in InventoryManager.InventoryData.Weapons.Values) proto.Items.Add(weapon.ToProto());
|
||||
foreach (var skin in InventoryManager.InventoryData.Skins.Values) proto.Items.Add(skin.ToProto());
|
||||
foreach (var chara in CharacterManager.CharacterData.Characters) proto.Items.Add(chara.ToProto());
|
||||
|
||||
13
GameServer/Server/CallGS/Handlers/Scene/ChangeMainScene.cs
Normal file
13
GameServer/Server/CallGS/Handlers/Scene/ChangeMainScene.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
namespace MikuSB.GameServer.Server.CallGS.Handlers.Scene;
|
||||
|
||||
// Response:{sErr:true or false}
|
||||
[CallGSApi("ChangeMainScene")]
|
||||
public class ChangeMainScene : ICallGSHandler
|
||||
{
|
||||
public async Task Handle(Connection connection, string param, ushort seqNo)
|
||||
{
|
||||
string rsp = $"{{\"sErr\":false}}";
|
||||
// TODO change scene with ExtraSync
|
||||
await CallGSRouter.SendScript(connection, "ChangeMainScene", rsp);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user