/// <summary> /// Load the world byte array sent by the server /// </summary> public static void LoadLevel(byte[] world) { Log.Info($"Preparing to load world (of size {world.Length})..."); // Load the package Package package = new Package(SYNC_NAME, world); // Ensure that the LoadingManager is ready. // Don't know if thats really necessary but doesn't hurt either. - root#0042 Singleton <LoadingManager> .Ensure(); // Get the meta data Package.Asset asset = package.Find(package.packageMainAsset); SaveGameMetaData metaData = asset.Instantiate <SaveGameMetaData>(); // Build the simulation SimulationMetaData simulation = new SimulationMetaData() { m_CityName = metaData.cityName, m_updateMode = SimulationManager.UpdateMode.LoadGame, m_environment = UIView.GetAView().panelsLibrary.Get <LoadPanel>("LoadPanel").m_forceEnvironment }; // Load the level Log.Info("Telling the loading manager to load the level"); Singleton <LoadingManager> .instance.LoadLevel(metaData.assetRef, "Game", "InGame", simulation, false); }
public static SaveGameMetaData GetMetaDataForDateTime(DateTime needle) { SaveGameMetaData result = null; foreach (Package.Asset current in PackageManager.FilterAssets(new Package.AssetType[] { UserAssetType.SaveGameMetaData })) { if (current != null && current.isEnabled) { SaveGameMetaData saveGameMetaData = current.Instantiate <SaveGameMetaData>(); if (saveGameMetaData != null) { try { Stream s = saveGameMetaData.assetRef.GetStream(); SimulationMetaData mysimmeta = DataSerializer.Deserialize <SimulationMetaData>(s, DataSerializer.Mode.File); if (mysimmeta.m_currentDateTime.Equals(needle)) { return(saveGameMetaData); } } catch (Exception ex) { ex.ToString(); } } } } return(result); }
public SaveGameRowStruct(Package.Asset asset, SaveGameMetaData sgmd) { SaveName = asset.name; CityName = sgmd.cityName; SaveTimestamp = sgmd.timeStamp; PathOnDisk = asset.pathOnDisk; saveMeta = sgmd; if (saveMeta != null && saveMeta.assetRef != null && saveMeta.assetRef.package != null && PackageManager.IsSteamCloudPath(saveMeta.assetRef.package.packagePath)) { IsSteam = true; } }
void StartGame(Package.Asset package) { m_connectionInfoLabel.text = "Game Starting"; SaveGameMetaData mmd = package.Instantiate <SaveGameMetaData>(); SavePanel.lastLoadedName = package.name; Debug.Log(mmd.cityName); SimulationMetaData ngs = new SimulationMetaData { m_CityName = mmd.cityName, m_updateMode = SimulationManager.UpdateMode.LoadGame, m_environment = "", m_disableAchievements = SimulationMetaData.MetaBool.True }; Singleton <LoadingManager> .instance.LoadLevel(mmd.assetRef, "Game", "InGame", ngs); }
private void StartGame(Package.Asset package) { ConnectSettings.Ip = m_serverList[m_selectedIndex]["ip"]; ConnectSettings.Port = int.Parse(m_serverList[m_selectedIndex]["port"]); SaveGameMetaData mmd = package.Instantiate <SaveGameMetaData>(); SavePanel.lastLoadedName = package.name; SimulationMetaData ngs = new SimulationMetaData { m_CityName = mmd.cityName, m_updateMode = SimulationManager.UpdateMode.LoadGame, m_environment = "", m_disableAchievements = SimulationMetaData.MetaBool.True }; Singleton <LoadingManager> .instance.LoadLevel(mmd.assetRef, "Game", "InGame", ngs); }
public void LoadSaveInformation() { GamesList.Clear(); Package.AssetType[] assetTypeArray = new Package.AssetType[1]; int index = 0; Package.AssetType assetType = UserAssetType.SaveGameMetaData; assetTypeArray[index] = assetType; foreach (Package.Asset asset in PackageManager.FilterAssets(assetTypeArray)) { if (asset != (Package.Asset)null && asset.isEnabled) { SaveGameMetaData mmd = asset.Instantiate <SaveGameMetaData>(); GamesList.Add(new SaveGameRowStruct(asset, mmd)); } } using (List <Package.Asset> .Enumerator enumerator = SaveHelper.GetSavesOnDisk().GetEnumerator()) { while (enumerator.MoveNext()) { Package.Asset current = enumerator.Current; SaveGameMetaData saveGameMetaData = new SaveGameMetaData(); saveGameMetaData.assetRef = current; SaveGameMetaData mmd = saveGameMetaData; GamesList.Add(new SaveGameRowStruct(current, mmd)); } } //this.m_SaveList.items = this.GetListingItems(); //if (this.m_SaveList.items.Length > 0) //{ // int indexOf = this.FindIndexOf(LoadPanel.m_LastSaveName); // this.m_SaveList.selectedIndex = indexOf == -1 ? 0 : indexOf; // this.m_LoadButton.isEnabled = true; //} //else // this.m_LoadButton.isEnabled = false; }
public void LaunchRowObject(UIComponent component) { UIPanel panel = component as UIPanel; if (panel != null) { SaveGameRowStruct sgrs = panel.objectUserData as SaveGameRowStruct; if (sgrs != null) { if (SavePanel.isSaving || !Singleton <LoadingManager> .exists || Singleton <LoadingManager> .instance.m_currentlyLoading) { return; } //this.CloseEverything(); WorldInfoPanel.HideAllWorldInfoPanels(); SaveGameMetaData listingMetaData = sgrs.saveMeta; // this.GetListingMetaData(this.m_SaveList.selectedIndex); Package.Asset listingData = sgrs.saveMeta.assetRef; // this.GetListingData(this.m_SaveList.selectedIndex); SimulationMetaData ngs = new SimulationMetaData() { m_CityName = listingMetaData.cityName, m_updateMode = SimulationManager.UpdateMode.LoadGame //, //m_environment = this.m_forceEnvironment }; if (Singleton <PluginManager> .instance.enabledModCount > 0 || listingData.package.GetPublishedFileID() != PublishedFileId.invalid) { ngs.m_disableAchievements = SimulationMetaData.MetaBool.True; } Singleton <LoadingManager> .instance.LoadLevel(listingData, "Game", "InGame", ngs); //UIView.library.Hide(this.GetType().Name, 1); ParentBetterLoadPanelWrapper.Hide(); } } }