IEnumerator Coordinator()
    {
        float xMin = map.GetComponent <BoxCollider>().bounds.min.x + 2f;
        float xMax = map.GetComponent <BoxCollider>().bounds.max.x - 2f;
        float zMin = map.GetComponent <BoxCollider>().bounds.min.z + 2f;
        float zMax = map.GetComponent <BoxCollider>().bounds.max.z - 2f;

        while (true)
        {
            var target = PositionOnMap.Pick(xMin, xMax, zMin, zMax);
            StartCoroutine(RotateToTarget(target - transform.position));
            while (!IsCloseToTarget(target))
            {
                if (IsCloseToBorder(xMin, xMax, zMin, zMax))
                {
                    target = PositionOnMap.Pick(xMin, xMax, zMin, zMax);
                    StartCoroutine(RotateToTarget(target - transform.position));
                    yield return(new WaitForSeconds(2f));

                    break;
                }
                yield return(new WaitForSeconds(0.02f));
            }
        }
    }
示例#2
0
 protected virtual void UpdateCurrentPosiotion(Vector2 pos)
 {
     if (pos.y == 1)
     {
         if (pos.x == -1)
         {
             currentPosition = PositionOnMap.leftUp;
         }
         else if (pos.x == 0)
         {
             currentPosition = PositionOnMap.centerUp;
         }
         else
         {
             currentPosition = PositionOnMap.rightUp;
         }
     }
     else if (pos.y == 0)
     {
         if (pos.x == -1)
         {
             currentPosition = PositionOnMap.leftCenter;
         }
         else if (pos.x == 0)
         {
             currentPosition = PositionOnMap.center;
         }
         else
         {
             currentPosition = PositionOnMap.rightCenter;
         }
     }
     else
     {
         if (pos.x == -1)
         {
             currentPosition = PositionOnMap.leftBottom;
         }
         else if (pos.x == 0)
         {
             currentPosition = PositionOnMap.centerBottom;
         }
         else
         {
             currentPosition = PositionOnMap.rightBottom;
         }
     }
 }
    IEnumerator SpawnTank()
    {
        float xMin = map.GetComponent <BoxCollider>().bounds.min.x + 2f;
        float xMax = map.GetComponent <BoxCollider>().bounds.max.x - 2f;
        float zMin = map.GetComponent <BoxCollider>().bounds.min.z + 2f;
        float zMax = map.GetComponent <BoxCollider>().bounds.max.z - 2f;

        yield return(new WaitForSeconds(1));

        while (true)
        {
            var tankInst = Instantiate(tankPrefab);
            tankInst.GetComponent <TankMovement>().Init(map);
            tankInst.transform.position = PositionOnMap.Pick(xMin, xMax, zMin, zMax);
            yield return(new WaitForSeconds(SPAWN_DELAY));
        }
    }
        //public IMapObject[,] level1 = new IMapObject[28,112];


        public static IMapObject[,] LoadMapWithObjects(Level level)
        {
            IMapObject[,] objectRenderedMap = new IMapObject[28, 112];

            for (int y = 0; y < level.LevelAsCharArray.GetLength(1); y++)
            {
                for (int x = 0; x < level.LevelAsCharArray.GetLength(0); x++)
                {
                    PositionOnMap currentPosition = new PositionOnMap {
                        X = x, Y = y
                    };
                    char symbol = level.LevelAsCharArray[x, y];

                    switch (symbol)
                    {
                    case '|':
                        objectRenderedMap[x, y] = new WallObject(symbol, currentPosition);
                        break;

                    case '@':
                        objectRenderedMap[x, y] = new PlayerObject(symbol, currentPosition);
                        break;

                    case 'T':
                        objectRenderedMap[x, y] = new GroundObject(symbol, currentPosition);
                        break;

                    case ' ':
                        objectRenderedMap[x, y] = new MapObject(symbol, currentPosition);
                        break;

                    case '_':
                        objectRenderedMap[x, y] = new RoofObject(symbol, currentPosition);
                        break;

                    default:
                        break;
                    }
                }
            }
            return(objectRenderedMap);
        }
