Beispiel #1
0
 public ViewCharacter()
 {
     Id = new EntityRef()
     {
         EntityId = LocalId.NewId()
     };
 }
Beispiel #2
0
        public void MatchesIntegerLiteral()
        {
            var stringLiteral  = new LocalId("0xff001000");
            var integerLiteral = new LocalId(0xff001000);

            Assert.AreEqual(stringLiteral, integerLiteral);
        }
Beispiel #3
0
 public override byte[] ToBytes()
 {
     return(TLUtils.Combine(TLUtils.SignatureToBytes(Signature),
                            VolumeId.ToBytes(),
                            LocalId.ToBytes(),
                            Secret.ToBytes()));
 }
Beispiel #4
0
 public override void ToStream(Stream output)
 {
     output.Write(TLUtils.SignatureToBytes(Signature));
     output.Write(VolumeId.ToBytes());
     output.Write(LocalId.ToBytes());
     output.Write(Secret.ToBytes());
 }
Beispiel #5
0
 public override int GetHashCode()
 {
     unchecked
     {
         return(((Guid != null ? Guid.GetHashCode() : 0) * 397) ^ LocalId.GetHashCode());
     }
 }
Beispiel #6
0
        public void OnClientDisconnected(LocalId localId)
        {
            var playerJoinedProcedure = new PlayerLeftProcedure()
            {
                OwnerId = localId
            };

            RemoteCall(playerJoinedProcedure);
        }
Beispiel #7
0
        public void OnClientConnected(LocalId localId, string displayName)
        {
            var playerJoinedProcedure = new PlayerJoinedProcedure()
            {
                DisplayName = displayName,
                OwnerId     = localId
            };

            RemoteCall(playerJoinedProcedure);
        }
Beispiel #8
0
        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);
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
 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());
 }
Beispiel #11
0
 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)}");
     }
 }
Beispiel #13
0
 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);
         }
     }
 }
Beispiel #14
0
        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;
Beispiel #16
0
        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);
        }
Beispiel #17
0
        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);
            }
        }
Beispiel #18
0
 public GamePlayer GetPlayerForOwner(LocalId owner)
 {
     return(Players.Where(player => player.OwnerId == owner).FirstOrDefault());
 }
Beispiel #19
0
        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();
                }
            }
        }
Beispiel #20
0
        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);
        }
Beispiel #21
0
        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);
        }
Beispiel #22
0
        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();
                }
            }
        }
Beispiel #23
0
        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));
 }