private void AddAdvancedSearchButton(int row, int mapObjectId)
        {
            Button advancedSearchBtn = CreateAdvancedSearchButton();

            Grid.SetRow(advancedSearchBtn, row);
            Grid.SetColumn(advancedSearchBtn, DynamicGrid.ColumnDefinitions.Count - 1);
            DynamicGrid.Children.Add(advancedSearchBtn);

            advancedSearchBtn.Click += (s, e) =>
            {
                MapObject chosenMapObject = new MapObjectController().GetMapObjectById(mapObjectId);
                selectedObjectId = chosenMapObject.Id;

                if (chosenMapObject.MapObjectDescription == null)
                {
                    ShowHospitalMapPage();
                }
                else
                {
                    MapObjectDescription description = chosenMapObject.MapObjectDescription;
                    ShowBuildingPage(description.FloorNumber, description.BuildingId);
                }
                this.Close();
            };
        }
Exemplo n.º 2
0
 public void SetCursorOn(MapObjectType type, MapData mapData)
 {
     this.currentCursorType = type;
     cursorDescription      = objectsMapper.GetDescriptionByType(type);
     positiveCursor         = cursorDescription.PositiveCursor;
     positiveRotator        = positiveCursor.GetComponent <BuildingBlockRotator>();
     negativeCursor         = cursorDescription.NegativeCursor;
     negativeRotator        = negativeCursor.GetComponent <BuildingBlockRotator>();
     this.mapData           = mapData;
     isCursorOn             = true;
 }
Exemplo n.º 3
0
        private bool CanIBuildAndWhere(Vector3Int parentPosition, Vector3 raycastPosition, out Vector3Int newCursorPosition)
        {
            MapObjectType        parentType        = mapData.GetObjectTypeAt(parentPosition);
            MapObjectDescription parentDescription = objectsMapper.GetDescriptionByType(parentType);

            BuildCondition.RelativePosition relativePosition;
            bool canBuildHere = parentDescription.CanBeBuildNearMe(CurrentCursorType, out relativePosition);

            newCursorPosition = parentPosition;


            if (!canBuildHere)
            {
                newCursorPosition = parentPosition;
                return(canBuildHere);
            }
            else
            {   /// If maybe can build ////
                switch (relativePosition)
                {
                case BuildCondition.RelativePosition.OVER:
                    newCursorPosition.y += parentDescription.Dimensions.Height;
                    break;

                case BuildCondition.RelativePosition.ON_THE_SIDE:
                    // Let's fing appropriate position on side of the selected (raycast hit) map object ///
                    // So far implementation for 1x1 objects only //
                    Vector3Int frontPos = CalculateOnTheSidePosition(parentPosition, raycastPosition);

                    newCursorPosition = frontPos;
                    break;

                case BuildCondition.RelativePosition.INSTEAD:
                    newCursorPosition = parentPosition;
                    break;
                }

                if (relativePosition != BuildCondition.RelativePosition.INSTEAD)
                {
                    //for (int ix = )   TODO: for building objects greater than 1x1x1?
                    //    for(int iy=)
                    //        for(int iz = )

                    MapObjectType type = mapData.GetObjectTypeAt(newCursorPosition);
                    if (type != MapObjectType.AIR)
                    {
                        // if candidate place is already occupied ///
                        // Let's check if we can replace object in the cell ///
                        MapObjectDescription            candidatePlaceDescription = objectsMapper.GetDescriptionByType(type);
                        BuildCondition.RelativePosition relPos;
                        canBuildHere = candidatePlaceDescription.CanBeBuildNearMe(currentCursorType, out relPos);
                        //Debug.Log("newCurPosType = " + type.ToString() + "  " + canBuildHere + "  " + relPos.ToString());
                        if (!canBuildHere || relPos != BuildCondition.RelativePosition.INSTEAD)
                        {
                            canBuildHere = false;
                        }
                    }
                }
            } // if (maybe can build) ///

            return(canBuildHere);
        } // CanIBuildAndWhere() /////