public void ModifyNameAndVersion() { var importPipeline = ImportPipeline.Create().Build(); var createExplorer = ProjectExplorer.CreateProject(FileName("project"), importPipeline); createExplorer.Definition.Properties.Name = "TestName1"; createExplorer.Definition.Properties.Version = "1.0.0"; createExplorer.Definition.SaveChanges(); var loadExplorer = ProjectExplorer.Load(FileName("project"), importPipeline); Assert.That(loadExplorer.Definition.Properties.Name, Is.EqualTo("TestName1")); Assert.That(loadExplorer.Definition.Properties.Version, Is.EqualTo("1.0.0")); loadExplorer.ExportZippedToDirectory(new BuildPipeline() { ImportPipeline = importPipeline, }, FileName("export")); var packageImport = PackageExplorer.LoadFromFileAsync( Path.Combine(FileName("export"), "TestName1.bpkg")).Result; Assert.That(packageImport.Definition.Properties.Name, Is.EqualTo("TestName1")); Assert.That(packageImport.Definition.Properties.Version, Is.EqualTo("1.0.0")); }
public void ModifyVersion() { var importPipeline = ImportPipeline.Create().Build(); string projectPath = TestUtilities.CreateFilePath("project"); string exportPath = Path.Combine(TestUtilities.CreateFilePath("export"), "project.bpkg"); using (var explorer = ProjectExplorer.CreateProject(projectPath, importPipeline)) { explorer.Definition.Properties.Version = "1.0.0"; explorer.Definition.SaveChanges(); } using (var explorer = ProjectExplorer.Load(projectPath, importPipeline)) { Assert.That(explorer.Definition.Properties.Version, Is.EqualTo("1.0.0")); explorer.ExportZippedToDirectory(new BuildPipeline() { ImportPipeline = importPipeline, }, TestUtilities.CreateFilePath("export")); } using (var explorer = PackageExplorer.LoadFromFileAsync(exportPath).Result) { Assert.That(explorer.Definition.Properties.Version, Is.EqualTo("1.0.0")); } }
public void CreateBlankProject() { var importPipeline = ImportPipeline.Create().Build(); string projectPath = TestUtilities.CreateFilePath("project"); using (var explorer = ProjectExplorer.CreateProject(projectPath, importPipeline)) { explorer.Definition.Properties.Name = "TestName1"; explorer.Definition.SaveChanges(); } }
public FormatCommand(string name, string description = null) : base(name, description) { AddArgument(new Argument <FileInfo>("project", null) { Description = "A project file to use." }); Handler = CommandHandler.Create((ParseResult parseResult, IConsole console) => { var project = parseResult.ValueForOption <FileInfo>("project"); if (project == null) { project = FindFileOfType(".bproj"); } var importPipeline = ImportPipeline.Create().Build(); var projectExplorer = ProjectExplorer.Load(project.DirectoryName, importPipeline); projectExplorer.Definition.SaveChanges(); }); }
public static void Run() { var manifest = BehaviourManifest.CreateFromAppDomain(AppDomain.CurrentDomain); File.WriteAllText("Content/RPGCoreMath.bmfst", manifest.ToString()); Console.WriteLine("Importing Graph..."); var importPipeline = ImportPipeline.Create().Build(); var proj = ProjectExplorer.Load("Content/Core", importPipeline); Console.WriteLine(proj.Definition.Properties.Name); Console.WriteLine($"\t\"{proj.Definition.Properties.Name}\""); foreach (var resource in ((IExplorer)proj).Resources) { Console.WriteLine($"\t{resource.FullName}"); } var editorTargetResource = proj.Resources["Fireball/Main.json"]; var editorTargetData = editorTargetResource.Content.LoadStream(); JObject editorTarget; var serializer = new JsonSerializer(); using (var sr = new StreamReader(editorTargetData)) using (var reader = new JsonTextReader(sr)) { editorTarget = JObject.Load(reader); } var editor = new EditorSession(manifest, editorTarget, "SerializedGraph", serializer); foreach (var node in (editor.Root.Fields["Nodes"].Value as EditorObject).Fields.Values) { var nodeData = (node.Value as EditorObject).Fields["Data"]; foreach (var field in (nodeData.Value as EditorObject).Fields.Values) { var editableValue = field.Value as EditorValue; Console.WriteLine($"{field}"); if (field.Field.Name == "MaxValue") { editableValue.SetValue(editableValue.GetValue <int>() + 10); editableValue.ApplyModifiedProperties(); editableValue.SetValue(editableValue.GetValue <int>()); editableValue.ApplyModifiedProperties(); } else if (field.Field.Name == "ValueB") { Console.WriteLine(editableValue.GetValue <LocalPropertyId>()); } } } using (var file = editorTargetResource.Content.OpenWrite()) using (var sr = new StreamWriter(file)) using (var jsonWriter = new JsonTextWriter(sr) { Formatting = Formatting.Indented }) { serializer.Serialize(jsonWriter, editorTarget); } Console.WriteLine(new DirectoryInfo("Content/Temp").FullName); var consoleRenderer = new BuildConsoleRenderer(); var buildPipeline = new BuildPipeline(); buildPipeline.Exporters.Add(new BhvrExporter()); buildPipeline.BuildActions.Add(consoleRenderer); consoleRenderer.DrawProgressBar(32); proj.ExportZippedToDirectory(buildPipeline, "Content/Temp"); Console.WriteLine("Exported package..."); var exportedPackage = PackageExplorer.LoadFromFileAsync("Content/Temp/Core.bpkg").Result; var fireballAsset = exportedPackage.Resources["Fireball/Main.json"]; var data = fireballAsset.Content.LoadStream(); SerializedGraph packageItem; using (var sr = new StreamReader(data)) using (var reader = new JsonTextReader(sr)) { packageItem = serializer.Deserialize <SerializedGraph>(reader); } Console.WriteLine("Imported: " + fireballAsset.Name); var unpackedGraph = packageItem.Unpack(); Console.WriteLine("Running Simulation..."); var player = new DemoPlayer(); IGraphInstance instancedItem = unpackedGraph.Create(); instancedItem.Setup(); instancedItem.SetInput(player); for (int i = 0; i < 5; i++) { Thread.Sleep(100); player.Health.Value -= 10; } instancedItem.Remove(); var settings = new JsonSerializerSettings(); settings.Converters.Add(new LocalIdJsonConverter()); settings.Converters.Add(new SerializedGraphInstanceProxyConverter(null)); string serializedGraph = JsonConvert.SerializeObject(instancedItem, settings); // var packedInstance = ((GraphInstance)instancedItem).Pack (); // string serializedGraph = packedInstance.AsJson (); Console.WriteLine(serializedGraph); var deserialized = JsonConvert.DeserializeObject <SerializedGraphInstance>(serializedGraph); var unpackedInstance = deserialized.Unpack(unpackedGraph); unpackedInstance.SetInput(player); unpackedInstance.Setup(); for (int i = 0; i < 5; i++) { Thread.Sleep(100); player.Health.Value -= 20; } unpackedInstance.Remove(); for (int i = 0; i < 5; i++) { Thread.Sleep(100); player.Health.Value -= 20; } }
public void Start() { var serializer = new JsonSerializer(); Console.WriteLine("Importing Graph..."); var importPipeline = ImportPipeline.Create() .UseProcessor(new TagAllProjectResourceImporter()) .Build(); var projectExplorer = ProjectExplorer.Load("Content/Core", importPipeline); Console.WriteLine("Building project files..."); RenderDirectory(projectExplorer.Archive.RootDirectory); var consoleRenderer = new BuildConsoleRenderer(); var buildPipeline = new BuildPipeline(); buildPipeline.BuildActions.Add(consoleRenderer); consoleRenderer.DrawProgressBar(32); projectExplorer.ExportZippedToDirectory(buildPipeline, "Content/Temp"); Console.WriteLine("Exported package..."); var exportedPackage = PackageExplorer.LoadFromFileAsync("Content/Temp/Core.bpkg").Result; RenderDirectory(exportedPackage.Source); var fireballAsset = exportedPackage.Resources["Fireball/Main.json"]; var data = fireballAsset.Content.OpenRead(); SerializedGraph packageItem; using (var sr = new StreamReader(data)) using (var reader = new JsonTextReader(sr)) { packageItem = serializer.Deserialize <SerializedGraph>(reader); } Console.WriteLine("Imported: " + fireballAsset.Name); var unpackedGraph = packageItem.Unpack(); Console.WriteLine("Running Simulation..."); var player = new DemoPlayer(); IGraphInstance instancedItem = unpackedGraph.Create(); instancedItem.Setup(); instancedItem.SetInput(player); for (int i = 0; i < 5; i++) { Thread.Sleep(100); player.Health.Value -= 10; } instancedItem.Remove(); var settings = new JsonSerializerSettings(); settings.Converters.Add(new LocalIdJsonConverter()); settings.Converters.Add(new SerializedGraphInstanceProxyConverter(null)); string serializedGraph = JsonConvert.SerializeObject(instancedItem, settings); Console.WriteLine(serializedGraph); var deserialized = JsonConvert.DeserializeObject <SerializedGraphInstance>(serializedGraph); var unpackedInstance = deserialized.Unpack(unpackedGraph); unpackedInstance.SetInput(player); unpackedInstance.Setup(); for (int i = 0; i < 5; i++) { Thread.Sleep(100); player.Health.Value -= 20; } unpackedInstance.Remove(); for (int i = 0; i < 5; i++) { Thread.Sleep(100); player.Health.Value -= 20; } }
public async Task StartAsync() { // Import the project var importPipeline = ImportPipeline.Create() .UseImporter(new BoardGameResourceImporter()) .UseJsonMetaFiles(options => { options.IsMetaFilesOptional = true; }) .Build(); var projectExplorer = ProjectExplorer.Load("Content/BoardGame", importPipeline); // Build the project to a package. var consoleRenderer = new BuildConsoleRenderer(); var buildPipeline = new BuildPipeline(); buildPipeline.BuildActions.Add(consoleRenderer); consoleRenderer.DrawProgressBar(32); projectExplorer.ExportZippedToDirectory(buildPipeline, "BoardGame/Temp"); var packageExplorer = PackageExplorer.LoadFromFileAsync("BoardGame/Temp/BoardGame.bpkg").Result; var dest = new FileSystemArchive(new DirectoryInfo("BoardGame/Temp")); await packageExplorer.Source.CopyIntoAsync(dest.RootDirectory, "Fast"); var cottage = packageExplorer.Resources["buildings/cottage.json"]; foreach (var dep in cottage.Dependencies) { Console.WriteLine($"{dep.Key}: {dep.Resource?.Name}"); } Step(); var gameServer = new GameServer(); gameServer.StartHosting(projectExplorer); var playerA = LocalId.NewShortId(); var playerB = LocalId.NewShortId(); gameServer.OnClientConnected(playerA, "Player A"); gameServer.OnClientConnected(playerB, "Player B"); DrawGameState(gameServer.Lobby); Step(); gameServer.AcceptInput(playerA, new StartGameCommand() { }); DrawGameState(gameServer.Lobby); Step(); gameServer.AcceptInput(playerA, new DeclareResourceCommand() { ResourceIdentifier = "x" }); DrawGameState(gameServer.Lobby); Step(); gameServer.AcceptInput(playerA, new PlaceResourceCommand() { ResourceIdentifier = "x", ResourcePosition = new Integer2(2, 2) }); DrawGameState(gameServer.Lobby); Step(); gameServer.AcceptInput(playerB, new PlaceResourceCommand() { ResourceIdentifier = "x", ResourcePosition = new Integer2(3, 1) }); DrawGameState(gameServer.Lobby); Step(); gameServer.AcceptInput(playerA, new BuildBuildingCommand() { BuildingIdentifier = "cottage", BuildingPosition = new Integer2(1, 1), Offset = new Integer2(1, 1), }); DrawGameState(gameServer.Lobby); Step(); gameServer.AcceptInput(playerB, new EndTurnCommand()); DrawGameState(gameServer.Lobby); }