public IndieCityManager(string gameId, string serviceId, string serviceSecret, bool hasAchievements, bool hasLeaderboards, IManagerServiceProvider serviceProvider, SessionEndDelegate sessionEndDelegate) { _sceneInterface = serviceProvider; _sessionEndDelegate = sessionEndDelegate; ManagerProcessOrder = 10; var service = new ServiceId { Data1 = uint.Parse(serviceId.Substring(0, 8), NumberStyles.HexNumber), Data2 = ushort.Parse(serviceId.Substring(9, 4), NumberStyles.HexNumber), Data3 = ushort.Parse(serviceId.Substring(14, 4), NumberStyles.HexNumber), Data4 = new[] { byte.Parse(serviceId.Substring(19, 2), NumberStyles.HexNumber), byte.Parse(serviceId.Substring(21, 2), NumberStyles.HexNumber), byte.Parse(serviceId.Substring(24, 2), NumberStyles.HexNumber), byte.Parse(serviceId.Substring(26, 2), NumberStyles.HexNumber), byte.Parse(serviceId.Substring(28, 2), NumberStyles.HexNumber), byte.Parse(serviceId.Substring(30, 2), NumberStyles.HexNumber), byte.Parse(serviceId.Substring(32, 2), NumberStyles.HexNumber), byte.Parse(serviceId.Substring(34, 2), NumberStyles.HexNumber) } }; var bridge = new CoBridge2(); bridge.Initialise(gameId); bridge.SetServiceCredentials(GameService.GameService_IndieCityLeaderboardsAndAchievements, service, serviceSecret); Session = bridge.CreateDefaultGameSession(); _sessionCookie = Session.RegisterEventHandler(0, 0, this); _sessionActive = false; _startPhase = SessionStartPhase.NotStarted; _username = bridge.UserStore.GetUserFromId(Session.UserId).Name; _achievementsReady = !hasAchievements; if (hasAchievements) { AchievementsManager = new CoAchievementManager(); AchievementsManager.SetGameSession(Session); AchievementsManager.InitialiseAchievements(null); _achievementsCookie = ((IAchievementService)AchievementsManager).RegisterAchievementEventHandler(this); _achievementsUnlockedAtIndieCity = new Dictionary <long, bool>(); } _leaderboardsReady = !hasLeaderboards; if (hasLeaderboards) { _leaderboardsManager = new CoLeaderboardManager(); _leaderboardsManager.SetGameSession(Session); _leaderboardsManager.InitialiseLeaderboards(null); _leaderboardsCookie = ((ILeaderboardService)_leaderboardsManager).RegisterLeaderboardEventHandler(this); } }
public IndieCityManager(string gameId, string serviceId, string serviceSecret, bool hasAchievements, bool hasLeaderboards, IManagerServiceProvider serviceProvider, SessionEndDelegate sessionEndDelegate) { _sceneInterface = serviceProvider; _sessionEndDelegate = sessionEndDelegate; ManagerProcessOrder = 10; var service = new ServiceId { Data1 = uint.Parse(serviceId.Substring(0, 8), NumberStyles.HexNumber), Data2 = ushort.Parse(serviceId.Substring(9, 4), NumberStyles.HexNumber), Data3 = ushort.Parse(serviceId.Substring(14, 4), NumberStyles.HexNumber), Data4 = new[] { byte.Parse(serviceId.Substring(19, 2), NumberStyles.HexNumber), byte.Parse(serviceId.Substring(21, 2), NumberStyles.HexNumber), byte.Parse(serviceId.Substring(24, 2), NumberStyles.HexNumber), byte.Parse(serviceId.Substring(26, 2), NumberStyles.HexNumber), byte.Parse(serviceId.Substring(28, 2), NumberStyles.HexNumber), byte.Parse(serviceId.Substring(30, 2), NumberStyles.HexNumber), byte.Parse(serviceId.Substring(32, 2), NumberStyles.HexNumber), byte.Parse(serviceId.Substring(34, 2), NumberStyles.HexNumber) } }; var bridge = new CoBridge2(); bridge.Initialise(gameId); bridge.SetServiceCredentials(GameService.GameService_IndieCityLeaderboardsAndAchievements, service, serviceSecret); Session = bridge.CreateDefaultGameSession(); _sessionCookie = Session.RegisterEventHandler(0, 0, this); _sessionActive = false; _startPhase = SessionStartPhase.NotStarted; _username = bridge.UserStore.GetUserFromId(Session.UserId).Name; _achievementsReady = !hasAchievements; if (hasAchievements) { AchievementsManager = new CoAchievementManager(); AchievementsManager.SetGameSession(Session); AchievementsManager.InitialiseAchievements(null); _achievementsCookie = ((IAchievementService) AchievementsManager).RegisterAchievementEventHandler(this); _achievementsUnlockedAtIndieCity = new Dictionary<long, bool>(); } _leaderboardsReady = !hasLeaderboards; if (hasLeaderboards) { _leaderboardsManager = new CoLeaderboardManager(); _leaderboardsManager.SetGameSession(Session); _leaderboardsManager.InitialiseLeaderboards(null); _leaderboardsCookie = ((ILeaderboardService) _leaderboardsManager).RegisterLeaderboardEventHandler(this); } }
/// <summary> /// Allows the game to perform any initialization it needs to before starting to run. /// This is where it can query for any required services and load any non-graphic /// related content. Calling base.Initialize will enumerate through any components /// and initialize them as well. /// </summary> protected override void Initialize() { #if !INTERNAL && !INDIECITY if(!Program.Apprehensive) { ShowMissingRequirementMessage(new Exception("An invalid operation was performed.")); Exit(); } try { #if !DEBUG var k = Registry.CurrentUser.OpenSubKey("inf_data_AD"); if((int)k.GetValue("potato", 0) != 1) throw new Exception(); #endif } catch { ShowMissingRequirementMessage(new Exception("An invalid operation was performed.")); Registry.CurrentUser.DeleteSubKeyTree("inf_data_AD", false); Exit(); } Registry.CurrentUser.DeleteSubKeyTree("inf_data_AD", false); #elif INDIECITY //create bridge Bridge = new CoBridge2(); //Set your game ids here as given from your game project page string myGameId = "50ff0fa6-7628-419f-bfc7-50ead82077bc"; serviceID = new ServiceId(); serviceID.Data1 = 0x7710ab33; serviceID.Data2 = 0xf822; serviceID.Data3 = 0x4297; serviceID.Data4 = new byte[] { 0xb9, 0x74, 0x05, 0x64, 0x4f, 0x2a, 0x1b, 0xd8 }; string myICELibSecret = "bad7922a-0d9e-42c8-8445-32f99e90d323"; //Initialise the bridge with the gameId and secret. //This allows the bridge to access users tokens registered on the computer Bridge.Initialise(myGameId); Bridge.SetServiceCredentials(GameService.GameService_IndieCityLeaderboardsAndAchievements, serviceID, myICELibSecret); UserID = Bridge.DefaultUserId; UserStore = Bridge.UserStore; UserInfo = UserStore.GetUserFromId(UserID); //Program.Cutter.WriteToLog(this, "here"); string userName = UserInfo.Name; //Program.Cutter.WriteToLog(this, "username is: " + userName); //RegistryKey k1 = null, k2 = null; //using(k1 = Registry.CurrentUser.OpenSubKey("Software", true)) // using(k2 = k1.CreateSubKey("Accelerated Delivery")) // { // Program.Cutter.WriteToLog(this, "username is: " + userName); // k2.SetValue("username", userName); // } //create a game session for the user playing the game Session = Bridge.CreateDefaultGameSession(); //Start the session Session.RequestStartSession(); //block until session has started //This is just for simplicity. Real game would react to session start and end events. Session //may end for different reasons or may never start. bool started = false; int sleptFor = 0; do { Session.UpdateSession(); started = Session.IsSessionStarted(); System.Threading.Thread.Sleep(100); sleptFor += 100; if(sleptFor > 20000) { error = true; SuppressDraw(); new Error().Show(); return; } } while(!started); #endif GDM.PreferredBackBufferWidth = PreferredScreenWidth; GDM.PreferredBackBufferHeight = PreferredScreenHeight; // supported resolutions are 800x600, 1280x720, 1366x768, 1980x1020, and 1024x768 int width = GraphicsDevice.DisplayMode.Width; int height = GraphicsDevice.DisplayMode.Height; if(width > 800) // this setup doesn't account for aspect ratios, which may be a problem { if(width > 1024) { if(width > 1280) { if(width > 1366) { GDM.PreferredBackBufferWidth = 1366; GDM.PreferredBackBufferHeight = 768; } else { GDM.PreferredBackBufferWidth = 1280; GDM.PreferredBackBufferHeight = 720; } } else { GDM.PreferredBackBufferWidth = 1024; GDM.PreferredBackBufferHeight = 768; } } } else if(width < 800) { ShowMissingRequirementMessage(new Exception("The game requires at least an 800x600 screen resolution.")); Exit(); } else { GDM.PreferredBackBufferWidth = 800; GDM.PreferredBackBufferHeight = 600; } GameManager.FirstStageInitialization(this, Program.Cutter); AccomplishmentManager.InitAchievements(); try { Manager = new IOManager(); } catch { } if(Manager != null) if(Manager.SuccessfulLoad) { GDM.IsFullScreen = Manager.FullScreen; GDM.PreferredBackBufferHeight = Manager.CurrentSaveWindowsOptions.ScreenHeight; GDM.PreferredBackBufferWidth = Manager.CurrentSaveWindowsOptions.ScreenWidth; MenuHandler.SaveLoaded(); } Program.Game.Manager.CurrentSaveWindowsOptions.FancyGraphics = false; if(GDM.GraphicsDevice.Adapter.IsProfileSupported(GraphicsProfile.HiDef)) { GDM.GraphicsProfile = GraphicsProfile.HiDef; Program.Game.Manager.CurrentSaveWindowsOptions.FancyGraphics = true; } GDM.ApplyChanges(); //#if DEBUG // if(HiDef) // drawer = new InstancedModelDrawer(this); // else // drawer = new BruteModelDrawer(this); //#endif base.Initialize(); }