Ejemplo n.º 1
0
 /// <summary>
 /// Constructor
 /// </summary>
 /// <param name="model">The associated gamepiece model</param>
 /// <param name="width">The width of the gamepiece</param>
 /// <param name="height">The height of the gamepiece</param>
 public GamepieceViewModel(Gamepiece model, double width, double height)
 {
     GetWidth   = width;
     GetHeight  = height;
     Piece      = model;
     PieceColor = GetColor(model.Owner);
     PieceShape = GetShape(model.PieceShape);
 }
Ejemplo n.º 2
0
        private void Spawn(Gamepiece g)
        {
            GameObject gamepieceClone = Instantiate(GameObject.Find(g.name).GetComponentInParent <BRigidBody>().gameObject, g.spawnpoint, UnityEngine.Quaternion.identity);

            gamepieceClone.name = g.name + "(Clone)";
            gamepieceClone.GetComponent <BRigidBody>().collisionFlags = BulletSharp.CollisionFlags.None;
            gamepieceClone.GetComponent <BRigidBody>().velocity       = UnityEngine.Vector3.zero;
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Spawn Gamepiece Clone
        /// </summary>
        /// <param name="g">Gamepiece class</param>
        private void Spawn(Gamepiece g)
        {
            GameObject gamepieceClone = Instantiate(GameObject.Find(g.name).GetComponentInParent <BRigidBody>().gameObject, g.spawnpoint, UnityEngine.Quaternion.identity); //game object creation

            gamepieceClone.transform.eulerAngles = g.spawnorientation;
            gamepieceClone.name = g.name + "(Clone)"; //add clone identifier to gamepiece name
            //physics
            gamepieceClone.GetComponent <BRigidBody>().collisionFlags = BulletSharp.CollisionFlags.None;
            gamepieceClone.GetComponent <BRigidBody>().velocity       = UnityEngine.Vector3.zero;
        }
Ejemplo n.º 4
0
        public void OnClearButtonClicked()
        {
            Gamepiece g = FieldDataHandler.gamepieces[gamepieceIndex];

            GameObject[] gameObjects = GameObject.FindObjectsOfType <GameObject>();
            dpmRobot.DestroyAllHeld(true, g.name);
            foreach (GameObject o in gameObjects.Where(o => o.name.Equals(g.name + "(Clone)")))
            {
                GameObject.Destroy(o);
            }
        }
Ejemplo n.º 5
0
        public DriverPractice GetDriverPractice(Gamepiece g)
        {
            DriverPractice dp = new DriverPractice(g.name, "node_0.bxda", "node_0.bxda", UnityEngine.Vector3.zero, UnityEngine.Vector3.zero);

            if (DPMDataHandler.dpmodes.Where(d => d.gamepiece.Equals(g.name)).Count() > 0)
            {
                dp = DPMDataHandler.dpmodes.Where(d => d.gamepiece.Equals(g.name)).ToArray()[0];
            }
            else
            {
                DPMDataHandler.dpmodes.Add(dp);
                DPMDataHandler.WriteRobot();
                SetAllInteractors();
            }
            return(dp);
        }
Ejemplo n.º 6
0
        public void OnSpawnButtonClicked()
        {
            Gamepiece  g = FieldDataHandler.gamepieces[gamepieceIndex];
            GameObject gamepieceClone = GameObject.Instantiate(GameObject.Find(g.name).GetComponentInParent <BRigidBody>().gameObject, g.spawnpoint, UnityEngine.Quaternion.identity);

            gamepieceClone.name = g.name + "(Clone)";
            gamepieceClone.GetComponent <BRigidBody>().collisionFlags = BulletSharp.CollisionFlags.None;
            gamepieceClone.GetComponent <BRigidBody>().velocity       = UnityEngine.Vector3.zero;

            if (PlayerPrefs.GetInt("analytics") == 1)
            {
                Analytics.CustomEvent("Spawned Gamepiece", new Dictionary <string, object> //for analytics tracking
                {
                });
            }
        }
Ejemplo n.º 7
0
 private void Nakresliznak(Graphics g, Gamepiece piece, int x, int y)
 {
     if (!Vypocet.Jevrozmezi(x, y))                                //Zkouším jestli je vykreslované pole v hracím poly
     {
         throw new Exception("Souřadnice jsou mimo hrací plochu"); //Ošetření výjimky
     }
     if (piece == Gamepiece.X)
     {
         g.DrawLine(PeroX, x * velikostpolicka + 1, y * velikostpolicka + 1, x * velikostpolicka + velikostpolicka - 1, y * velikostpolicka + velikostpolicka - 1); //kreslím 1. čáru křížku (Z levého horního rohu do dolního pravého rohu)
         g.DrawLine(PeroX, x * velikostpolicka + 1, y * velikostpolicka + velikostpolicka - 1, x * velikostpolicka + velikostpolicka - 1, y * velikostpolicka + 1); //kreslím 2. čáru křížku (Z levého dolního rohu do horního pravého rohu)
     }
     if (piece == Gamepiece.O)
     {
         g.DrawEllipse(PeroO, x * velikostpolicka + 1, y * velikostpolicka + 1, velikostpolicka - 2, velikostpolicka - 2); //kreslím kolečko
     }
 }
Ejemplo n.º 8
0
        /// <summary>
        /// Clear gamepiece clones
        /// </summary>
        public void OnClearButtonClicked()
        {
            Gamepiece g = FieldDataHandler.gamepieces[gamepieceIndex];

            GameObject[] gameObjects = GameObject.FindObjectsOfType <GameObject>();
            dpmRobot.DestroyAllHeld(true, g.name); //destroy clones held by robot
            //Destory all clones
            foreach (GameObject o in gameObjects.Where(o => o.name.Equals(g.name + "(Clone)")))
            {
                GameObject.Destroy(o);
            }

            AnalyticsManager.GlobalInstance.LogEventAsync(AnalyticsLedger.EventCatagory.DPMTab,
                                                          AnalyticsLedger.EventAction.Clicked,
                                                          "Clear Gamepiece",
                                                          AnalyticsLedger.getMilliseconds().ToString());
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Spawn gamepiece clone
        /// </summary>
        public void OnSpawnButtonClicked()
        {
            AnalyticsManager.GlobalInstance.LogEventAsync(AnalyticsLedger.EventCatagory.DPMTab,
                                                          AnalyticsLedger.EventAction.Clicked,
                                                          "Spawn Gamepiece",
                                                          AnalyticsLedger.getMilliseconds().ToString());

            Gamepiece  g = FieldDataHandler.gamepieces[gamepieceIndex];
            GameObject gamepieceClone = GameObject.Instantiate(Auxiliary.FindGameObject(g.name), g.spawnpoint, Quaternion.Euler(g.spawnorientation)); //clone gamepiece - exact clone will keep joints

            gamepieceClone.SetActive(true);                                                                                                           //show in case all gamepieces are hidden
            if (gamepieceClone.GetComponent <BFixedConstraintEx>() != null)
            {
                GameObject.Destroy(gamepieceClone.GetComponent <BFixedConstraintEx>()); //remove joints from clone
            }
            gamepieceClone.name = g.name + "(Clone)";                                   //add clone tag to allow clear later
            gamepieceClone.GetComponent <BRigidBody>().collisionFlags = BulletSharp.CollisionFlags.None;
            gamepieceClone.GetComponent <BRigidBody>().velocity       = Vector3.zero;
        }
        /// <summary>
        /// Spawn gamepiece clone
        /// </summary>
        public void OnSpawnButtonClicked()
        {
            Gamepiece  g = FieldDataHandler.gamepieces[gamepieceIndex];
            GameObject gamepieceClone = GameObject.Instantiate(Auxiliary.FindGameObject(g.name), g.spawnpoint, UnityEngine.Quaternion.identity); //clone gamepiece - exact clone will keep joints

            gamepieceClone.SetActive(true);                                                                                                      //show in case all gamepieces are hidden
            if (gamepieceClone.GetComponent <BFixedConstraintEx>() != null)
            {
                GameObject.Destroy(gamepieceClone.GetComponent <BFixedConstraintEx>()); //remove joints from clone
            }
            gamepieceClone.name = g.name + "(Clone)";                                   //add clone tag to allow clear later
            gamepieceClone.GetComponent <BRigidBody>().collisionFlags = BulletSharp.CollisionFlags.None;
            gamepieceClone.GetComponent <BRigidBody>().velocity       = UnityEngine.Vector3.zero;

            if (PlayerPrefs.GetInt("analytics") == 1)
            {
                Analytics.CustomEvent("Spawned Gamepiece", new Dictionary <string, object> //for analytics tracking
                {
                });
            }
        }
        // Use this for initialization
        public override void Start()
        {
            #region init
            ui       = GameObject.Find("ResetGamepieceSpawnpointUI");
            helpMenu = Auxiliary.FindObject(ui, "Help");
            toolbar  = Auxiliary.FindObject(ui, "ResetStateToolbar");
            overlay  = Auxiliary.FindObject(ui, "Overlay");
            #endregion

            Gamepiece gamepiece = FieldDataHandler.gamepieces[gamepieceIndex];
            //gamepiece indicator
            if (spawnIndicator != null)
            {
                GameObject.Destroy(spawnIndicator);
            }
            if (spawnIndicator == null)
            {
                spawnIndicator = GameObject.Instantiate(Auxiliary.FindGameObject(gamepiece.name), new UnityEngine.Vector3(0, 3, 0), UnityEngine.Quaternion.identity);
                spawnIndicator.SetActive(true);
                spawnIndicator.name = "SpawnIndicator";
                GameObject.Destroy(spawnIndicator.GetComponent <BRigidBody>());
                GameObject.Destroy(spawnIndicator.GetComponent <BCollisionShape>());
                GameObject.Destroy(spawnIndicator.GetComponent <Tracker>());
                if (spawnIndicator.transform.GetChild(0) != null)
                {
                    spawnIndicator.transform.GetChild(0).name = "SpawnIndicatorMesh";
                }
                Renderer render = spawnIndicator.GetComponentInChildren <Renderer>();
                render.material.shader = Shader.Find("Transparent/Diffuse");
                Color newColor = render.material.color;
                newColor.a            = 0.6f;
                render.material.color = newColor;
            }
            spawnIndicator.transform.position = gamepiece.spawnpoint;

            //move arrow attachment
            GameObject moveArrows = GameObject.Instantiate(Resources.Load <GameObject>("Prefabs\\MoveArrows"));
            moveArrows.name                    = "IndicatorMoveArrows";
            moveArrows.transform.parent        = spawnIndicator.transform;
            moveArrows.transform.localPosition = UnityEngine.Vector3.zero;

            //IMPORTANT
            moveArrows.GetComponent <MoveArrows>().Translate = (translation) =>
                                                               spawnIndicator.transform.Translate(translation, Space.World);

            StateMachine.SceneGlobal.Link <GamepieceSpawnState>(moveArrows);

            //camera stuff
            DynamicCamera dynamicCamera = UnityEngine.Camera.main.transform.GetComponent <DynamicCamera>();
            lastCameraState = dynamicCamera.ActiveState;
            dynamicCamera.SwitchCameraState(new DynamicCamera.ConfigurationState(dynamicCamera, spawnIndicator));

            //help menu
            Button resetButton = GameObject.Find("ResetButton").GetComponent <Button>();
            resetButton.onClick.RemoveAllListeners();
            resetButton.onClick.AddListener(ResetSpawn);
            Button helpButton = GameObject.Find("HelpButton").GetComponent <Button>();
            helpButton.onClick.RemoveAllListeners();
            helpButton.onClick.AddListener(HelpMenu);
            Button returnButton = GameObject.Find("ReturnButton").GetComponent <Button>();
            returnButton.onClick.RemoveAllListeners();
            returnButton.onClick.AddListener(ReturnToMainState);
            Button closeHelp = Auxiliary.FindObject(helpMenu, "CloseHelpButton").GetComponent <Button>();
            closeHelp.onClick.RemoveAllListeners();
            closeHelp.onClick.AddListener(CloseHelpMenu);
        }
Ejemplo n.º 12
0
        private void DrawGameArea()
        {
            bool doneDrawingBackground = false;
            int  nextX      = 0; // upper left x-coordinate of game square pixel
            int  nextY      = 0; // upper left y-coordinate of game square pixel
            int  index      = 0;
            int  rowCounter = 0;
            int  colCounter;
            bool nextIsOdd = false;

            // Our gamepieces
            double pieceWidth  = (gameboardVM.GameboardVM[index].SquareWidth * 0.8);
            double pieceHeight = (gameboardVM.GameboardVM[index].SquareHeight * 0.8);

            // Compute the offset to center the piece in the game square
            double xOffset = ((int)gameboardVM.GameboardVM[index].SquareWidth - pieceWidth) / 2.0;
            double yOffset = ((int)gameboardVM.GameboardVM[index].SquareHeight - pieceHeight) / 2.0;


            while (!doneDrawingBackground)
            {
                // Our game square
                Rectangle rect = new Rectangle
                {
                    Width           = (int)gameboardVM.GameboardVM[index].SquareWidth,
                    Height          = (int)gameboardVM.GameboardVM[index].SquareHeight,
                    Fill            = Brushes.DarkGreen,
                    StrokeThickness = 1,
                    Stroke          = Brushes.Black
                };

                GameArea.Children.Add(rect);
                Canvas.SetTop(rect, nextY);
                Canvas.SetLeft(rect, nextX);

                // Create our game pieces for the board based on the gameboard model
                Gamepiece          piece   = new Gamepiece(gameboard.GameBoard[index].Piece.Owner, gameboard.GameBoard[index].Piece.PieceShape);
                GamepieceViewModel pieceVM = new GamepieceViewModel(gameboardVM.GameboardVM[index].PieceVM.Piece, pieceWidth, pieceHeight);
                GameArea.Children.Add(pieceVM.PieceShape);
                Canvas.SetTop(pieceVM.PieceShape, nextY + yOffset);
                Canvas.SetLeft(pieceVM.PieceShape, nextX + xOffset);

                // if there's not a game piece in the square, add the click and hover events
                if (piece.Owner == Tokens.TokenUnclaimed)
                {
                    // Add a mouse click event to the game square
                    rect.MouseUp += new MouseButtonEventHandler(square_MouseUp);

                    // Add a mouse hover on enter / leave event
                    rect.MouseEnter += new MouseEventHandler(shape_MouseEnter);
                    rect.MouseLeave += new MouseEventHandler(shape_MouseLeave);
                }

                colCounter = index % gameboard.rows;

                nextIsOdd = !nextIsOdd;
                nextX    += (int)gameboardVM.GameboardVM[index].SquareWidth;

                // Make the top and bottom border rows blue
                if ((rowCounter == 0) || (rowCounter == gameboard.rows - 1))
                {
                    rect.Fill = Brushes.Blue;
                }

                // Make the left and right border cols red
                if ((colCounter % gameboard.cols == 0) || (colCounter % gameboard.cols == (gameboard.cols - 1)))
                {
                    rect.Fill = Brushes.Red;
                }

                // If we've reached the end of the current
                if (colCounter == gameboard.cols - 1)
                {
                    nextX  = 0;
                    nextY += (int)gameboardVM.GameboardVM[index].SquareHeight;
                    rowCounter++;
                    nextIsOdd = (rowCounter % 2 != 0);
                }

                index++;

                // If we've reached the last element of the gameboard, then set the flag for done
                if ((rowCounter >= gameboard.rows) || (index >= gameboardVM.GameboardVM.Count))
                {
                    doneDrawingBackground = true;
                }
            }
        }
Ejemplo n.º 13
0
 /// <summary>
 /// Adds a piece to the associated gameboard square's
 /// model and view model.
 /// </summary>
 /// <param name="index">the square index to add the piece</param>
 /// <param name="piece">the piece to add</param>
 public void AddPiece(int index, Gamepiece piece)
 {
     GameboardVM[index].AddPiece(piece);
 }
Ejemplo n.º 14
0
        private void Hraciplocha_MouseClick(object sender, MouseEventArgs e)
        {
            int x = e.X / velikostpolicka;  //Zjišťuji souřadnici kliknutí x
            int y = e.Y / velikostpolicka;  //Zjišťuji souřadnici klisnutí y

            if (!Vypocet.Jevrozmezi(x, y))  //testuji jsetli se kliklo do mřížky
            {
                return;
            }
            if (x == 0)                                 //Testuji jestli se kliklo do prvního sloupečku
            {
                y = (velikost - 1) - a;                 //nastavuji y aby bylo jako nejnižší volné pole v mřížce
                a = a + 1;                              //zaznamenávám že je obsazeno další políčko
                if (y <= -1)                            //testuji jestli je sloupec plný
                {
                    MessageBox.Show("Sloupec je plný"); //když je sloupec plný vyskoší okénko
                    return;                             //informaci posílám do výpočtů
                }
                else
                {
                    w = w - 1;      //když není sloupec plný zaznamenávám, že je o jedno volné políčko méně (identifikace remízy)
                }
            }
            if (x == 1)
            {
                y = (velikost - 1) - b;
                b = b + 1;
                if (y <= -1)
                {
                    MessageBox.Show("Sloupec je plný");
                    return;
                }
                else
                {
                    w = w - 1;
                }
            }
            if (x == 2)
            {
                y = (velikost - 1) - c;
                c = c + 1;
                if (y <= -1)
                {
                    MessageBox.Show("Sloupec je plný");
                    return;
                }
                else
                {
                    w = w - 1;
                }
            }
            if (x == 3)
            {
                y = (velikost - 1) - d;
                d = d + 1;
                if (y <= -1)
                {
                    MessageBox.Show("Sloupec je plný");
                    return;
                }
                else
                {
                    w = w - 1;
                }
            }
            if (x == 4)
            {
                y = (velikost - 1) - f;
                f = f + 1;
                if (y <= -1)
                {
                    MessageBox.Show("Sloupec je plný");
                    return;
                }
                else
                {
                    w = w - 1;
                }
            }
            if (x == 5)
            {
                y = (velikost - 1) - g;
                g = g + 1;
                if (y <= -1)
                {
                    MessageBox.Show("Sloupec je plný");
                    return;
                }
                else
                {
                    w = w - 1;
                }
            }
            if (x == 6)
            {
                y = (velikost - 1) - h;
                h = h + 1;
                if (y <= -1)
                {
                    MessageBox.Show("Sloupec je plný");
                    return;
                }
                else
                {
                    w = w - 1;
                }
            }
            if (x == 7)
            {
                y = (velikost - 1) - i;
                i = i + 1;
                if (y <= -1)
                {
                    MessageBox.Show("Sloupec je plný");
                    return;
                }
                else
                {
                    w = w - 1;
                }
            }
            if (x == 8)
            {
                y = (velikost - 1) - j;
                j = j + 1;
                if (y <= -1)
                {
                    MessageBox.Show("Sloupec je plný");
                    return;
                }
                else
                {
                    w = w - 1;
                }
            }
            if (x == 9)
            {
                y = (velikost - 1) - k;
                k = k + 1;
                if (y <= -1)
                {
                    MessageBox.Show("Sloupec je plný");
                    return;
                }
                else
                {
                    w = w - 1;
                }
            }
            if (x == 10)
            {
                y = (velikost - 1) - l;
                l = l + 1;
                if (y <= -1)
                {
                    MessageBox.Show("Sloupec je plný");
                    return;
                }
                else
                {
                    w = w - 1;
                }
            }
            if (x == 11)
            {
                y = (velikost - 1) - m;
                m = m + 1;
                if (y <= -1)
                {
                    MessageBox.Show("Sloupec je plný");
                    return;
                }
                else
                {
                    w = w - 1;
                }
            }
            if (x == 12)
            {
                y = (velikost - 1) - n;
                n = n + 1;
                if (y <= -1)
                {
                    MessageBox.Show("Sloupec je plný");
                    return;
                }
                else
                {
                    w = w - 1;
                }
            }
            if (x == 13)
            {
                y = (velikost - 1) - o;
                o = o + 1;
                if (y <= -1)
                {
                    MessageBox.Show("Sloupec je plný");
                    return;
                }
                else
                {
                    w = w - 1;
                }
            }
            if (x == 14)
            {
                y = (velikost - 1) - p;
                p = p + 1;
                if (y <= -1)
                {
                    MessageBox.Show("Sloupec je plný");
                    return;
                }
                else
                {
                    w = w - 1;
                }
            }
            if (x == 15)
            {
                y = (velikost - 1) - q;
                q = q + 1;
                if (y <= -1)
                {
                    MessageBox.Show("Sloupec je plný");
                    return;
                }
                else
                {
                    w = w - 1;
                }
            }
            if (x == 16)
            {
                y = (velikost - 1) - r;
                r = r + 1;
                if (y <= -1)
                {
                    MessageBox.Show("Sloupec je plný");
                    return;
                }
                else
                {
                    w = w - 1;
                }
            }
            if (x == 17)
            {
                y = (velikost - 1) - s;
                s = s + 1;
                if (y <= -1)
                {
                    MessageBox.Show("Sloupec je plný");
                    return;
                }
                else
                {
                    w = w - 1;
                }
            }
            if (x == 18)
            {
                y = (velikost - 1) - t;
                t = t + 1;
                if (y <= -1)
                {
                    MessageBox.Show("Sloupec je plný");
                    return;
                }
                else
                {
                    w = w - 1;
                }
            }
            if (x == 19)
            {
                y = (velikost - 1) - u;
                u = u + 1;
                if (y <= -1)
                {
                    MessageBox.Show("Sloupec je plný");
                    return;
                }
                else
                {
                    w = w - 1;
                }
            }
            Vysledek vysledekhry = Vypocet.Pridejfigurku(x, y, hrac); //zaznamenávám x souřadnici, y souřadnici, a hráče (X nebo O)

            Refresh();                                                //Zapisuje figurku (obnovuje komponentu)
            if (vysledekhry == Vysledek.Vyhra)                        //testuji jestli vypočet nezaznamenal výhru
            {
                MessageBox.Show("Vyhrál hráč který měl: " + hrac);    //když zjistím, že někdo vyhrál vyskočí okénko
            }
            if (w == 0)                                               //testuji jestli je ještě nejaké políčko volné
            {
                MessageBox.Show("Remíza, žádný z hráčů nevyhrává");   //když zjistím, že žádné políčko není volné, vyskočí okénko remíza
            }
            hrac = Protihrac;                                         //střídání X a O
        }