示例#5
0
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            isRouting = false;

            UILongPressGestureRecognizer longPress = new UILongPressGestureRecognizer(LongPress);

            longPress.MinimumPressDuration = 0.5;
            longPress.CancelsTouchesInView = false;
            UITapGestureRecognizer tapPress = new UITapGestureRecognizer(TapPress);

            tapPress.DelaysTouchesBegan = false;

            scrollView.RemoveAllSubviews();
            scrollView.Frame            = View.Frame;
            scrollView.ZoomScale        = 1.0f;
            scrollView.MinimumZoomScale = 0.1f;
            scrollView.MaximumZoomScale = 2.0f;
            scrollView.AddSubview(mapView);
            scrollView.ViewForZoomingInScrollView += (UIScrollView sv) => { return(mapView); };
            scrollView.DidZoom        += DidZoom;
            scrollView.ZoomingStarted += ZoomingStarted;
            scrollView.Scrolled       += OnScrolled;
            scrollView.AddGestureRecognizer(longPress);
            scrollView.AddGestureRecognizer(tapPress);
            scrollView.PinchGestureRecognizer.Enabled = true;

            navigineCore = new NavigineCore(UserHash, NavigineServerUrl);
            //assign the controller directly to the weak delegate
            navigineCore.WeakDelegate = this;

            deviceView = new PositionOnMap();
            //deviceView = new UIImageView(new CGRect(0, 0, 30, 30));
            //deviceView.BackgroundColor = new UIColor(CIColor.RedColor);
            //deviceView.Layer.CornerRadius = deviceView.Frame.Size.Height / 2.0f;
            mapView.AddSubview(deviceView);
            mapView.UserInteractionEnabled = true;
            mapView.ContentMode            = UIViewContentMode.ScaleAspectFit;

            timer          = new Timer(TimerIntervalInMilliseconds);
            timer.Interval = TimerIntervalInMilliseconds;
            timer.Enabled  = true;
            timer.Elapsed += OnTimeEvent;
            timer.Start();

            prevFloorButton.SetBackgroundImage(UIImage.FromBundle("BtnPrevFloor"), UIControlState.Normal);
            nextFloorButton.SetBackgroundImage(UIImage.FromBundle("BtnNextFloor"), UIControlState.Normal);
            zoomInButton.SetBackgroundImage(UIImage.FromBundle("BtnZoomIn"), UIControlState.Normal);
            zoomInButton.Layer.CornerRadius = zoomInButton.Frame.Size.Height / 2.0f;
            zoomOutButton.SetBackgroundImage(UIImage.FromBundle("BtnZoomOut"), UIControlState.Normal);
            zoomOutButton.Layer.CornerRadius = zoomInButton.Frame.Size.Height / 2.0f;
            adjustModeButton.SetBackgroundImage(UIImage.FromBundle("BtnAjustModeOff"), UIControlState.Normal);
            adjustModeButton.Layer.CornerRadius = zoomInButton.Frame.Size.Height / 2.0f;

            prevFloorButton.TouchUpInside  += LoadPrevSubLocation;
            nextFloorButton.TouchUpInside  += LoadNextSubLocation;
            zoomInButton.TouchUpInside     += ZoomIn;
            zoomOutButton.TouchUpInside    += ZoomOut;
            adjustModeButton.TouchUpInside += ToggleAdjustMode;

            UITapGestureRecognizer tapErrorPress = new UITapGestureRecognizer(OnCloseMessage);

            tapErrorPress.DelaysTouchesBegan = false;
            errorMessageLabel.Hidden         = true;
            errorMessageLabel.AddGestureRecognizer(tapErrorPress);

            cancelRouteButton.Hidden         = true;
            cancelRouteButton.TouchUpInside += OnCancelRoute;

            LoadLocation();
        }