public ViewCharacter() { Id = new EntityRef() { EntityId = LocalId.NewId() }; }
public void MatchesIntegerLiteral() { var stringLiteral = new LocalId("0xff001000"); var integerLiteral = new LocalId(0xff001000); Assert.AreEqual(stringLiteral, integerLiteral); }
public override byte[] ToBytes() { return(TLUtils.Combine(TLUtils.SignatureToBytes(Signature), VolumeId.ToBytes(), LocalId.ToBytes(), Secret.ToBytes())); }
public override void ToStream(Stream output) { output.Write(TLUtils.SignatureToBytes(Signature)); output.Write(VolumeId.ToBytes()); output.Write(LocalId.ToBytes()); output.Write(Secret.ToBytes()); }
public override int GetHashCode() { unchecked { return(((Guid != null ? Guid.GetHashCode() : 0) * 397) ^ LocalId.GetHashCode()); } }
public void OnClientDisconnected(LocalId localId) { var playerJoinedProcedure = new PlayerLeftProcedure() { OwnerId = localId }; RemoteCall(playerJoinedProcedure); }
public void OnClientConnected(LocalId localId, string displayName) { var playerJoinedProcedure = new PlayerJoinedProcedure() { DisplayName = displayName, OwnerId = localId }; RemoteCall(playerJoinedProcedure); }
public void CaseInvarientParsing() { int original = 1048471; string upperHex = original.ToString("X2"); string lowerHex = original.ToString("x2"); var upperId = new LocalId(upperHex); var lowerId = new LocalId(lowerHex); Assert.AreEqual(upperId, lowerId); }
public void PrefixInvarientParsing() { int original = 1048471; string unprefixed = original.ToString("x2"); string prefixed = "0x" + unprefixed; var prefixedId = new LocalId(prefixed); var unprefixedId = new LocalId(unprefixed); Assert.AreEqual(prefixedId, unprefixedId); }
public SlideMessage(Message parent, SerializedPacket p) : base(parent, p) { this.LocalId = (!SerializedPacket.IsNullPacket(p.PeekNextPart())) ? new LocalId(p.PeekNextPart()) : null; p.GetNextPart(); this.Title = SerializedPacket.DeserializeString(p.GetNextPart()); this.Zoom = SerializedPacket.DeserializeFloat(p.GetNextPart()); this.Bounds = SerializedPacket.DeserializeRectangle(p.GetNextPart()); this.SlideBackgroundColor = SerializedPacket.DeserializeColor(p.GetNextPart()); this.SubmissionSlideGuid = SerializedPacket.DeserializeGuid(p.GetNextPart()); this.SubmissionStyle = (SlideModel.StudentSubmissionStyle)SerializedPacket.DeserializeLong(p.GetNextPart()); this.Disposition = (SlideDisposition)SerializedPacket.DeserializeLong(p.GetNextPart()); this.AssociationSlideId = SerializedPacket.DeserializeGuid(p.GetNextPart()); }
public bool TryGetPlayer(LocalId ownerId, out GameplayPlayer player) { foreach (var findPlayer in internalCollection) { if (findPlayer.OwnerId == ownerId) { player = findPlayer; return(true); } } player = null; return(false); }
public LobbyPlayer this[LocalId ownerId] { get { foreach (var player in internalCollection) { if (player.OwnerId == ownerId) { return(player); } } throw new KeyNotFoundException($"Unable to find a player with ID \"{ownerId}\" in this {nameof(LobbyPlayerCollection)}"); } }
public SlideMessage(SlideModel slide) : base(slide.Id) { this.AddLocalRef(slide); this.LocalId = slide.LocalId; using (Synchronizer.Lock(slide.SyncRoot)) { this.Zoom = slide.Zoom; this.Bounds = slide.Bounds; this.Title = slide.Title; this.SlideBackgroundColor = slide.BackgroundColor; this.SlideBackgroundTemplate = slide.BackgroundTemplate; this.SubmissionSlideGuid = slide.SubmissionSlideGuid; this.Visited = slide.Visited; this.SubmissionStyle = slide.SubmissionStyle; this.Disposition = slide.Disposition; this.AssociationSlideId = slide.AssociationId; if (!this.AssociationSlideId.Equals(Guid.Empty)) { AddAssociationExtension(slide); } } }
private void Awake() { Player1 = LocalId.NewShortId(); Player2 = LocalId.NewShortId(); Game = new GameView() { CurrentPlayersTurn = 0, DeclaredResource = false, Players = new GamePlayer[] { new GamePlayer() { OwnerId = Player1, Board = new GameBoard(4, 4) }, new GamePlayer() { OwnerId = Player2, Board = new GameBoard(4, 4) } } }; }
public INodeInstance this[LocalId id] => null;
public void CreateSuccessfully() { var player1 = LocalId.NewShortId(); var player2 = LocalId.NewShortId(); PackageExplorer explorer = null; var gameView = new GameView(); gameView.Create(explorer); gameView.Players = new GamePlayer[] { new GamePlayer() { OwnerId = player1, Board = new GameBoard(4, 4), }, new GamePlayer() { OwnerId = player2, Board = new GameBoard(4, 4), } }; gameView.Apply(new DeclareResourceAction() { Client = player1, ResourceIdentifier = "1" }); gameView.Apply(new PlaceResourceAction() { Client = player1, ResourceIdentifier = "1", ResourcePosition = new Integer2(1, 1) }); gameView.Apply(new PlaceResourceAction() { Client = player2, ResourceIdentifier = "1", ResourcePosition = new Integer2(3, 3) }); gameView.Apply(new EndTurnAction() { Client = player1 }); gameView.Apply(new DeclareResourceAction() { Client = player2, ResourceIdentifier = "2" }); gameView.Apply(new PlaceResourceAction() { Client = player1, ResourceIdentifier = "2", ResourcePosition = new Integer2(2, 1) }); gameView.Apply(new PlaceResourceAction() { Client = player2, ResourceIdentifier = "2", ResourcePosition = new Integer2(2, 1) }); gameView.Apply(new EndTurnAction() { Client = player2 }); gameView.Apply(new DeclareResourceAction() { Client = player1, ResourceIdentifier = "3" }); gameView.Apply(new PlaceResourceAction() { Client = player1, ResourceIdentifier = "3", ResourcePosition = new Integer2(1, 2) }); gameView.Apply(new PlaceResourceAction() { Client = player2, ResourceIdentifier = "3", ResourcePosition = new Integer2(1, 2) }); DrawGameState(gameView); gameView.Apply(new BuildBuildingAction() { Client = player1, BuildingIdentifier = "building", BuildingPosition = new Integer2(2, 2), Offset = new Integer2(1, 1), Orientation = BuildingOrientation.None }); gameView.Apply(new EndTurnAction() { Client = player1 }); DrawGameState(gameView); }
public void AcceptInput(LocalId localId, GameCommand command) { if (command is StartGameCommand startGameCommand) { var gameRules = LobbyView.Load <GameRulesTemplate>(Lobby.GameData.Resources["gamerules/default-rules.json"]); var packTemplates = LobbyView.LoadAll <BuildingPackTemplate>(Lobby.GameData.Tags["type-buildingpack"]) .ToDictionary(template => template.Identifier); var resourceTemplates = LobbyView.LoadAll <ResourceTemplate>(Lobby.GameData.Tags["type-resource"]); var rand = new Random(); var sharedBuildings = gameRules.SharedCards .Select(card => packTemplates[card]) .Select(pack => Lobby.BuildingTemplates.Where(building => building.Value.PackIdentifier == pack.Identifier).ToArray()) .ToArray(); var playerBuildings = gameRules.PlayerCards .Select(card => packTemplates[card]) .Select(pack => Lobby.BuildingTemplates.Where(building => building.Value.PackIdentifier == pack.Identifier).ToArray()) .ToArray(); var globalCardSlots = sharedBuildings.Select(pack => { if (pack == null || pack.Length == 0) { return(null); } return(new GlobalCardSlot() { BuildingIdentifier = pack[rand.Next(0, pack.Length)].Key }); }).ToArray(); var gameplayPlayers = new List <GameplayPlayer>(Lobby.Players.Count); foreach (var lobbyPlayer in Lobby.Players) { var gameplayPlayer = new GameplayPlayer { OwnerId = lobbyPlayer.OwnerId, CurrentScore = new StatInstance(), ResourceHand = new List <string>(), }; var thisPlayerBuildings = playerBuildings .Select(pack => { if (pack == null || pack.Length == 0) { return(null); } return(pack[rand.Next(0, pack.Length)].Key); }) .Select(cardId => new SpecialCardSlot() { BuildingIdentifier = cardId }) .ToList(); gameplayPlayer.SpecialCards = thisPlayerBuildings; gameplayPlayer.Board = new GameBoard(); gameplayPlayer.Buildings = globalCardSlots.Select(building => { var buildingTemplate = Lobby.BuildingTemplates[building.BuildingIdentifier]; return(new BoardCardSlot() { BuildingIdentifier = building.BuildingIdentifier, BoardEffect = buildingTemplate.BoardEffectGraph?.Unpack()?.Create() }); }).ToList(); gameplayPlayers.Add(gameplayPlayer); } var procedure = new StartGameProcedure() { Gameplay = new GameplayView() { Players = new GameplayPlayerCollection(gameplayPlayers), Buildings = globalCardSlots, CurrentPlayersTurn = 0, DeclaredResource = false, } }; RemoteCall(procedure); } else if (command is DeclareResourceCommand declareResourceCommand) { var procedure = new DeclareResourceProcedure() { Player = localId, ResourceIdentifier = declareResourceCommand.ResourceIdentifier }; RemoteCall(procedure); } else if (command is PlaceResourceCommand placeResourceCommand) { var procedure = new PlaceResourceProcedure() { Player = localId, ResourceIdentifier = placeResourceCommand.ResourceIdentifier, ResourcePosition = placeResourceCommand.ResourcePosition }; RemoteCall(procedure); } else if (command is BuildBuildingCommand buildBuildingCommand) { var procedure = new BuildBuildingProcedure() { Player = localId, BuildingIdentifier = buildBuildingCommand.BuildingIdentifier, BuildingPosition = buildBuildingCommand.BuildingPosition, Offset = buildBuildingCommand.Offset, Orientation = buildBuildingCommand.Orientation }; RemoteCall(procedure); } else if (command is EndTurnCommand endTurnCommand) { var procedure = new EndTurnProcedure() { Player = localId }; RemoteCall(procedure); } }
public GamePlayer GetPlayerForOwner(LocalId owner) { return(Players.Where(player => player.OwnerId == owner).FirstOrDefault()); }
private void HandleInput() { if (currentEvent.type == EventType.MouseUp) { switch (View.CurrentMode) { case BehaviourEditorView.ControlMode.NodeDragging: currentEvent.Use(); foreach (string selectedNode in View.Selection) { var nodesField = View.EditorObject.Fields["Nodes"]; var selectedNodeData = (nodesField.Value as EditorDictionary).KeyValuePairs[selectedNode].Value as EditorObject; var editor = selectedNodeData.Fields["Editor"].Value as EditorObject; var editorPosition = editor.Fields["Position"].Value as EditorObject; var posX = editorPosition.Fields["x"].Value as EditorValue; posX.ApplyModifiedProperties(); var posY = editorPosition.Fields["y"].Value as EditorValue; posY.ApplyModifiedProperties(); } View.CurrentMode = BehaviourEditorView.ControlMode.None; break; case BehaviourEditorView.ControlMode.ViewDragging: View.CurrentMode = BehaviourEditorView.ControlMode.None; break; case BehaviourEditorView.ControlMode.CreatingConnection: View.CurrentMode = BehaviourEditorView.ControlMode.None; break; } Window.Repaint(); } else if (currentEvent.type == EventType.KeyDown) { if (currentEvent.keyCode == KeyCode.Space) { var position = new PackageNodePosition() { x = (int)currentEvent.mousePosition.x, y = (int)currentEvent.mousePosition.y }; var window = new BehaviourGraphAddNodeDropdown(BehaviourManifest.CreateFromAppDomain(AppDomain.CurrentDomain), (newNodeObject) => { string newNodeType = (string)newNodeObject; var graphEditorNodesField = View.EditorObject.Fields["Nodes"]; var graphEditorNodes = graphEditorNodesField.Value as EditorDictionary; string newId = LocalId.NewId().ToString(); graphEditorNodes.Add(newId); var newNode = graphEditorNodes.KeyValuePairs[newId]; var nodeData = new JObject(); /*newNode.SetValue(new SerializedNode() * { * Type = newNodeType, * Data = nodeData, * Editor = new PackageNodeEditor() * { * Position = position * } * }); * newNode.ApplyModifiedProperties(); */ Window.Repaint(); }); window.Show(new Rect(currentEvent.mousePosition.x, currentEvent.mousePosition.y, 0, 0)); } else if (currentEvent.keyCode == KeyCode.Delete) { var graphEditorNodesField = View.EditorObject.Fields["Nodes"]; var graphEditorNodes = graphEditorNodesField.Value as EditorDictionary; foreach (string node in View.Selection) { graphEditorNodes.Remove(node); } } } else if (currentEvent.type == EventType.MouseDrag) { switch (View.CurrentMode) { case BehaviourEditorView.ControlMode.NodeDragging: foreach (string selectedNode in View.Selection) { var nodesField = View.EditorObject.Fields["Nodes"]; var selectedNodeData = (nodesField.Value as EditorDictionary).KeyValuePairs[selectedNode].Value as EditorObject; var editor = selectedNodeData.Fields["Editor"].Value as EditorObject; var editorPosition = editor.Fields["Position"].Value as EditorObject; var posX = editorPosition.Fields["x"].Value as EditorValue; posX.SetValue(posX.GetValue <int>() + ((int)currentEvent.delta.x)); var posY = editorPosition.Fields["y"].Value as EditorValue; posY.SetValue(posY.GetValue <int>() + ((int)currentEvent.delta.y)); } break; case BehaviourEditorView.ControlMode.ViewDragging: View.PanPosition += currentEvent.delta; break; } Window.Repaint(); } else if (currentEvent.type == EventType.MouseDown) { if (Position.Contains(currentEvent.mousePosition)) { GUI.UnfocusWindow(); GUI.FocusControl(""); View.CurrentMode = BehaviourEditorView.ControlMode.ViewDragging; currentEvent.Use(); Window.Repaint(); } } }
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); }
public void CreateSuccessfully() { Assert.Ignore(); var player1 = LocalId.NewShortId(); var player2 = LocalId.NewShortId(); PackageExplorer explorer = null; var gameView = new LobbyView(); gameView.SetupDependancies(explorer); gameView.Apply(new PlayerJoinedProcedure() { OwnerId = player1, DisplayName = "Player 1" }); gameView.Apply(new PlayerJoinedProcedure() { OwnerId = player2, DisplayName = "Player 2" }); gameView.Apply(new StartGameProcedure() { Gameplay = new GameplayView() { } }); gameView.Apply(new DeclareResourceProcedure() { Player = player1, ResourceIdentifier = "1" }); gameView.Apply(new PlaceResourceProcedure() { Player = player1, ResourceIdentifier = "1", ResourcePosition = new Integer2(1, 1) }); gameView.Apply(new PlaceResourceProcedure() { Player = player2, ResourceIdentifier = "1", ResourcePosition = new Integer2(3, 3) }); gameView.Apply(new EndTurnProcedure() { Player = player1 }); gameView.Apply(new DeclareResourceProcedure() { Player = player2, ResourceIdentifier = "2" }); gameView.Apply(new PlaceResourceProcedure() { Player = player1, ResourceIdentifier = "2", ResourcePosition = new Integer2(2, 1) }); gameView.Apply(new PlaceResourceProcedure() { Player = player2, ResourceIdentifier = "2", ResourcePosition = new Integer2(2, 1) }); gameView.Apply(new EndTurnProcedure() { Player = player2 }); gameView.Apply(new DeclareResourceProcedure() { Player = player1, ResourceIdentifier = "3" }); gameView.Apply(new PlaceResourceProcedure() { Player = player1, ResourceIdentifier = "3", ResourcePosition = new Integer2(1, 2) }); gameView.Apply(new PlaceResourceProcedure() { Player = player2, ResourceIdentifier = "3", ResourcePosition = new Integer2(1, 2) }); DrawGameState(gameView); gameView.Apply(new BuildBuildingProcedure() { Player = player1, BuildingIdentifier = "building", BuildingPosition = new Integer2(2, 2), Offset = new Integer2(1, 1), Orientation = BuildingOrientation.None }); gameView.Apply(new EndTurnProcedure() { Player = player1 }); DrawGameState(gameView); }
private void HandleInput() { if (CurrentEvent.type == EventType.MouseUp) { switch (View.CurrentMode) { case BehaviourEditorView.ControlMode.NodeDragging: CurrentEvent.Use(); foreach (string selectedNode in View.Selection) { var pos = View.GraphField["Nodes"][selectedNode]["Editor"]["Position"]; var posX = pos["x"]; posX.ApplyModifiedProperties(); var posY = pos["y"]; posY.ApplyModifiedProperties(); } View.CurrentMode = BehaviourEditorView.ControlMode.None; break; case BehaviourEditorView.ControlMode.ViewDragging: View.CurrentMode = BehaviourEditorView.ControlMode.None; break; case BehaviourEditorView.ControlMode.CreatingConnection: View.CurrentMode = BehaviourEditorView.ControlMode.None; break; } Window.Repaint(); } else if (CurrentEvent.type == EventType.KeyDown) { if (CurrentEvent.keyCode == KeyCode.Space) { var graphEditorNodes = View.GraphField["Nodes"]; string newId = LocalId.NewId().ToString(); graphEditorNodes.Add(newId); var newNode = graphEditorNodes[newId]; newNode.SetValue(new SerializedNode() { Type = "RPGCore.Demo.Nodes.AddNode", Data = new JObject("{}") }); newNode.ApplyModifiedProperties(); } else if (CurrentEvent.keyCode == KeyCode.Delete) { var graphEditorNodes = View.GraphField["Nodes"]; foreach (string node in View.Selection) { graphEditorNodes.Remove(node); } } } else if (CurrentEvent.type == EventType.MouseDrag) { switch (View.CurrentMode) { case BehaviourEditorView.ControlMode.NodeDragging: foreach (string selectedNode in View.Selection) { var pos = View.GraphField["Nodes"][selectedNode]["Editor"]["Position"]; var posX = pos["x"]; posX.SetValue(posX.GetValue <int>() + ((int)CurrentEvent.delta.x)); var posY = pos["y"]; posY.SetValue(posY.GetValue <int>() + ((int)CurrentEvent.delta.y)); } break; case BehaviourEditorView.ControlMode.ViewDragging: View.PanPosition += CurrentEvent.delta; break; } Window.Repaint(); } else if (CurrentEvent.type == EventType.MouseDown) { if (ScreenRect.Contains(CurrentEvent.mousePosition)) { GUI.UnfocusWindow(); GUI.FocusControl(""); View.CurrentMode = BehaviourEditorView.ControlMode.ViewDragging; CurrentEvent.Use(); Window.Repaint(); } } }
public void Start() { // Import the project var importPipeline = new ImportPipeline(); importPipeline.ImportProcessors.Add(new BoardGameResourceImporter()); var projectExplorer = ProjectExplorer.Load("Content/BoardGame", importPipeline); // Build the project to a package. var consoleRenderer = new BuildConsoleRenderer(); var buildPipeline = new BuildPipeline(); buildPipeline.Exporters.Add(new BhvrExporter()); buildPipeline.BuildActions.Add(consoleRenderer); consoleRenderer.DrawProgressBar(32); projectExplorer.Export(buildPipeline, "BoardGame/Temp"); Console.WriteLine("Exported package..."); 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(playerB, new EndTurnCommand()); DrawGameState(gameServer.Lobby); }
public bool RemovePlayerWithId(LocalId ownerId) { var player = internalCollection.Find(player => player.OwnerId == ownerId); return(RemovePlayer(player)); }
public bool ContainsPlayerWithId(LocalId ownerId) { return(internalCollection.Any(player => player.OwnerId == ownerId)); }