public void InitializeSnake(Canvas canvas) { mCanvas = canvas; Point initialPosition = new Point(); initialPosition.X = Constants.CellWidth * 2; initialPosition.Y = 0; this.mLenght = 3; mSnake[0] = new SnakePart(); Canvas.SetLeft(mSnake[0].mSnakePart, initialPosition.X); Canvas.SetTop(mSnake[0].mSnakePart, initialPosition.Y); for (int i = 1; i < this.mLenght; ++i) { mSnake[i] = new SnakePart(); Canvas.SetLeft(mSnake[i].mSnakePart, initialPosition.X - Constants.CellWidth * i); Canvas.SetTop(mSnake[i].mSnakePart, initialPosition.Y); } for (int i = 0; i < this.mLenght; ++i) { canvas.Children.Add(mSnake[i].mSnakePart); } mDirection = Enumerations.Direction.Direction_Right; }
public static void HandleCollision(IUsableItem item, IBlock block, Enumerations.CollisionSide collision) { Contract.Requires(block != null); Contract.Requires(item != null); block.IsDestructable = true; foreach (IDoorTrigger doorTrigger in Room.CurrentRoomDoorTriggers) { if (doorTrigger.GameObjectType == Enumerations.GameObjectType.DoorTriggerUp) { doorTrigger.IsDestructable = true; } } IBlock newDoor = new BlockUpBombedOpening(); newDoor.Position = block.Position; IDoorTrigger newTrigger = new BlockUpOverBombed(); newTrigger.Position = new Vector2(Constant.UpOverBombedPositionNative.X * Game1.Instance.graphics.PreferredBackBufferWidth / Constant.OriginalNesWidth, (Constant.UpOverBombedPositionNative.Y + HUDConstants.HUDHeight) * Game1.Instance.graphics.PreferredBackBufferHeight / Constant.OriginalNesHeight); Room.CurrentRoomBlocks.Add(newDoor); Room.CurrentRoomDoorTriggers.Add(newTrigger); SoundManager.Instance.PlayFoundSecret(); int oppositeRoom = GameObjects.Instance.LevelListPosition - Constant.DungeonGridWidth; Enumerations.Direction doorDirection = Enumerations.Direction.Down; Enumerations.DoorType doorType = Enumerations.DoorType.Bombed; ToolsXML toolsXml = new ToolsXML(); toolsXml.ReplaceOppositeDoorNodeXML(oppositeRoom, doorType, doorDirection); }
//TODO don't allow the player to move to occupied tiles! public void Move(GameObject toTile, List <GameObject> allowedMovement) { GameObject tileTemp; var index = 0; bool activatedTrap; while (_myTile != toTile) { // print(index); tileTemp = allowedMovement.ElementAt(index++); if (tileTemp.GetComponent <script_Tile>().occupied) { myDirection = Enumerations.Direction.Choose; break; } _hasMoved = true; _myTile.GetComponent <script_Tile>().occupied = false; _myTile.GetComponent <script_Tile>().occupier = null; _myTile = tileTemp; _myTile.GetComponent <script_Tile>().occupied = true; _myTile.GetComponent <script_Tile>().occupier = gameObject; transform.position = _myTile.transform.position; availableMovement--; _availableMovementField.text = availableMovement.ToString(); //tile call method stepped on if not invisible activatedTrap = _myTile.GetComponent <script_Tile>().SteppedOn(gameObject); if (activatedTrap) { break; } } }
public static void DrawSprite(Int32 spr, Enumerations.Direction dir, Int32 frame, Int32 x, Int32 y) { var sp = Graphics.GetSprite(spr); if (sp.Texture == null) { return; } Int32 yoffset = 0; Int32 xoffset = (Int32)(sp.Texture.Size.X / 4) * frame; switch (dir) { case Enumerations.Direction.Up: yoffset = (Int32)(sp.Texture.Size.Y / 4) * 3; break; case Enumerations.Direction.Right: yoffset = (Int32)(sp.Texture.Size.Y / 4) * 2; break; case Enumerations.Direction.Down: yoffset = 0; break; case Enumerations.Direction.Left: yoffset = (Int32)(sp.Texture.Size.Y / 4); break; } sp.TextureRect = new IntRect(new Vector2i(xoffset, yoffset), new Vector2i((Int32)sp.Texture.Size.X / 4, (Int32)sp.Texture.Size.Y / 4)); sp.Position = new Vector2f(Graphics.OffSet.X + (x - ((Int32)sp.Texture.Size.X / 4) / 2), Graphics.OffSet.Y + (y - ((Int32)sp.Texture.Size.X / 4))); Screen.Draw(sp); }
public Goriya() { Sprite = EnemySpriteFactory.Instance.CreateSpriteEnemyGoriyaWalkDown(); Position = Constant.EnemyStartPosition; Velocity = Vector2.UnitY * EnemyConstants.GoriyaSpeed; facingDirection = Enumerations.Direction.Down; movementTimer = 0; DamageAmount = EnemyConstants.GoriyaDamageAmount; }
public Rope() { Sprite = EnemySpriteFactory.Instance.CreateSpriteEnemyRopeLeft(); Position = Constant.EnemyStartPosition; Velocity = Vector2.UnitX * EnemyConstants.RopeNormalSpeed; facingDirection = Enumerations.Direction.Left; movementTimer = 0; DamageAmount = EnemyConstants.RopeDamageAmount; }
public void SelectedUpdate() { if (myDirection == Enumerations.Direction.Choose) { myDirection = Enumerations.ChooseDirection(_canvasDirections); } if (Input.GetKeyUp(KeyCode.R) && _hasMoved == false) { myDirection = Enumerations.Direction.Choose; } }
public List <GameObject> GetAllowedMovement(GameObject myTile, ref Enumerations.Direction myDirection, int availableMovement) { var tiles = new List <GameObject>(); GameObject neighbor, tempTile = myTile; var i = 0; while (i++ < availableMovement) { neighbor = script_BoardController.GetTileNeighbor(tempTile, myDirection); if (neighbor == null) { return(tiles); } if (myDirection != Enumerations.Direction.Choose) { var check = false; foreach (var tag in tagsOfMovementTiles) { if (neighbor.tag == tag) { check = true; tempTile = neighbor; tiles.Add(neighbor); } } if (check == false) { if (tiles.Count == 0) { myDirection = Enumerations.Direction.Choose; } return(tiles); } } else { return(tiles); } } if (i >= availableMovement) { return(tiles); } Debug.LogError("problem"); return(null); }
private void MoveGoriya() { if (movementTimer == EnemyConstants.GoriyaMovementTimer) { Velocity = Vector2.UnitX * Constant.RNG.Next(-1, 2) * EnemyConstants.GoriyaSpeed; if (Velocity.X.Equals(0f)) { while (Velocity.Equals(Vector2.Zero)) { Velocity = Vector2.UnitY * Constant.RNG.Next(-1, 2) * EnemyConstants.GoriyaSpeed; } if (Velocity.Y > 0) { facingDirection = Enumerations.Direction.Down; Sprite = EnemySpriteFactory.Instance.CreateSpriteEnemyGoriyaWalkDown(); } else { facingDirection = Enumerations.Direction.Up; Sprite = EnemySpriteFactory.Instance.CreateSpriteEnemyGoriyaWalkUp(); } } else { if (Velocity.X > 0) { facingDirection = Enumerations.Direction.Right; Sprite = EnemySpriteFactory.Instance.CreateSpriteEnemyGoriyaWalkRight(); } else { facingDirection = Enumerations.Direction.Left; Sprite = EnemySpriteFactory.Instance.CreateSpriteEnemyGoriyaWalkLeft(); } } movementTimer = 0; } if (HasHitWall) { HasHitWall = false; TurnRight(EnemyConstants.GoriyaSpeed); } Position += Velocity; movementTimer++; }
public static void HandleCollision(ILink link, IBlock block, Enumerations.CollisionSide collision) { Contract.Requires(link != null); Contract.Requires(block != null); if (InventoryAgrees(link)) { block.IsDestructable = true; foreach (IDoorTrigger doorTrigger in Room.CurrentRoomDoorTriggers) { if (doorTrigger.GameObjectType == Enumerations.GameObjectType.DoorTriggerLeft) { doorTrigger.IsDestructable = true; } } foreach (IBlock blockDoor in Room.CurrentRoomBlocks) { if (block.GameObjectType == Enumerations.GameObjectType.DoorLeft) { blockDoor.IsDestructable = true; } } IBlock newDoor = new BlockLeftOpenDoor(); newDoor.Position = new Vector2(Constant.LeftDoorPositionNative.X * Game1.Instance.graphics.PreferredBackBufferWidth / Constant.OriginalNesWidth, (Constant.LeftDoorPositionNative.Y + HUDConstants.HUDHeight) * Game1.Instance.graphics.PreferredBackBufferHeight / Constant.OriginalNesHeight); IDoorTrigger newTrigger = new BlockLeftOverDoor(); newTrigger.Position = new Vector2(Constant.LeftOverDoorPositionNative.X * Game1.Instance.graphics.PreferredBackBufferWidth / Constant.OriginalNesWidth, (Constant.LeftOverDoorPositionNative.Y + HUDConstants.HUDHeight) * Game1.Instance.graphics.PreferredBackBufferHeight / Constant.OriginalNesHeight); Room.CurrentRoomBlocks.Add(newDoor); Room.CurrentRoomDoorTriggers.Add(newTrigger); SoundManager.Instance.PlayDoorStateChange(); int oppositeRoom = GameObjects.Instance.LevelListPosition - 1; Enumerations.Direction doorDirection = Enumerations.Direction.Right; Enumerations.DoorType doorType = Enumerations.DoorType.Locked; ToolsXML toolsXml = new ToolsXML(); toolsXml.ReplaceOppositeDoorNodeXML(oppositeRoom, doorType, doorDirection); } }
public int Move(GameObject toTile, List <GameObject> allowedMovement) { GameObject tileTemp; var index = 0; var tilesMoved = 0; bool activatedTrap; while (myTile != toTile) { // print(index); tileTemp = allowedMovement.ElementAt(index++); if (tileTemp.GetComponent <script_Tile>().occupied) { myDirection = Enumerations.Direction.Choose; break; } tilesMoved++; _hasMoved = true; myTile.GetComponent <script_Tile>().occupied = false; myTile.GetComponent <script_Tile>().occupier = null; myTile = tileTemp; myTile.GetComponent <script_Tile>().occupied = true; myTile.GetComponent <script_Tile>().occupier = gameObject; transform.position = myTile.transform.position; myRemainingMovement--; //tile call method stepped on if not invisible activatedTrap = myTile.GetComponent <script_Tile>().SteppedOn(gameObject); if (activatedTrap) { break; } } return(tilesMoved); }
private void Update() { if (Input.GetKeyUp(KeyCode.Tab)) { _healthBar.gameObject.SetActive(!_healthBar.gameObject.activeInHierarchy); } if (Input.GetKeyUp(KeyCode.N) && beginMyTurn == false && isMyTurn) { EndTurn(); } if (beginMyTurn) { _canvasLocal.gameObject.SetActive(true); _canvasWorld.gameObject.SetActive(true); myDirection = Enumerations.Direction.Choose; availableMovement = Utilities.RollDice(movementDice); _availableMovementField.text = availableMovement.ToString(); beginMyTurn = false; _attackedThisTurn = false; script_MovementPainter.RemoveAllowedMovementMarker(_allowedMovement); _allowedMovement = _myScript_MovementParser.GetAllowedMovement(_myTile, ref myDirection, availableMovement); script_MovementPainter.AddAllowedMovementMarker(_allowedMovement); } else if (isMyTurn) { if (placed && _myScript_AffectedBy.isStunned == false) { if (myDirection == Enumerations.Direction.Choose) { myDirection = Enumerations.ChooseDirection(_directions); //script_MovementPainter.RemoveAllowedMovementMarker(allowedMovement); _allowedMovement = _myScript_MovementParser.GetAllowedMovement(_myTile, ref myDirection, availableMovement); script_MovementPainter.AddAllowedMovementMarker(_allowedMovement); } if (Input.GetKeyUp(KeyCode.R) && _hasMoved == false) { myDirection = Enumerations.Direction.Choose; } if (Input.GetMouseButtonUp(1)) { altSelected = script_SelectObject.ReturnAlternateClick(); if (_allowedMovement.Contains(altSelected)) { if (script_BoardController.GetTileDistance(_myTile, altSelected) <= availableMovement) { Move(altSelected, _allowedMovement); } } script_MovementPainter.RemoveAllowedMovementMarker(_allowedMovement); _allowedMovement = _myScript_MovementParser.GetAllowedMovement(_myTile, ref myDirection, availableMovement); script_MovementPainter.AddAllowedMovementMarker(_allowedMovement); } if (Input.GetMouseButtonUp(0)) { if (selected.tag == "Monster" && script_BoardController.GetTileDistance(_myTile, selected) <= range && _attackedThisTurn == false) { Attack(selected.GetComponent <ICombatant>(), Enumerations.DamageType.Physical); } if ((selected.tag == "Door" || selected.tag == "OpenDoor") && script_BoardController.GetTileDistance(_myTile, selected) <= 1) { } // selected.GetComponent<scr_Door>().ToggleDoor(); } } if (Input.GetKeyUp(KeyCode.Space)) { if (placed == false) { if (selected.tag == "PlayerSpawn") { transform.position = selected.transform.position; _myTile = selected; placed = true; } else { Debug.Log("Select an eligible spawn tile"); } } } } }
public void SetDirection(Enumerations.Direction direction) { mDirection = direction; }
public void ReplaceOppositeDoorNodeXML(int roomNumber, Enumerations.DoorType doorType, Enumerations.Direction direction) { string currentDungeonFileName = ProjectPath + "\\Room\\CurrentDungeonState.xml"; string oldTrigger; string oldDoor; string newDoorTrigger; string newDoor; string stopBlock; Vector2 newOverDoorPosition; Vector2 newDoorPosition; switch (doorType) { case Enumerations.DoorType.Bombed: switch (direction) { case Enumerations.Direction.Left: oldTrigger = "BlockLeftOverWall"; oldDoor = "BlockUpBreakableWall"; newDoorTrigger = "BlockUpOverBombed"; newDoor = "BlockUpBombedOpening"; stopBlock = "NoStopBlock"; newOverDoorPosition = Constant.LeftOverBombedPosition; newDoorPosition = Constant.LeftDoorPositionNative; break; case Enumerations.Direction.Right: oldTrigger = "BlockRightOverWall"; oldDoor = "BlockRightBreakableWall"; newDoorTrigger = "BlockRightOverBombed"; newDoor = "BlockRightBombedOpening"; stopBlock = "NoStopBlock"; newOverDoorPosition = Constant.RightOverBombedPositionNative; newDoorPosition = Constant.RightDoorPositionNative; break; case Enumerations.Direction.Up: oldTrigger = "BlockUpOverWall"; oldDoor = "BlockUpBreakableWall"; newDoorTrigger = "BlockUpOverBombed"; newDoor = "BlockUpBombedOpening"; stopBlock = "NoStopBlock"; newOverDoorPosition = Constant.UpOverBombedPositionNative; newDoorPosition = Constant.UpDoorPositionNative; break; case Enumerations.Direction.Down: oldTrigger = "BlockDownOverWall"; oldDoor = "BlockDownBreakableWall"; newDoorTrigger = "BlockDownOverBombed"; newDoor = "BlockDownBombedDoor"; stopBlock = "NoStopBlock"; newOverDoorPosition = Constant.DownOverBombedPositionNative; newDoorPosition = Constant.DownDoorPositionNative; break; default: oldTrigger = "NoOldTrigger"; oldDoor = "NoOldDoor"; newDoorTrigger = "NoNewDoorTrigger"; newDoor = "NoNewDoor"; stopBlock = "NoStopBlock"; newOverDoorPosition = Constant.DownOverBombedPositionNative; newDoorPosition = Constant.DownDoorPositionNative; break; } break; case Enumerations.DoorType.Locked: switch (direction) { case Enumerations.Direction.Left: oldTrigger = "BlockLeftOverDoor"; oldDoor = "BlockLeftLockedDoor"; newDoorTrigger = "BlockLeftOverDoor"; newDoor = "BlockLeftOpenDoor"; stopBlock = "BlockLeftLockedDoorStop"; newOverDoorPosition = Constant.LeftOverDoorPositionNative; newDoorPosition = Constant.LeftDoorPositionNative; break; case Enumerations.Direction.Right: oldTrigger = "BlockRightOverDoor"; oldDoor = "BlockRightLockedDoor"; newDoorTrigger = "BlockRightOverDoor"; newDoor = "BlockRightOpenDoor"; stopBlock = "BlockRightLockedDoorStop"; newOverDoorPosition = Constant.RightOverDoorPositionNative; newDoorPosition = Constant.RightDoorPositionNative; break; case Enumerations.Direction.Up: oldTrigger = "BlockUpOverDoor"; oldDoor = "BlockUpLockedDoor"; newDoorTrigger = "BlockUpOverDoor"; newDoor = "BlockUpOpenDoor"; stopBlock = "BlockUpLockedDoorStop"; newOverDoorPosition = Constant.UpOverDoorPositionNative; newDoorPosition = Constant.UpDoorPositionNative; break; case Enumerations.Direction.Down: oldTrigger = "BlockDownOverDoor"; oldDoor = "BlockDownLockedDoor"; newDoorTrigger = "BlockDownOverDoor"; newDoor = "BlockDownOpenDoor"; stopBlock = "BlockDownLockedDoorStop"; newOverDoorPosition = Constant.DownOverDoorPositionNative; newDoorPosition = Constant.DownDoorPositionNative; break; default: oldTrigger = "NoOldTrigger"; oldDoor = "NoOldDoor"; newDoorTrigger = "NoNewDoorTrigger"; newDoor = "NoNewDoor"; stopBlock = "NoStopBlock"; newOverDoorPosition = Constant.DownOverBombedPositionNative; newDoorPosition = Constant.DownDoorPositionNative; break; } break; default: oldTrigger = "NoOldTrigger"; oldDoor = "NoOldDoor"; newDoorTrigger = "NoNewDoorTrigger"; newDoor = "NoNewDoor"; stopBlock = "NoStopBlock"; newOverDoorPosition = Constant.DownOverBombedPositionNative; newDoorPosition = Constant.DownDoorPositionNative; break; } XmlDocument document = new XmlDocument(); document.Load(currentDungeonFileName); XmlNodeList nodes = document.SelectNodes("/Dungeon/Item[@Room='" + roomNumber.ToString() + "']"); for (int i = nodes.Count - 1; i >= 0; i--) { for (int j = nodes[i].ChildNodes.Count - 1; j >= 0; j--) { if (nodes[i].ChildNodes[j].InnerText == oldTrigger || nodes[i].ChildNodes[j].InnerText == oldDoor || nodes[i].ChildNodes[j].InnerText == stopBlock) { nodes[i].ParentNode.RemoveChild(nodes[i]); } } } XmlElement newDoorNode = document.CreateElement("Item"); newDoorNode.SetAttribute("Room", roomNumber.ToString()); XmlElement newDoorNodeObjectType = document.CreateElement("ObjectType"); newDoorNodeObjectType.InnerText = "IBlock"; XmlElement newDoorNodeObjectName = document.CreateElement("ObjectName"); newDoorNodeObjectName.InnerText = newDoor; XmlElement newDoorNodeLocation = document.CreateElement("Location"); newDoorNodeLocation.InnerText = newDoorPosition.X.ToString() + " " + newDoorPosition.Y.ToString(); newDoorNode.AppendChild(newDoorNodeObjectType); newDoorNode.AppendChild(newDoorNodeObjectName); newDoorNode.AppendChild(newDoorNodeLocation); document.DocumentElement.AppendChild(newDoorNode); XmlElement newOverDoorNode = document.CreateElement("Item"); newOverDoorNode.SetAttribute("Room", roomNumber.ToString()); XmlElement newOverDoorNodeObjectType = document.CreateElement("ObjectType"); newOverDoorNodeObjectType.InnerText = "IDoorTrigger"; XmlElement newOverDoorNodeObjectName = document.CreateElement("ObjectName"); newOverDoorNodeObjectName.InnerText = newDoorTrigger; XmlElement newOverDoorNodeLocation = document.CreateElement("Location"); newOverDoorNodeLocation.InnerText = newOverDoorPosition.X.ToString() + " " + newOverDoorPosition.Y.ToString(); newOverDoorNode.AppendChild(newOverDoorNodeObjectType); newOverDoorNode.AppendChild(newOverDoorNodeObjectName); newOverDoorNode.AppendChild(newOverDoorNodeLocation); document.DocumentElement.AppendChild(newOverDoorNode); if (File.Exists(currentDungeonFileName)) { File.Delete(currentDungeonFileName); document.Save(currentDungeonFileName); } }