/// <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); }
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; }
/// <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; }
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); } }
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); }
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 { }); } }
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 } }
/// <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()); }
/// <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); }
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; } } }
/// <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); }
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 }