public Ship(ShipType type, GridPosition front, GridPosition rear, int length, bool isHorizontal) { this.type = type; occupiedSquares = new GridPosition[length]; this.length = length; occupiedSquares[0] = front; if (isHorizontal) { int difference = rear.x - front.x; for (int x = 1; x < length; x++) { occupiedSquares[x] = new GridPosition(0, 0); if (difference > 0) occupiedSquares[x].x = front.x + x; else if (difference < 0) occupiedSquares[x].x = front.x - x; occupiedSquares[x].y = front.y; } } else if (isHorizontal == false) { int difference = front.y - rear.y; for (int y = 1; y < length; y++) { occupiedSquares[y] = new GridPosition(0, 0); if (difference > 0) occupiedSquares[y].y = front.y - y; else if (difference < 0) occupiedSquares[y].y = front.y + y; occupiedSquares[y].x = front.x; } } }
/** * Update objects position */ override public void SetPosition(GridPosition pos) { Vector3 position = grid.GridPositionToWorldPosition(pos); widget.depth = 999 - (int)position.z; position.z = target.localPosition.z; target.localPosition = position; myPosition = target.localPosition; }
/** * Update objects position */ override public void SetPosition(GridPosition pos) { Vector3 position = grid.GridPositionToWorldPosition(pos); widget.depth = 1000 - (int)position.z; position.z = target.localPosition.z; target.localPosition = position; myPosition = target.localPosition; // Force in front if (building.State == BuildingState.MOVING || building.State == BuildingState.PLACING) widget.depth = 5000; }
public Node(int x, int y, float G, float F, float H, Node parent, GridPosition c) { this.x = x; this.y = y; this.G = G; this.H = H; this.F = F; this.parent = parent; this.cell = c; }
virtual public bool CanObjectBePlacedAtPosition(GridPosition[] shape, GridPosition position) { GridPosition newPosition; foreach (GridPosition g in shape) { newPosition = position + g; if (newPosition.x < 0 || newPosition.x >= grid.GetLength(0)) return false; if (newPosition.y < 0 || newPosition.y >= grid.GetLength(1)) return false; if (grid[newPosition.x, newPosition.y] != null) return false; } return true; }
virtual public void AddObjectAtPosition(IGridObject gridObject, GridPosition position) { List<GridPosition> gridPosisitons = new List<GridPosition>(); GridPosition newPosition; foreach (GridPosition g in gridObject.Shape) { newPosition = position + g; gridPosisitons.Add (newPosition); grid[newPosition.x, newPosition.y] = gridObject; } gridObjects.Add(gridObject, gridPosisitons); }
/** * Initialise the building with the given type and position. */ override public void Init(BuildingTypeData type, GridPosition pos){ data = new UpgradableBuildingData(); ((UpgradableBuildingData)data).level = 1; uid = System.Guid.NewGuid ().ToString (); Position = pos; this.Type = type; State = BuildingState.PLACING; CurrentActivity = null; CompletedActivity = null; view = gameObject; view.SendMessage ("UI_Init", this); view.SendMessage("SetPosition", data.position); }
public Move GetMove(GameGrid grid) { string input = null; do { Console.WriteLine($"{PlayerName}, please enter your move (column, row)"); input = Console.ReadLine(); } while (!IsValidInput(input)); var pos = new GridPosition(input[0], int.Parse(input.Substring(1))); return new Move(pos, PlayerSide); }
override public Vector3 GridPositionToWorldPosition(GridPosition position, List<GridPosition> shape) { float x = (gridWidth / 2) * (position.x - position.y); float y = (gridHeight / 2)* (position.x + position.y); float sz = 9999.0f; float lz= -9999.0f; float tsz; // TODO Clean up and fix to cater for even odder shapes foreach (GridPosition pos in shape) { tsz = ((position.y + pos.y) * (gridHeight / 2)) + ((position.x + pos.x)* (gridHeight / 2)) - 2; if (sz >= tsz) sz = tsz; if (lz <= tsz) lz = tsz; } return new Vector3(x, y, ((lz + sz) / 2.0f) ); }
public static int GetDistanceBetweenGridPositions(GridPosition from, GridPosition to) { return(Mathf.Abs(from.Col - to.Col) + Mathf.Abs(from.Row - to.Row)); }
public static GameEntity GetEntityWithPosition(this GameContext context, GridPosition value) { return(((Entitas.PrimaryEntityIndex <GameEntity, GridPosition>)context.GetEntityIndex(Contexts.Position)).GetEntity(value)); }
/// <summary> /// Reads actions/positon from settings. /// </summary> private void ReadPositions() { if (_menuSettings == null) { _menuSettings = new SettingsChangeWatcher<MenuSettings>(); _menuSettings.SettingsChanged += OnSettingsChanged; } var menuSettings = _menuSettings.Settings; if (menuSettings.MenuItems.Count == 0) { menuSettings.MainMenuGroupNames = new List<GroupItemSetting> { new GroupItemSetting { Name = MenuSettings.MENU_NAME_HOME, Id = new Guid(MenuSettings.MENU_ID_HOME)}, new GroupItemSetting { Name = MenuSettings.MENU_NAME_IMAGE, Id = new Guid(MenuSettings.MENU_ID_IMAGE)}, new GroupItemSetting { Name = MenuSettings.MENU_NAME_AUDIO, Id = new Guid(MenuSettings.MENU_ID_AUDIO)}, new GroupItemSetting { Name = MenuSettings.MENU_NAME_MEDIAHUB, Id = new Guid(MenuSettings.MENU_ID_MEDIAHUB)}, new GroupItemSetting { Name = MenuSettings.MENU_NAME_TV, Id = new Guid(MenuSettings.MENU_ID_TV)}, new GroupItemSetting { Name = MenuSettings.MENU_NAME_NEWS, Id = new Guid(MenuSettings.MENU_ID_NEWS)}, new GroupItemSetting { Name = MenuSettings.MENU_NAME_SETTINGS, Id = new Guid(MenuSettings.MENU_ID_SETTINGS)}, new GroupItemSetting { Name = MenuSettings.MENU_NAME_OTHERS, Id = new Guid(MenuSettings.MENU_ID_OTHERS)} }; menuSettings.DefaultMenuGroupId = MenuSettings.MENU_ID_MEDIAHUB; var positions = new SerializableDictionary<Guid, GridPosition>(); positions[new Guid("A4DF2DF6-8D66-479a-9930-D7106525EB07")] = new GridPosition { Column = 0, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_NORMAL, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // Videos positions[new Guid("80D2E2CC-BAAA-4750-807B-F37714153751")] = new GridPosition { Column = 0, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_NORMAL, Row = MenuSettings.DEFAULT_ROWSPAN_NORMAL, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // Movies positions[new Guid("30F57CBA-459C-4202-A587-09FFF5098251")] = new GridPosition { Column = MenuSettings.DEFAULT_COLSPAN_NORMAL, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_NORMAL, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // Series positions[new Guid("C33E39CC-910E-41C8-BFFD-9ECCD340B569")] = new GridPosition { Column = MenuSettings.DEFAULT_COLSPAN_NORMAL, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_NORMAL, Row = MenuSettings.DEFAULT_ROWSPAN_NORMAL, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // OnlineVideos positions[new Guid("93442DF7-186D-42e5-A0F5-CF1493E68F49")] = new GridPosition { Column = 2 * MenuSettings.DEFAULT_COLSPAN_NORMAL, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_LARGE, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_LARGE }; // Browse Media positions[new Guid("17D2390E-5B05-4fbd-89F6-24D60CEB427F")] = new GridPosition { Column = 2 * MenuSettings.DEFAULT_COLSPAN_NORMAL, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_LARGE, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_LARGE }; // Browse Local (exclusive) menuSettings.MenuItems[MenuSettings.MENU_NAME_MEDIAHUB] = positions; positions = new SerializableDictionary<Guid, GridPosition>(); positions[new Guid("55556593-9FE9-436c-A3B6-A971E10C9D44")] = new GridPosition { Column = 2 * MenuSettings.DEFAULT_COLSPAN_NORMAL, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_LARGE, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_LARGE }; // Images menuSettings.MenuItems[MenuSettings.MENU_NAME_IMAGE] = positions; positions = new SerializableDictionary<Guid, GridPosition>(); positions[new Guid("94961A9E-4C81-4bf7-9EE4-DF9712C3DCF2")] = new GridPosition { Column = 2 * MenuSettings.DEFAULT_COLSPAN_NORMAL, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_LARGE, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_LARGE }; // Images menuSettings.MenuItems[MenuSettings.MENU_NAME_HOME] = positions; positions = new SerializableDictionary<Guid, GridPosition>(); positions[new Guid("30715D73-4205-417f-80AA-E82F0834171F")] = new GridPosition { Column = 0, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_NORMAL, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // Audio positions[new Guid("E00B8442-8230-4D7B-B871-6AC77755A0D5")] = new GridPosition { Column = MenuSettings.DEFAULT_COLSPAN_NORMAL, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_LARGE, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_LARGE }; // PartyMusicPlayer positions[new Guid("2DED75C0-5EAE-4E69-9913-6B50A9AB2956")] = new GridPosition { Column = MenuSettings.DEFAULT_COLSPAN_NORMAL + MenuSettings.DEFAULT_COLSPAN_LARGE, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_NORMAL, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // WebRadio menuSettings.MenuItems[MenuSettings.MENU_NAME_AUDIO] = positions; positions = new SerializableDictionary<Guid, GridPosition>(); positions[new Guid("B4A9199F-6DD4-4bda-A077-DE9C081F7703")] = new GridPosition { Column = 0, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_LARGE, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_LARGE }; // TV Home positions[new Guid("A298DFBE-9DA8-4C16-A3EA-A9B354F3910C")] = new GridPosition { Column = MenuSettings.DEFAULT_COLSPAN_LARGE, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_NORMAL, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // Apollo EPG Link positions[new Guid("7F52D0A1-B7F8-46A1-A56B-1110BBFB7D51")] = new GridPosition { Column = MenuSettings.DEFAULT_COLSPAN_LARGE + MenuSettings.DEFAULT_COLSPAN_NORMAL, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_NORMAL, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // Apollo Recordings Link positions[new Guid("87355E05-A15B-452A-85B8-98D4FC80034E")] = new GridPosition { Column = MenuSettings.DEFAULT_COLSPAN_LARGE, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_NORMAL, Row = MenuSettings.DEFAULT_ROWSPAN_NORMAL, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // Apollo Schedules Link menuSettings.MenuItems[MenuSettings.MENU_NAME_TV] = positions; positions = new SerializableDictionary<Guid, GridPosition>(); positions[new Guid("BB49A591-7705-408F-8177-45D633FDFAD0")] = new GridPosition { Column = 0, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_LARGE, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // News positions[new Guid("BD93C5B3-402C-40A2-B323-DA891ED5F50E")] = new GridPosition { Column = 0, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_LARGE, Row = MenuSettings.DEFAULT_ROWSPAN_NORMAL, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // Kino positions[new Guid("E34FDB62-1F3E-4aa9-8A61-D143E0AF77B5")] = new GridPosition { Column = 2 * MenuSettings.DEFAULT_COLSPAN_NORMAL, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_LARGE, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_LARGE }; // Weather menuSettings.MenuItems[MenuSettings.MENU_NAME_NEWS] = positions; positions = new SerializableDictionary<Guid, GridPosition>(); positions[new Guid("F6255762-C52A-4231-9E67-14C28735216E")] = new GridPosition { Column = 2 * MenuSettings.DEFAULT_COLSPAN_NORMAL, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_LARGE, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_LARGE }; // Configuration menuSettings.MenuItems[MenuSettings.MENU_NAME_SETTINGS] = positions; ServiceRegistration.Get<ISettingsManager>().Save(menuSettings); } //_menuSettings = menuSettings; if (_menuSettings.Settings.MainMenuGroupNames.All(key => key.Name != MenuSettings.MENU_NAME_OTHERS)) { _menuSettings.Settings.MainMenuGroupNames.Add(new GroupItemSetting { Name = MenuSettings.MENU_NAME_OTHERS, Id = new Guid(MenuSettings.MENU_ID_OTHERS) }); ServiceRegistration.Get<ISettingsManager>().Save(menuSettings); } }
public void FindPath(GridPosition startCell, GridPosition goalCell, GridPosition[,] map, bool targetCellMustBeFree) { this.map = map; this.mapWidth = map.GetLength(0); this.mapHeight = map.GetLength(1); start = new Node(startCell.X, startCell.Z, 0, 0, 0, null, startCell); end = new Node(goalCell.X, goalCell.Z, 0, 0, 0, null, goalCell); openList.Add(start); bool keepSearching = true; bool pathExists = true; while ((keepSearching) && (pathExists)) { Node currentNode = ExtractBestNodeFromOpenList(); if (currentNode == null) { pathExists = false; Debug.Log("No valid path found"); break; } closeList.Add(currentNode); if (NodeIsGoal(currentNode)) { keepSearching = false; } else { if (targetCellMustBeFree) FindValidFourNeighbours(currentNode); else FindValidFourNeighboursIgnoreTargetCell(currentNode); foreach (Node neighbour in neighbours) { if (FindInCloseList(neighbour) != null) continue; Node inOpenList = FindInOpenList(neighbour); if (inOpenList == null) { openList.Add(neighbour); } else { if (neighbour.G < inOpenList.G) { inOpenList.G = neighbour.G; inOpenList.F = inOpenList.G + inOpenList.H; inOpenList.parent = currentNode; } } } } } if (pathExists) { Node n = FindInCloseList(end); while (n != null) { finalPath.Add(n); n = n.parent; } } else { Debug.Log("!pathExists"); } }
//Get all of the valid neighbourds of a particular grid position public List<GridPosition> GetNeighbours(GridPosition gridPosition, int distance = 1) { var neighbours = new List<GridPosition>(); //Get the neighbours within x distance for(var x = -distance; x <= distance; x ++ ) { for(var y = -distance; y <= distance; y ++) { var currentPosition = gridPosition + new GridPosition { x = x, y = y }; //Verify that that the cell is in the actual map if(currentPosition.x >= 0 && currentPosition.y >= 0 && currentPosition.x < width && currentPosition.y < height) neighbours.Add(currentPosition); } } return neighbours; }
override public Vector3 GridPositionToWorldPosition(GridPosition position){ return GridPositionToWorldPosition(position, new List<GridPosition> (GridPosition.DefaultShape)); }
public WalkableArea(GridPosition position) { this.position = position; }
/// <summary> /// Tries to move the agent in the specified horizontal and vertical direction using the specified CanAgentMoveBy method /// to check whether the agent can move in that direction from it's current position. /// </summary> /// <param name="hDir">Horizontal dir.</param> /// <param name="vDir">Vertical dir.</param> /// <param name="CanMove">Method that will be used to check whether the agent can move in that direction from it's current position.</param> public void Move(HorizontalDirection hDir, VerticalDirection vDir, CanAgentMoveByDelegate CanMove) { if(hDir == HorizontalDirection.None && vDir == VerticalDirection.None) { return; } int xInc = 0, yInc = 0, layerInc = 0; switch(hDir) { case HorizontalDirection.North: yInc = 1; break; case HorizontalDirection.NorthEast: yInc = 1; xInc = 1; break; case HorizontalDirection.East: xInc = 1; break; case HorizontalDirection.SouthEast: yInc = - 1; xInc = 1; break; case HorizontalDirection.South: yInc = - 1; break; case HorizontalDirection.SouthWest: yInc = - 1; xInc = - 1; break; case HorizontalDirection.West: xInc = - 1; break; case HorizontalDirection.NorthWest: yInc = 1; xInc = - 1; break; } switch(vDir) { case VerticalDirection.Up: layerInc = 1; break; case VerticalDirection.Down: layerInc = - 1; break; } // Call delegate method to determine if the agent can move to that cell int outX, outY, outLayer; if(CanMove(xInc, yInc, layerInc, out outX, out outY, out outLayer)) { // Move to cell CellCoords += new GridPosition(outX, outY, outLayer); transform.position += new Vector3(outX * Grid.CellWidth, outY * Grid.CellDepth + outLayer * Grid.CellHeight, 0); rend.sortingOrder = CellCoords.Layer - CellCoords.Y; } }
bool IsWithinBrushSelector(GridPosition pos) { return(pos.X == GridPosition.GRID_SIZE + 1 && pos.Y < 11); }
bool IsOutOfBounds(GridPosition pos) { return(!(pos.X >= 0 && pos.X < 19 && pos.Y >= 0 && pos.Y < 16)); }
public List<GridPosition> FindPath(GridPosition origin, GridPosition goal) { AStar pathFinder = new AStar(); pathFinder.FindPath(origin, goal, points, true); return pathFinder.CellsFromPath(); }
public bool validatePlacement(GameObject card) { int maxTile = (int)Math.Sqrt(GameManager.Instance.Tiles.Count); Dictionary <GridPosition, TileManager> tempDict = GameManager.Instance.Tiles; int leftTile = position.xPosition - 1; int rightTile = position.xPosition + 1; int upTile = position.yPosition - 1; int downTile = position.yPosition + 1; GridPosition left = null; GridPosition down = null; GridPosition up = null; GridPosition right = null;; //had to perform these annoying gymnastics becaue the Dictionary wasn't cooperating? foreach (KeyValuePair <GridPosition, TileManager> t in tempDict) { if (t.Key.xPosition == leftTile && t.Key.yPosition == position.yPosition) { left = t.Key; } else if (t.Key.xPosition == rightTile && t.Key.yPosition == position.yPosition) { right = t.Key; } else if (position.xPosition == t.Key.xPosition && t.Key.yPosition == upTile) { up = t.Key; } else if (position.xPosition == t.Key.xPosition && t.Key.yPosition == downTile) { down = t.Key; } } if (leftTile >= 0) { if (!(tempDict[left].card is null)) { int[] tempArr = tempDict[left].card.GetComponent <CardManager>().arrows; if ((tempArr[1] == 1 && GameManager.Instance.arrows[3] == 2) || (tempArr[1] == 2 && GameManager.Instance.arrows[3] == 1)) { return(true); } } } if (rightTile <= maxTile) { if (!(tempDict[right].card is null)) { int[] tempArr = tempDict[right].card.GetComponent <CardManager>().arrows; if ((tempArr[3] == 1 && GameManager.Instance.arrows[1] == 2) || (tempArr[3] == 2 && GameManager.Instance.arrows[1] == 1)) { return(true); } } } if (upTile >= 0) { if (!(tempDict[up].card is null)) { int[] tempArr = tempDict[up].card.GetComponent <CardManager>().arrows; if ((tempArr[2] == 1 && GameManager.Instance.arrows[0] == 2) || (tempArr[2] == 2 && GameManager.Instance.arrows[0] == 1)) { return(true); } } } if (downTile <= maxTile) { if (!(tempDict[down].card is null)) { int[] tempArr = tempDict[down].card.GetComponent <CardManager>().arrows; Debug.Log("testing up and down tile" + tempDict[down].card.GetComponent <CardManager>().name); if ((tempArr[0] == 1 && GameManager.Instance.arrows[2] == 2) || (tempArr[0] == 2 && GameManager.Instance.arrows[2] == 1)) { Debug.Log("tempArr[0]= " + tempArr[0] + " cardBot= " + card.GetComponent <CardManager>().arrows[2]); return(true); } } } return(false); }
public void OnPosition(GameEntity entity, GridPosition value) { _targetPosition = value.ToVector3(); }
override public Vector3 GridPositionToWorldPosition(GridPosition position) { return(GridPositionToWorldPosition(position, new List <GridPosition> (GridPosition.DefaultShape))); }
public PathRequest(GridPosition _start, GridPosition _end, Action <List <Cell>, bool> _callback) { pathStart = _start; pathEnd = _end; callback = _callback; }
abstract public Vector3 GridPositionToWorldPosition(GridPosition position, List<GridPosition> shape);
private void Update() { float vertical = Input.GetAxis("Vertical"); float horizontal = Input.GetAxis("Horizontal"); bool enter = Input.GetButtonDown("Submit"); bool back = Input.GetButtonDown("Back"); if (panelUIActive) { if (back) { playerUnitUIPanel.SetActive(false); enemyUnitUIPanel.SetActive(false); panelUIActive = false; } } else if (placingUnit) { if (vertical > 0) { unitBeingPlaced.GetComponent <UnitController>().facing = Facing.Left; } if (vertical < 0) { unitBeingPlaced.GetComponent <UnitController>().facing = Facing.Right; } if (horizontal > 0) { unitBeingPlaced.GetComponent <UnitController>().facing = Facing.Back; } if (horizontal < 0) { unitBeingPlaced.GetComponent <UnitController>().facing = Facing.Forward; } if (back) { unitBeingPlaced.transform.position = unitsOriginalLocation; placingUnit = false; movingUnit = false; } else if (enter) { placingUnit = false; movingUnit = false; } } else { //resonsible for moving cursor when nothing is selected if (!(Time.time < nextCursorMoveAllowed)) { GridPosition startPostion = new GridPosition(cursorPosition.x, cursorPosition.y, cursorPosition.elevation); if (vertical > 0) { cursorPosition.y++; } if (vertical < 0) { cursorPosition.y--; } if (horizontal > 0) { cursorPosition.x++; } if (horizontal < 0) { cursorPosition.x--; } if (cursorPosition.y < 0) { cursorPosition.y = 0; } if (cursorPosition.x < 0) { cursorPosition.x = 0; } if (cursorPosition.y > maxCursorYPos) { cursorPosition.y = maxCursorYPos; } if (cursorPosition.x > maxCursorXPos) { cursorPosition.x = maxCursorXPos; } if (movingUnit) { if (levelController.possibleMoves.Contains(cursorPosition)) { updateCursor(); } else { cursorPosition = startPostion; } } else { updateCursor(); } if (movingUnit && back) { movingUnit = false; selectedObject = null; levelController.selectedUnit = null; } nextCursorMoveAllowed = Time.time + cursorDelay; } GameObject tempSelect = cursor.GetComponent <CursorController>().objectInTile; if (tempSelect != null && !movingUnit) { if (enter) { selectObject(cursor.GetComponent <CursorController>().objectInTile); unitsOriginalLocation = selectedObject.transform.position; } } else { if (movingUnit && enter) { levelController.moveUnitGroup(cursorPosition); //moveUnitTo(cursor.transform.position + new Vector3(0, .5f)); movingUnit = false; placingUnit = true; unitBeingPlaced = selectedObject; selectedObject = null; levelController.selectedUnit = null; } if (enter && !movingUnit) { selectedObject = null; levelController.selectedUnit = null; } } } }
public virtual void AttachGrid() { gridPosition = gameObject.GetComponent<GridPosition>(); gridPosition.Grid = GameObject. FindGameObjectWithTag("GameController").transform; }
/// <summary> /// Get the value of the Generator in world space. /// </summary> /// <param name="x">X coordinate in resolution</param> /// <param name="y">Y coordinate in resolution</param> /// <param name="position">Position in Terra grid units</param> /// <param name="resolution">Resolution of this Tile being sampled</param> public float GetValue(int x, int y, GridPosition position, int resolution) { GenerationData gen = TerraConfig.Instance.Generator; return(GetValue(x, y, position, resolution, gen.Spread, gen.Length)); }
//Calculate the cost of moving between two nodes //later this can take into consideration more than //just distance float GetWeightOfMovingBetween(GridPosition p1, GridPosition p2) { return 1; }
public int GetGridDistance(GridPosition startingPosition) { return(Mathf.Abs(startingPosition.x - _gridPosition.x) + Mathf.Abs(startingPosition.y - _gridPosition.y)); }
private bool IsPositionOutOfBounds(GridPosition gridPosition) { return(gridPosition.XPos > GridBoundary.XPos || gridPosition.XPos < 0 || gridPosition.YPos > GridBoundary.YPos || gridPosition.YPos < 0); }
public TileController GetAnotherTile(GridPosition tilePosition) { return(_myBoard.GetTile(tilePosition)); }
// Add all seleced shapes into the grid /// <ToBeCompleted></ToBeCompleted> protected virtual void ArrangeShapes(int ox, int oy, int sx, int sy) { lastCommand = new MoveShapesCommand(); SortedList <GridPosition, Shape> positionAssignments = new SortedList <GridPosition, Shape>(selectedShapes.Count, new GridPositionComparer()); foreach (Shape s in selectedShapes) { GridPosition gp; gp.col = (s.X - ox + (s.X > ox? sx / 2: -sx / 2)) / sx; gp.row = (s.Y - oy + (s.Y > oy? sy / 2: -sy / 2)) / sy; gp.dir = -1; gp.idx = 0; int i = positionAssignments.IndexOfKey(gp); if (i >= 0) { // Search a free index for this position while (i < positionAssignments.Count && positionAssignments.Keys[i].col == gp.col && positionAssignments.Keys[i].row == gp.row) { ++i; } gp.idx = i; } positionAssignments.Add(gp, s); } // Where more than one shape want to go to the same position, select the // nearest one and assign the others to the edges. int idx = 0; while (idx < positionAssignments.Count) { int minIdx = 0; int minDist = int.MaxValue; GridPosition gp = positionAssignments.Keys[idx]; while (idx < positionAssignments.Count && positionAssignments.Keys[idx].col == gp.col && positionAssignments.Keys[idx].row == gp.row) { GridPosition p = positionAssignments.Keys[idx]; int dist = CalcDistance(positionAssignments[p].X, ox, sx) + CalcDistance(positionAssignments[p].Y, oy, sy); if (dist < minDist) { minIdx = idx; minDist = dist; } ++idx; } // Make the minimum index the shape at the node Shape shape = positionAssignments.Values[minIdx]; positionAssignments.RemoveAt(minIdx); --idx; lastCommand.AddMove(shape, ox + gp.col * sx - shape.X, oy + gp.row * sy - shape.Y); } // CopyFrom the other shapes to edges /*idx = 0; * while (idx < positionAssignments.Count) { * GridPosition gp = positionAssignments.Keys[idx]; * * if (positionAssignments[gp].Y < oy + gp.row * sy) --gp.row; * * }*/ // Move the edge shapes to their respective positions idx = 0; while (idx < positionAssignments.Count) { GridPosition gp = positionAssignments.Keys[idx]; // Count the number of shapes for the same edge int startIdx = idx; while (idx < positionAssignments.Count && positionAssignments.Keys[idx].col == gp.col && positionAssignments.Keys[idx].row == gp.row && positionAssignments.Keys[idx].dir == gp.dir) { ++idx; } int count = idx - startIdx; // Distribute the shapes along their respective edge for (int i = startIdx; i < idx; ++i) { if (gp.dir == 0) { // Position on horizontal edge lastCommand.AddMove(positionAssignments[gp], ox + gp.col * sx + (i - startIdx + 1) * sx / (count + 1) - positionAssignments[gp].X, oy + gp.row * sy - positionAssignments[gp].Y); } else { // Position on vertical edge lastCommand.AddMove(positionAssignments[gp], ox + gp.col * sx - positionAssignments[gp].X, oy + gp.row * sy + (i - startIdx + 1) * sy / (count + 1) - positionAssignments[gp].Y); } } } project.ExecuteCommand(lastCommand); }
/// <summary> /// Reads actions/positon from settings. /// </summary> private void ReadPositions() { var menuSettings = ServiceRegistration.Get <ISettingsManager>().Load <MenuSettings>(); if (menuSettings.MenuItems.Count == 0) { menuSettings.MainMenuGroupNames = new List <string> { MenuSettings.MENU_NAME_IMAGE, MenuSettings.MENU_NAME_AUDIO, MenuSettings.MENU_NAME_MEDIAHUB, MenuSettings.MENU_NAME_TV, MenuSettings.MENU_NAME_NEWS, MenuSettings.MENU_NAME_SETTINGS, MenuSettings.MENU_NAME_OTHERS }; menuSettings.DefaultIndex = 2; var positions = new SerializableDictionary <Guid, GridPosition>(); positions[new Guid("A4DF2DF6-8D66-479a-9930-D7106525EB07")] = new GridPosition { Column = 0, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_NORMAL, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // Videos positions[new Guid("80D2E2CC-BAAA-4750-807B-F37714153751")] = new GridPosition { Column = 0, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_NORMAL, Row = MenuSettings.DEFAULT_ROWSPAN_NORMAL, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // Movies positions[new Guid("30F57CBA-459C-4202-A587-09FFF5098251")] = new GridPosition { Column = MenuSettings.DEFAULT_COLSPAN_NORMAL, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_NORMAL, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // Series positions[new Guid("C33E39CC-910E-41C8-BFFD-9ECCD340B569")] = new GridPosition { Column = MenuSettings.DEFAULT_COLSPAN_NORMAL, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_NORMAL, Row = MenuSettings.DEFAULT_ROWSPAN_NORMAL, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // OnlineVideos positions[new Guid("93442DF7-186D-42e5-A0F5-CF1493E68F49")] = new GridPosition { Column = 2 * MenuSettings.DEFAULT_COLSPAN_NORMAL, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_LARGE, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_LARGE }; // Browse Media positions[new Guid("17D2390E-5B05-4fbd-89F6-24D60CEB427F")] = new GridPosition { Column = 2 * MenuSettings.DEFAULT_COLSPAN_NORMAL, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_LARGE, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_LARGE }; // Browse Local (exclusive) menuSettings.MenuItems[MenuSettings.MENU_NAME_MEDIAHUB] = positions; positions = new SerializableDictionary <Guid, GridPosition>(); positions[new Guid("55556593-9FE9-436c-A3B6-A971E10C9D44")] = new GridPosition { Column = 2 * MenuSettings.DEFAULT_COLSPAN_NORMAL, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_LARGE, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_LARGE }; // Images menuSettings.MenuItems[MenuSettings.MENU_NAME_IMAGE] = positions; positions = new SerializableDictionary <Guid, GridPosition>(); positions[new Guid("30715D73-4205-417f-80AA-E82F0834171F")] = new GridPosition { Column = 0, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_NORMAL, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // Audio positions[new Guid("E00B8442-8230-4D7B-B871-6AC77755A0D5")] = new GridPosition { Column = MenuSettings.DEFAULT_COLSPAN_NORMAL, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_LARGE, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_LARGE }; // PartyMusicPlayer positions[new Guid("2DED75C0-5EAE-4E69-9913-6B50A9AB2956")] = new GridPosition { Column = MenuSettings.DEFAULT_COLSPAN_NORMAL + MenuSettings.DEFAULT_COLSPAN_LARGE, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_NORMAL, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // WebRadio menuSettings.MenuItems[MenuSettings.MENU_NAME_AUDIO] = positions; positions = new SerializableDictionary <Guid, GridPosition>(); positions[new Guid("B4A9199F-6DD4-4bda-A077-DE9C081F7703")] = new GridPosition { Column = 0, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_LARGE, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_LARGE }; // TV Home positions[new Guid("A298DFBE-9DA8-4C16-A3EA-A9B354F3910C")] = new GridPosition { Column = MenuSettings.DEFAULT_COLSPAN_LARGE, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_NORMAL, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // Apollo EPG Link positions[new Guid("7F52D0A1-B7F8-46A1-A56B-1110BBFB7D51")] = new GridPosition { Column = MenuSettings.DEFAULT_COLSPAN_LARGE + MenuSettings.DEFAULT_COLSPAN_NORMAL, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_NORMAL, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // Apollo Recordings Link positions[new Guid("87355E05-A15B-452A-85B8-98D4FC80034E")] = new GridPosition { Column = MenuSettings.DEFAULT_COLSPAN_LARGE, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_NORMAL, Row = MenuSettings.DEFAULT_ROWSPAN_NORMAL, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // Apollo Schedules Link menuSettings.MenuItems[MenuSettings.MENU_NAME_TV] = positions; positions = new SerializableDictionary <Guid, GridPosition>(); positions[new Guid("BB49A591-7705-408F-8177-45D633FDFAD0")] = new GridPosition { Column = 0, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_LARGE, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // News positions[new Guid("BD93C5B3-402C-40A2-B323-DA891ED5F50E")] = new GridPosition { Column = 0, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_LARGE, Row = MenuSettings.DEFAULT_ROWSPAN_NORMAL, RowSpan = MenuSettings.DEFAULT_ROWSPAN_NORMAL }; // Kino positions[new Guid("E34FDB62-1F3E-4aa9-8A61-D143E0AF77B5")] = new GridPosition { Column = 2 * MenuSettings.DEFAULT_COLSPAN_NORMAL, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_LARGE, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_LARGE }; // Weather menuSettings.MenuItems[MenuSettings.MENU_NAME_NEWS] = positions; positions = new SerializableDictionary <Guid, GridPosition>(); positions[new Guid("F6255762-C52A-4231-9E67-14C28735216E")] = new GridPosition { Column = 2 * MenuSettings.DEFAULT_COLSPAN_NORMAL, ColumnSpan = MenuSettings.DEFAULT_COLSPAN_LARGE, Row = 0, RowSpan = MenuSettings.DEFAULT_ROWSPAN_LARGE }; // Configuration menuSettings.MenuItems[MenuSettings.MENU_NAME_SETTINGS] = positions; ServiceRegistration.Get <ISettingsManager>().Save(menuSettings); } _menuSettings = menuSettings; if (!_menuSettings.MainMenuGroupNames.Contains(MenuSettings.MENU_NAME_OTHERS)) { _menuSettings.MainMenuGroupNames.Add(MenuSettings.MENU_NAME_OTHERS); ServiceRegistration.Get <ISettingsManager>().Save(menuSettings); } }
public static byte GetTileIdFromColRow(GridPosition pos) { return((byte)(pos.Row * Consts.GRID_SIZE + pos.Col)); }
public INode GetNode(GridPosition position) => this.Nodes[position.X, position.Y];
/** * Return the object at the given position or null if no object * at the given position. */ virtual public IGridObject GetObjectAtPosition(GridPosition position){ if (position.x < gridSize && position.y < gridSize && position.x >= 0 &&position.y >= 0) { return grid[position.x, position.y]; } return null; }
private bool IsInsideGrid(GridPosition position) => position.X >= 0 && position.X < this.Columns && position.Y >= 0 && position.Y < this.Rows;
virtual public void RemoveObjectAtPosition(GridPosition position){ IGridObject g = GetObjectAtPosition(position); if (g != null) RemoveObject(g); }
public View(GridSize size, GridPosition internalPosition = new GridPosition(), GridPosition externalPosition = new GridPosition()) { SetSize(size); SetInternalPosition(internalPosition); SetExternalPosition(externalPosition); MakeStatic(false); StayInBounds(true); SetBounds(size); Change(); }
abstract public Vector3 GridPositionToWorldPosition(GridPosition position);
public GetTileTypeCommandObject(TileMapInfo tileMapInfo, GridPosition gridPosition) { this.tileMapInfo = tileMapInfo; this.gridPosition = gridPosition; }
private void Flee(List <Ingame.MyDetectedEntityInfo> RadarData = null) { try { if (!IsFleeing) { return; } try { if (!FleeTimersTriggered) { TriggerFleeTimers(); } try { if (RadarData == null) { RadarData = LookForEnemies(FreighterSetup.FleeTriggerDistance); } if (RadarData.Count == 0) { return; } try { Ingame.MyDetectedEntityInfo ClosestEnemy = RadarData.OrderBy(x => GridPosition.DistanceTo(x.Position)).FirstOrDefault(); if (ClosestEnemy.IsEmpty()) { Grid.DebugWrite("Flee", "Cannot find closest hostile"); return; } try { IMyEntity EnemyEntity = MyAPIGateway.Entities.GetEntityById(ClosestEnemy.EntityId); if (EnemyEntity == null) { Grid.DebugWrite("Flee", "Cannot find enemy entity from closest hostile ID"); return; } try { //Grid.DebugWrite("Flee", $"Fleeing from '{EnemyEntity.DisplayName}'. Distance: {Math.Round(GridPosition.DistanceTo(ClosestEnemy.Position))}m; FleeTriggerDistance: {FreighterSetup.FleeTriggerDistance}"); Vector3D FleePoint = GridPosition.InverseVectorTo(ClosestEnemy.Position, 100 * 1000); RC.AddWaypoint(FleePoint, "Flee Point"); (RC as MyRemoteControl).ChangeFlightMode(MyRemoteControl.FlightMode.OneWay); (RC as MyRemoteControl).SetAutoPilotSpeedLimit(DetermineFleeSpeed()); RC.SetAutoPilotEnabled(true); } catch (Exception Scrap) { Grid.LogError("Flee.AddWaypoint", Scrap); } } catch (Exception Scrap) { Grid.LogError("Flee.LookForEnemies.GetEntity", Scrap); } } catch (Exception Scrap) { Grid.LogError("Flee.LookForEnemies.Closest", Scrap); } } catch (Exception Scrap) { Grid.LogError("Flee.LookForEnemies", Scrap); } } catch (Exception Scrap) { Grid.LogError("Flee.TriggerTimers", Scrap); } } catch (Exception Scrap) { Grid.LogError("Flee", Scrap); } }
public override bool GetHitBox(RaycastHit hit, out GridPosition position, out Vector3 size) { position = GridPosition.Zero; size = Vector3.Scale(new Vector3(SizeX, SizeY, SizeZ), BlockScale); return(true); }
public Move(GridPosition pos, GridValue value) { Position = pos; Value = value; }
/** * Don't allow color change for paths. */ override protected void SetColor(GridPosition pos) { }
//Get the cell at a particular grid position public GridCell GetCell(GridPosition gridPosition) { return cells[gridPosition.x, gridPosition.y]; }
/** * Update objects position */ virtual public void SetPosition(GridPosition pos) { Vector3 position = grid.GridPositionToWorldPosition(pos); target.localPosition = position; myPosition = target.localPosition; }
//Convert a grid position into a world position on the navmesh public Vector3 GetWorldPosition(GridPosition gridPosition) { var worldPosition = new Vector3(gridPosition.x * cellSize, GetCell(gridPosition).height, gridPosition.y * cellSize); return worldPosition + new Vector3(topLeftCorner.x, 0, topLeftCorner.z); }
/** * Get the building at the given position. If the space is empty or the object * at the position is not a building return null. */ public Building GetBuildingAtPosition(GridPosition position) { IGridObject result; result = GetObjectAtPosition(position); if (result is Building) return (Building) result; return null; }
//Manhattan distance to another cell public int Distance(GridPosition other) { return Mathf.Abs(other.x - x) + Mathf.Abs(other.y - y); }
public void MakePath() { if (Input.mousePresent) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, 300f)) //Physics.Raycast(ray, out hit, 300f, LayerMask.NameToLayer("Chess Grid")) 按理说可以过滤其他层,可是这时只有离摄像头近的有效,很奇怪 { Debug.DrawLine(ray.origin, hit.point); GridPosition newPosition = new GridPosition(hit.point); Pair UV = new Pair(newPosition); if (!UV.Equals(turnPair) && grids[UV].activeSelf /*hit.collider.CompareTag("Grid") 效果不好*/) //Pair的其他值可能不一样要用自定义的Equals { if (!mousePosition.Equals(newPosition)) { mousePosition = newPosition; ExtinguishPath(); if (!grids[UV].GetComponent <GridAttribute>().isUnit) { LightPath(new Pair(mousePosition)); } if (neighbourGrid != GridPosition.NeighbourGrid.M) { neighbourGrid = GridPosition.NeighbourGrid.M; } } else if (grids[UV].GetComponent <GridAttribute>().isUnit) //处理敌方单位 { if (attackFlag) //近战攻击 { if (Input.GetMouseButton(0)) //进行攻击 { turnControler.MoveUnit(gridQueue.ToArray()); attackUV = new Pair(mousePosition); turnControler.AttackUnit(attackUV); ExtinguishPath(); SleepGrid(); flag = true; } else //攻击前选择方向 { Vector3 gridVector = mousePosition.GetPosition(); if (hit.point.x < gridVector.x - 0.16f && hit.point.z < gridVector.z - 0.16f) { LightPathByNeighbour(GridPosition.NeighbourGrid.SW); } else if (hit.point.x + hit.point.z <= 1f && hit.point.x <= gridVector.x + 0.16f && hit.point.z <= gridVector.z + 0.16f) { if (hit.point.x >= hit.point.z) { LightPathByNeighbour(GridPosition.NeighbourGrid.S); } else { LightPathByNeighbour(GridPosition.NeighbourGrid.W); } } else if (hit.point.x < gridVector.x - 0.16f && hit.point.z > gridVector.z + 0.16f) { LightPathByNeighbour(GridPosition.NeighbourGrid.NW); } else if (hit.point.x > gridVector.x + 0.16f && hit.point.z < gridVector.z - 0.16f) { LightPathByNeighbour(GridPosition.NeighbourGrid.SE); } else if (hit.point.x > gridVector.x + 0.16f && hit.point.z > gridVector.z + 0.16f) { LightPathByNeighbour(GridPosition.NeighbourGrid.NE); } else { if (hit.point.x >= hit.point.z) { LightPathByNeighbour(GridPosition.NeighbourGrid.E); } else { LightPathByNeighbour(GridPosition.NeighbourGrid.N); } } } } else //远程攻击 { turnControler.exceptMelee(); } } else if (Input.GetMouseButton(0)) { turnControler.MoveUnit(gridQueue.ToArray()); ExtinguishPath(); SleepGrid(); flag = true; } } else { ExtinguishPath(); } } } }
private bool PlaceWordInGrid(GridPosition pos, string word, char[,] grid) { int x = pos.Row; int y = pos.Col; // elements represent placements options, 0 == left->right, 1 = right->left, etc. (in order presented below) int[] placementOptions = new int[8] { 9, 9, 9, 9, 9, 9, 9, 9 }; int placementOption = 9; bool haveOptions = false; for (int counter = 0; counter < word.Length; counter++) { // If point empty or point contains same letter word's current character if (grid[x, y] == '\0' | grid[x, y] == word[0]) { if (SpaceRight(word, pos, grid)) { placementOptions[0] = 1; haveOptions = true; } if (SpaceLeft(word, pos, grid)) { placementOptions[1] = 2; haveOptions = true; } if (SpaceDown(word, pos, grid)) { placementOptions[2] = 3; haveOptions = true; } if (SpaceUp(word, pos, grid)) { placementOptions[3] = 4; haveOptions = true; } if (SpaceUpRight(word, pos, grid)) { placementOptions[4] = 5; haveOptions = true; } if (SpaceDownRight(word, pos, grid)) { placementOptions[5] = 6; haveOptions = true; } if (SpaceUpLeft(word, pos, grid)) { placementOptions[6] = 7; haveOptions = true; } if (SpaceDownLeft(word, pos, grid)) { placementOptions[7] = 8; haveOptions = true; } if (haveOptions) { while (placementOption == 9) { placementOption = placementOptions[Helper.Random(0, placementOptions.Length - 1)]; } switch (placementOption) { case 1: PlaceWordRight(word, pos, grid); break; case 2: PlaceWordLeft(word, pos, grid); break; case 3: PlaceWordDown(word, pos, grid); break; case 4: PlaceWordUp(word, pos, grid); break; case 5: PlaceWordUpRight(word, pos, grid); break; case 6: PlaceWordDownRight(word, pos, grid); break; case 7: PlaceWordUpLeft(word, pos, grid); break; case 8: PlaceWordDownLeft(word, pos, grid); break; } return(true); } } } return(false); }
public void SetGridBoundary(GridPosition upperBound) { this.GridBoundary = upperBound; }
public override void Generate(BoardGenerator boardGenerator) { char charToWrite; if (!useDefaultEmptyChar) { charToWrite = alternateCharToUse; } else { charToWrite = boardGenerator.boardGenerationProfile.boardLibrary.GetDefaultEmptyChar(); } Vector2 startLocation = startLocations[Random.Range(0, startLocations.Length)]; GridPosition startPosition = boardGenerator.Vector2ToGridPosition(startLocation); GridPosition targetPosition = boardGenerator.GetRandomGridPosition(); GridPosition currentPosition = startPosition; for (int i = 0; i < tunnelLength; i++) { if (RollPercentage(turnPercentChance)) { GridPosition turnPosition = boardGenerator.GetRandomGridPosition(); while (turnPosition.x == targetPosition.x || turnPosition.y == targetPosition.y) { turnPosition = boardGenerator.GetRandomGridPosition(); } targetPosition = turnPosition; } if (spawnRandomRoomsOnTunnel) { if (RollPercentage(roomSpawnChance)) { RoomTemplate randTemplate = roomTemplates[Random.Range(0, roomTemplates.Length)]; boardGenerator.DrawTemplate(currentPosition.x, currentPosition.y, randTemplate, overwriteFilledSpaces, generatesEmptySpace); } } List <GeneratorWanderTunnel> branchTunnelerList = new List <GeneratorWanderTunnel>(); if (RollPercentage(branchPercentChance)) { GeneratorWanderTunnel wanderTunneler = ScriptableObject.CreateInstance <GeneratorWanderTunnel>(); wanderTunneler.tunnelMaxLength = branchTunnel.tunnelMaxLength; wanderTunneler.overwriteFilledSpaces = branchTunnel.overwriteFilledSpaces; wanderTunneler.useDefaultEmptyChar = branchTunnel.useDefaultEmptyChar; wanderTunneler.alternateCharToUse = branchTunnel.alternateCharToUse; wanderTunneler.startLocations = new Vector2[1]; wanderTunneler.startLocations[0] = new Vector2(currentPosition.x, currentPosition.y); wanderTunneler.roomTemplates = branchTunnel.roomTemplates; wanderTunneler.spawnRoomsOnTunnelTurn = branchTunnel.spawnRoomsOnTunnelTurn; wanderTunneler.spawnRoomOnTunnelEnd = branchTunnel.spawnRoomOnTunnelEnd; wanderTunneler.turnNoiseValue = branchTunnel.turnNoiseValue; branchTunnelerList.Add(wanderTunneler); } for (int j = 0; j < branchTunnelerList.Count; j++) { branchTunnelerList[j].Generate(boardGenerator); } Dig(boardGenerator, currentPosition, targetPosition, charToWrite); } if (spawnRandomRoomsOnTunnel) { RoomTemplate randTemplate = roomTemplates[Random.Range(0, roomTemplates.Length)]; boardGenerator.DrawTemplate(currentPosition.x, currentPosition.y, randTemplate, overwriteFilledSpaces, generatesEmptySpace); } }
int GetIndex(GridPosition p) { return(p.y * gridSize.x + p.x); }
/** * After object dragged set color */ override protected void PostDrag (GridPosition pos) { }
public static void DistanceSquared(ref GridPosition value1, ref GridPosition value2, out double result) { result = (value1.x - value2.x) * (value1.x - value2.x) + (value1.y - value2.y) * (value1.y - value2.y) + (value1.z - value2.z) * (value1.z - value2.z); }
/** * Called after each drag. */ virtual protected void PostDrag(GridPosition pos) { }
/// <summary> /// Compares whether current instance is equal to specified <see cref="GridPosition"/>. /// </summary> /// <param name="other">The <see cref="GridPosition"/> to compare.</param> /// <returns><c>true</c> if the instances are equal; <c>false</c> otherwise.</returns> public bool Equals(GridPosition other) { bool ret = x == other.x && y == other.y && z == other.z; return(ret); }