using System.Runtime.InteropServices;
namespace XFEEDToolBox.Plugin;
internal static unsafe partial class Navigation
{
static uint GalaxySocialModesSelfTest()
{
var memory=Platform.Allocate(32768);if(memory==0)return 0;
try
{
var fakeImage=unchecked((nuint)0x140000000UL);var flow=memory+0x58;var config=memory+0x1000;
var csm=memory+0x2000;var current=memory+0x3000;var name=memory+0x3100;
var multiplayer=memory+0x4000;var user=memory+0x5000;var life=memory+0x6000;
var registry=memory+0x7000;var metadata=memory+0x7100;var slots=memory+0x7200;var array=memory+0x7300;var avatar=memory+0x7400;
Write(flow,fakeImage+0x5239F60);Write(flow-0x48,memory+0x800);Write(flow+0x310,csm);
Write(csm,fakeImage+0x513BE00);Write(csm+0x100,current);Write(current,name);Platform.WriteBytes(name,"InGame\0"u8);
Write(config,fakeImage+0x4DDED20);Write(flow+0x90,multiplayer);Write(multiplayer,fakeImage+0x5269B28);
Write(multiplayer+0x140,(sbyte)12);Write(flow+0xD8,user);Write(user,fakeImage+0x52A0258);Write(user+0x138,life);
Write(life+0xC0,8);Write(life+0xC8,registry+0x30);Write(registry+0x10,metadata);Write(registry+0x18,array);
Write(metadata+0x18,1UL);Write(metadata+0x30,slots);Write(slots+3*16,0UL);Write(array,avatar);
Write(avatar,fakeImage+0x52A3188);Write(avatar+0x138,99U);
bool ReadMode(out int? mode,out bool? gameplay)=>CopyGalaxySocialModes(flow,fakeImage,3,out mode,out gameplay);
uint passed=0;
if(ReadMode(out var mode,out var gameplay)&&mode is null&&gameplay==true&&Pointer(flow+0x568)==0)passed|=1;
Write(flow+0x568,config);Write(config+0x10,0);
if(ReadMode(out mode,out gameplay)&&mode==0&&GalaxyFriendMarkerCurrent(5,mode,gameplay)==false&&GalaxyFriendMarkerCurrent(6,mode,gameplay)==false)passed|=2;
Write(config+0x10,1);
if(ReadMode(out mode,out gameplay)&&mode==1&&GalaxyFriendMarkerCurrent(5,mode,gameplay)==true&&GalaxyFriendMarkerCurrent(6,mode,gameplay)==false)passed|=4;
Write(config+0x10,2);
if(ReadMode(out mode,out gameplay)&&mode==2&&GalaxyFriendMarkerCurrent(6,mode,gameplay)==true&&GalaxyFriendMarkerCurrent(5,mode,gameplay)==false)passed|=8;
Write(multiplayer+0x140,(sbyte)0);
if(ReadMode(out mode,out gameplay)&&mode==0)passed|=16;
Write(avatar+0x138,100U);
if(ReadMode(out mode,out gameplay)&&mode==2)passed|=32;
Write(user+0x138,(nuint)0);
if(ReadMode(out mode,out gameplay)&&mode==2)passed|=64;
Write(multiplayer,fakeImage+0x5269B60);
if(ReadMode(out mode,out gameplay)&&mode is null&&GalaxyFriendMarkerCurrent(6,mode,gameplay) is null)passed|=128;
Write(multiplayer,fakeImage+0x5269B28);Platform.WriteBytes(name,"MainMenu\0"u8);
if(ReadMode(out mode,out gameplay)&&gameplay==false&&GalaxyFriendMarkerCurrent(6,mode,gameplay)==false)passed|=256;
Write(csm,fakeImage+0x513BE08);
if(!ReadMode(out _,out _))passed|=512;
Write(csm,fakeImage+0x513BE00);Platform.WriteBytes(name,"InGame\0"u8);Write(config,fakeImage+0x4DDED28);
if(ReadMode(out mode,out gameplay)&&mode is null&&Pointer(config)==fakeImage+0x4DDED28)passed|=1024;
Write(flow,fakeImage+0x5239F98);
if(!ReadMode(out _,out _))passed|=2048;
if(GalaxySocialGameplayStates.Contains("Pause")&&GalaxySocialGameplayStates.Contains("FriendsUnavailable")&&
!GalaxySocialGameplayStates.Contains("InGameX")&&GalaxyFriendMarkerCurrent(13,2,true)==false&&
GalaxyFriendMarkerCurrent(5,null,true) is null&&GalaxyFriendMarkerCurrent(6,1,null)==false)passed|=4096;
return passed;
}
finally{Platform.Free(memory);}
}
#if PLUGIN_NAVIGATION
[UnmanagedCallersOnly(EntryPoint="XFENavigationGalaxySocialModesSelfTest")]
internal static uint ExportGalaxySocialModesSelfTest()=>RunTest(GalaxySocialModesSelfTest);
#endif
}
using System.Runtime.InteropServices;
namespace XFEEDToolBox.Plugin;
internal static unsafe partial class Navigation
{
static uint GalaxySocialModesSelfTest()
{
var memory=Platform.Allocate(32768);if(memory==0)return 0;
try
{
var fakeImage=unchecked((nuint)0x140000000UL);var flow=memory+0x58;var config=memory+0x1000;
var csm=memory+0x2000;var current=memory+0x3000;var name=memory+0x3100;
var multiplayer=memory+0x4000;var user=memory+0x5000;var life=memory+0x6000;
var registry=memory+0x7000;var metadata=memory+0x7100;var slots=memory+0x7200;var array=memory+0x7300;var avatar=memory+0x7400;
Write(flow,fakeImage+0x5239F60);Write(flow-0x48,memory+0x800);Write(flow+0x310,csm);
Write(csm,fakeImage+0x513BE00);Write(csm+0x100,current);Write(current,name);Platform.WriteBytes(name,"InGame\0"u8);
Write(config,fakeImage+0x4DDED20);Write(flow+0x90,multiplayer);Write(multiplayer,fakeImage+0x5269B28);
Write(multiplayer+0x140,(sbyte)12);Write(flow+0xD8,user);Write(user,fakeImage+0x52A0258);Write(user+0x138,life);
Write(life+0xC0,8);Write(life+0xC8,registry+0x30);Write(registry+0x10,metadata);Write(registry+0x18,array);
Write(metadata+0x18,1UL);Write(metadata+0x30,slots);Write(slots+3*16,0UL);Write(array,avatar);
Write(avatar,fakeImage+0x52A3188);Write(avatar+0x138,99U);
bool ReadMode(out int? mode,out bool? gameplay)=>CopyGalaxySocialModes(flow,fakeImage,3,out mode,out gameplay);
uint passed=0;
if(ReadMode(out var mode,out var gameplay)&&mode is null&&gameplay==true&&Pointer(flow+0x568)==0)passed|=1;
Write(flow+0x568,config);Write(config+0x10,0);
if(ReadMode(out mode,out gameplay)&&mode==0&&GalaxyFriendMarkerCurrent(5,mode,gameplay)==false&&GalaxyFriendMarkerCurrent(6,mode,gameplay)==false)passed|=2;
Write(config+0x10,1);
if(ReadMode(out mode,out gameplay)&&mode==1&&GalaxyFriendMarkerCurrent(5,mode,gameplay)==true&&GalaxyFriendMarkerCurrent(6,mode,gameplay)==false)passed|=4;
Write(config+0x10,2);
if(ReadMode(out mode,out gameplay)&&mode==2&&GalaxyFriendMarkerCurrent(6,mode,gameplay)==true&&GalaxyFriendMarkerCurrent(5,mode,gameplay)==false)passed|=8;
Write(multiplayer+0x140,(sbyte)0);
if(ReadMode(out mode,out gameplay)&&mode==0)passed|=16;
Write(avatar+0x138,100U);
if(ReadMode(out mode,out gameplay)&&mode==2)passed|=32;
Write(user+0x138,(nuint)0);
if(ReadMode(out mode,out gameplay)&&mode==2)passed|=64;
Write(multiplayer,fakeImage+0x5269B60);
if(ReadMode(out mode,out gameplay)&&mode is null&&GalaxyFriendMarkerCurrent(6,mode,gameplay) is null)passed|=128;
Write(multiplayer,fakeImage+0x5269B28);Platform.WriteBytes(name,"MainMenu\0"u8);
if(ReadMode(out mode,out gameplay)&&gameplay==false&&GalaxyFriendMarkerCurrent(6,mode,gameplay)==false)passed|=256;
Write(csm,fakeImage+0x513BE08);
if(!ReadMode(out _,out _))passed|=512;
Write(csm,fakeImage+0x513BE00);Platform.WriteBytes(name,"InGame\0"u8);Write(config,fakeImage+0x4DDED28);
if(ReadMode(out mode,out gameplay)&&mode is null&&Pointer(config)==fakeImage+0x4DDED28)passed|=1024;
Write(flow,fakeImage+0x5239F98);
if(!ReadMode(out _,out _))passed|=2048;
if(GalaxySocialGameplayStates.Contains("Pause")&&GalaxySocialGameplayStates.Contains("FriendsUnavailable")&&
!GalaxySocialGameplayStates.Contains("InGameX")&&GalaxyFriendMarkerCurrent(13,2,true)==false&&
GalaxyFriendMarkerCurrent(5,null,true) is null&&GalaxyFriendMarkerCurrent(6,1,null)==false)passed|=4096;
return passed;
}
finally{Platform.Free(memory);}
}
#if PLUGIN_NAVIGATION
[UnmanagedCallersOnly(EntryPoint="XFENavigationGalaxySocialModesSelfTest")]
internal static uint ExportGalaxySocialModesSelfTest()=>RunTest(GalaxySocialModesSelfTest);
#endif
}