Beispiel #1
0
        /// <summary>
        /// Draw player's marker
        /// </summary>
        /// <param name="positionPoint"></param>
        public async void DrawPlayerMarker(PositionPoint positionPoint)
        {
            try
            {
                PlayerMarkerLayer.FillEllipseCentered((int)positionPoint.X, (int)positionPoint.Y, 5, 5, positionPoint.Color);

                Bitmap icon = null;
                if (positionPoint.PlayerHasBomb)
                {
                    icon = GetIconBitmapFromStream("bomb_overview");
                    DrawIcon(PlayerMarkerLayer, icon, positionPoint);
                }

                await Task.Delay(200);

                PlayerMarkerLayer.FillEllipseCentered((int)positionPoint.X, (int)positionPoint.Y, 5, 5, Colors.Transparent);

                if (positionPoint.PlayerHasBomb)
                {
                    await Task.Delay(200);

                    ClearIcon(PlayerMarkerLayer, icon, positionPoint);
                    icon?.Dispose();
                }
            }
            catch (Exception e)
            {
                Logger.Instance.Log(e);
            }
        }
Beispiel #2
0
        /// <summary>
        /// Render loop
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void CompositionTarget_Rendering(object sender, EventArgs e)
        {
            TimeSpan timeSinceLastRender = DateTime.Now.TimeOfDay - LastRenderTime;

            if (timeSinceLastRender.TotalSeconds < (1.0 / FrameLimiter))
            {
                return;
            }

            LastRenderTime = DateTime.Now.TimeOfDay;

            // Stop animation if there is no more points
            if (!Points.Any())
            {
                CompositionTarget.Rendering -= CompositionTarget_Rendering;
                IsBusy    = false;
                IsPlaying = false;
                Demo.PositionPoints.Clear();
                Points.Clear();
                CommandManager.InvalidateRequerySuggested();
                return;
            }

            // Draw points for each player
            foreach (List <PositionPoint> positionPoints in Points)
            {
                if (positionPoints.Any())
                {
                    // get the first point of the list
                    PositionPoint positionPoint = positionPoints.First();

                    // If there is an event at this point, draw it
                    if (positionPoint.Event != null)
                    {
                        if (!string.IsNullOrWhiteSpace(positionPoint.Event.Message))
                        {
                            _events.Add(positionPoint.Event);
                        }

                        _drawService.DrawEvent(positionPoint);
                    }
                    else
                    {
                        // Draw it
                        _drawService.DrawPixel(positionPoint);
                        _drawService.DrawPlayerMarker(positionPoint);
                    }

                    // Remove this point
                    positionPoints.Remove(positionPoint);

                    // If there is no more points remove the list from all the lists
                    if (!positionPoints.Any())
                    {
                        Points.Remove(positionPoints);
                        break;
                    }
                }
            }
        }
Beispiel #3
0
        /// <summary>
        /// Undraw a specific icon from the WriteableBitmap layer
        /// </summary>
        /// <param name="layer"></param>
        /// <param name="icon"></param>
        /// <param name="positionPoint"></param>
        private static void ClearIcon(WriteableBitmap layer, Bitmap icon, PositionPoint positionPoint)
        {
            BitmapData data = icon.LockBits(new Rectangle(0, 0, icon.Width, icon.Height),
                                            ImageLockMode.ReadOnly, PixelFormat.Format32bppPArgb);

            IntPtr ptr = data.Scan0;

            // Declare an array to hold the bytes of the bitmap.
            int bytes = Math.Abs(data.Stride) * icon.Height;

            byte[] rgbValues = new byte[bytes];

            // Copy the RGB values into the array.
            Marshal.Copy(ptr, rgbValues, 0, bytes);

            // Clear data
            Array.Clear(rgbValues, 0, rgbValues.Length);

            layer.WritePixels(
                new Int32Rect(0, 0, icon.Width, icon.Height),
                rgbValues,
                data.Stride,
                (int)positionPoint.X - icon.Width / 2,
                (int)positionPoint.Y - icon.Height / 2);

            icon.UnlockBits(data);
        }
Beispiel #4
0
        /// <summary>
        /// Draw a specific icon on WriteableBitmapEvents layer
        /// </summary>
        /// <param name="layer"></param>
        /// <param name="icon"></param>
        /// <param name="positionPoint"></param>
        private static void DrawIcon(WriteableBitmap layer, Bitmap icon, PositionPoint positionPoint)
        {
            BitmapData data = icon.LockBits(new Rectangle(0, 0, icon.Width, icon.Height),
                                            ImageLockMode.ReadOnly, PixelFormat.Format32bppPArgb);

            IntPtr ptr = data.Scan0;

            // Declare an array to hold the bytes of the bitmap.
            int bytes = Math.Abs(data.Stride) * icon.Height;

            byte[] rgbValues = new byte[bytes];

            // Copy the RGB values into the array.
            Marshal.Copy(ptr, rgbValues, 0, bytes);

            int x    = (int)positionPoint.X - icon.Width / 2;
            int y    = (int)positionPoint.Y - icon.Height / 2;
            int maxX = (int)layer.Width - icon.Width;
            int maxY = (int)layer.Height - icon.Height;

            if (x > maxX)
            {
                x = maxX;
            }
            if (y > maxY)
            {
                y = maxY;
            }

            layer.WritePixels(new Int32Rect(0, 0, icon.Width, icon.Height), rgbValues, data.Stride, x, y);

            icon.UnlockBits(data);
        }
    private void OnDisable()
    {
        OnPositionReached.RemoveAllListeners();
        transform.localPosition = new Vector3(0, 0, 0);

        if (positionPoint != null)
        {
            positionPoint.occupied = false;
            positionPoint          = null;
        }
    }
Beispiel #6
0
 private static void CreatePositionPoints()
 {
     StringPositions = new PositionPoint[9, 9];
     for (int v = 0; v < 9; v++)
     {
         for (int h = 0; h < 9; h++)
         {
             StringPositions[h, v] = new PositionPoint(4 * (h + 1), 2 + (v * 4));
         }
     }
 }
Beispiel #7
0
        public void FreePositionAvailable(PositionPoint targetPosition)
        {
            if (!mover)
            {
                mover = GetComponent <MoverToPosition>();
            }

            transform.parent = targetPosition.transform;

            mover.OnPositionReached.AddListener(OnPositionReached);
            mover.StartMovingToPosition(targetPosition);
        }
Beispiel #8
0
        private static void RemoveNumberFromPosition(PositionNames which, PositionPoint where)
        {
            int pos_x = 0, pos_y = 0;

            switch (which)
            {
            case PositionNames.One:
            case PositionNames.Four:
            case PositionNames.Seven:
                pos_x = where.One[(int)Pos.X];
                break;

            case PositionNames.Two:
            case PositionNames.Five:
            case PositionNames.Eight:
                pos_x = where.Two[(int)Pos.X];
                break;

            case PositionNames.Three:
            case PositionNames.Six:
            case PositionNames.Nine:
                pos_x = where.Three[(int)Pos.X];
                break;
            }
            switch (which)
            {
            case PositionNames.One:
            case PositionNames.Two:
            case PositionNames.Three:
                pos_y = where.One[(int)Pos.Y];
                break;

            case PositionNames.Four:
            case PositionNames.Five:
            case PositionNames.Six:
                pos_y = where.Four[(int)Pos.Y];
                break;

            case PositionNames.Seven:
            case PositionNames.Eight:
            case PositionNames.Nine:
                pos_y = where.Seven[(int)Pos.Y];
                break;
            }

            string chosen_string = planning_board[pos_y];
            var    char_version  = chosen_string.ToCharArray();

            char_version[pos_x]   = ' ';
            chosen_string         = new string(char_version);
            planning_board[pos_y] = chosen_string;
        }
Beispiel #9
0
 /// <summary>
 /// Clear smoke icon when a smoke ended
 /// </summary>
 /// <param name="positionPoint"></param>
 public void DrawSmokeEnded(PositionPoint positionPoint)
 {
     try
     {
         Bitmap icon = new Bitmap(Properties.Resources.smoke);
         ClearIcon(SmokeLayer, icon, positionPoint);
         icon.Dispose();
     }
     catch (Exception e)
     {
         Logger.Instance.Log(e);
     }
 }
Beispiel #10
0
 /// <summary>
 /// Clear smoke icon when a smoke ended
 /// </summary>
 /// <param name="positionPoint"></param>
 public void DrawSmokeEnded(PositionPoint positionPoint)
 {
     try
     {
         Bitmap icon = GetIconBitmapFromStream("smoke");
         ClearIcon(SmokeLayer, icon, positionPoint);
         icon.Dispose();
     }
     catch (Exception e)
     {
         Logger.Instance.Log(e);
     }
 }
Beispiel #11
0
        public override void FreePositionAvailable(PositionPoint targetPosition)
        {
            if (!_isOnSpawningPosition)
            {
                mover.OnPositionReached.AddListener(OnSpawningPositionReached);
            }
            else
            {
                mover.OnPositionReached.RemoveListener(OnSpawningPositionReached);  // MotherShip will move now to player, no more enemy spawning
            }

            mover.StartMovingToPosition(targetPosition);
        }
Beispiel #12
0
 /// <summary>
 /// Clear burn icon when a molotov is no more burning
 /// </summary>
 /// <param name="positionPoint"></param>
 public void DrawMolotovEnded(PositionPoint positionPoint)
 {
     try
     {
         Bitmap icon = new Bitmap(Properties.Resources.molotov_burning);
         ClearIcon(MolotovLayer, icon, positionPoint);
         icon.Dispose();
     }
     catch (Exception e)
     {
         Logger.Instance.Log(e);
     }
 }
Beispiel #13
0
 /// <summary>
 /// Clear burn icon when a molotov is no more burning
 /// </summary>
 /// <param name="positionPoint"></param>
 public void DrawMolotovEnded(PositionPoint positionPoint)
 {
     try
     {
         Bitmap icon = GetIconBitmapFromStream("molotov_burning");
         ClearIcon(MolotovLayer, icon, positionPoint);
         icon.Dispose();
     }
     catch (Exception e)
     {
         Logger.Instance.Log(e);
     }
 }
Beispiel #14
0
        /// <summary>
        /// Draw weapon icon
        /// </summary>
        /// <param name="positionPoint"></param>
        public async void DrawWeapon(PositionPoint positionPoint)
        {
            var    ev   = (WeaponFire)positionPoint.Event;
            Bitmap icon = null;

            switch (ev.Weapon.Name)
            {
            case "Flashbang":
                icon = new Bitmap(Properties.Resources.flashbang);
                break;

            case "He Grenade":
                icon = new Bitmap(Properties.Resources.hegrenade);
                break;

            case "Smoke":
                icon = new Bitmap(Properties.Resources.smokegrenade);
                break;

            case "Decoy":
                icon = new Bitmap(Properties.Resources.decoy);
                break;

            case "Molotov":
                icon = new Bitmap(Properties.Resources.molotov);
                break;

            case "Incendiary":
                icon = new Bitmap(Properties.Resources.incendiary);
                break;
            }

            if (icon != null)
            {
                try
                {
                    DrawIcon(WeaponLayer, icon, positionPoint);

                    await Task.Delay(2000);

                    ClearIcon(WeaponLayer, icon, positionPoint);

                    icon.Dispose();
                }
                catch (Exception e)
                {
                    Logger.Instance.Log(e);
                }
            }
        }
Beispiel #15
0
        /// <summary>
        /// Draw icon when the bomb has been planted
        /// </summary>
        /// <param name="positionPoint"></param>
        public void DrawBombPlanted(PositionPoint positionPoint)
        {
            try
            {
                Bitmap icon = new Bitmap(Properties.Resources.bomb);
                DrawIcon(WeaponLayer, icon, positionPoint);

                icon.Dispose();
            }
            catch (Exception e)
            {
                Logger.Instance.Log(e);
            }
        }
Beispiel #16
0
        /// <summary>
        /// Draw icon when a decoy start "screaming"
        /// </summary>
        /// <param name="positionPoint"></param>
        public void DrawDecoyStarted(PositionPoint positionPoint)
        {
            try
            {
                Bitmap icon = GetIconBitmapFromStream("decoy_screaming");
                DrawIcon(DecoyLayer, icon, positionPoint);

                icon.Dispose();
            }
            catch (Exception e)
            {
                Logger.Instance.Log(e);
            }
        }
Beispiel #17
0
        /// <summary>
        /// Draw icon when a decoy start "screaming"
        /// </summary>
        /// <param name="positionPoint"></param>
        public void DrawDecoyStarted(PositionPoint positionPoint)
        {
            try
            {
                Bitmap icon = new Bitmap(Properties.Resources.decoy_screaming);
                DrawIcon(DecoyLayer, icon, positionPoint);

                icon.Dispose();
            }
            catch (Exception e)
            {
                Logger.Instance.Log(e);
            }
        }
Beispiel #18
0
        /// <summary>
        /// Draw icon when the bomb has been planted
        /// </summary>
        /// <param name="positionPoint"></param>
        public void DrawBombPlanted(PositionPoint positionPoint)
        {
            try
            {
                Bitmap icon = GetIconBitmapFromStream("bomb");
                DrawIcon(WeaponLayer, icon, positionPoint);

                icon.Dispose();
            }
            catch (Exception e)
            {
                Logger.Instance.Log(e);
            }
        }
Beispiel #19
0
        /// <summary>
        /// Draw weapon icon
        /// </summary>
        /// <param name="positionPoint"></param>
        public async void DrawWeapon(PositionPoint positionPoint)
        {
            var    ev   = (WeaponFireEvent)positionPoint.Event;
            Bitmap icon = null;

            switch (ev.Weapon.Name)
            {
            case "Flashbang":
                icon = GetIconBitmapFromStream("flashbang");
                break;

            case "He Grenade":
                icon = GetIconBitmapFromStream("hegrenade");
                break;

            case "Smoke":
                icon = GetIconBitmapFromStream("smokegrenade");
                break;

            case "Decoy":
                icon = GetIconBitmapFromStream("decoy");
                break;

            case "Molotov":
                icon = GetIconBitmapFromStream("molotov");
                break;

            case "Incendiary":
                icon = GetIconBitmapFromStream("incendiary");
                break;
            }

            if (icon != null)
            {
                try
                {
                    DrawIcon(WeaponLayer, icon, positionPoint);

                    await Task.Delay(2000);

                    ClearIcon(WeaponLayer, icon, positionPoint);

                    icon.Dispose();
                }
                catch (Exception e)
                {
                    Logger.Instance.Log(e);
                }
            }
        }
    private IEnumerator MovingRoutine(PositionPoint targetPosition)
    {
        positionPoint = targetPosition;
        // Debug.Log("Started moving to position.");

        while (Vector3.SqrMagnitude(targetPosition.Position - transform.position) > 0.01f)
        {
            transform.position = Vector3.MoveTowards(transform.position, targetPosition.Position, moveSpeed * Time.deltaTime);
            yield return(new WaitForEndOfFrame());
        }

        transform.parent = positionPoint.transform;

        OnPositionReached?.Invoke();
    }
Beispiel #21
0
        /// <summary>
        /// Draw icon when a flashbang exploded
        /// </summary>
        /// <param name="positionPoint"></param>
        public async void DrawFlashbangExploded(PositionPoint positionPoint)
        {
            try
            {
                Bitmap icon = GetIconBitmapFromStream("flashbang_exploded");
                DrawIcon(FlashbangLayer, icon, positionPoint);

                await Task.Delay(2000);

                ClearIcon(FlashbangLayer, icon, positionPoint);

                icon.Dispose();
            }
            catch (Exception e)
            {
                Logger.Instance.Log(e);
            }
        }
Beispiel #22
0
        /// <summary>
        /// Draw icon when a hegrenade exploded
        /// </summary>
        /// <param name="positionPoint"></param>
        public async void DrawExplosiveNadeExploded(PositionPoint positionPoint)
        {
            try
            {
                Bitmap icon = new Bitmap(Properties.Resources.he_exploded);
                DrawIcon(HegrenadeLayer, icon, positionPoint);

                await Task.Delay(2000);

                ClearIcon(HegrenadeLayer, icon, positionPoint);

                icon.Dispose();
            }
            catch (Exception e)
            {
                Logger.Instance.Log(e);
            }
        }
Beispiel #23
0
        /// <summary>
        /// Draw icon when a player has been killed
        /// </summary>
        /// <param name="positionPoint"></param>
        public async void DrawKill(PositionPoint positionPoint)
        {
            try
            {
                Bitmap icon = GetIconBitmapFromStream("kill");
                DrawIcon(KillLayer, icon, positionPoint);

                await Task.Delay(2000);

                ClearIcon(KillLayer, icon, positionPoint);

                icon.Dispose();
            }
            catch (Exception e)
            {
                Logger.Instance.Log(e);
            }
        }
Beispiel #24
0
        /// <summary>
        /// Draw icon when a hegrenade exploded
        /// </summary>
        /// <param name="positionPoint"></param>
        public async void DrawExplosiveNadeExploded(PositionPoint positionPoint)
        {
            try
            {
                Bitmap icon = GetIconBitmapFromStream("he_exploded");
                DrawIcon(HegrenadeLayer, icon, positionPoint);

                await Task.Delay(2000);

                ClearIcon(HegrenadeLayer, icon, positionPoint);

                icon.Dispose();
            }
            catch (Exception e)
            {
                Logger.Instance.Log(e);
            }
        }
Beispiel #25
0
        /// <summary>
        /// Draw icon when a player has been killed
        /// </summary>
        /// <param name="positionPoint"></param>
        public async void DrawKill(PositionPoint positionPoint)
        {
            try
            {
                Bitmap icon = new Bitmap(Properties.Resources.kill);
                DrawIcon(KillLayer, icon, positionPoint);

                await Task.Delay(2000);

                ClearIcon(KillLayer, icon, positionPoint);

                icon.Dispose();
            }
            catch (Exception e)
            {
                Logger.Instance.Log(e);
            }
        }
Beispiel #26
0
        /// <summary>
        /// Draw successive icons to animate smoke started
        /// </summary>
        /// <param name="positionPoint"></param>
        public async void DrawSmokeStarted(PositionPoint positionPoint)
        {
            try
            {
                Bitmap icon = GetIconBitmapFromStream("smoke_start");
                DrawIcon(SmokeLayer, icon, positionPoint);

                await Task.Delay(1000);

                icon = GetIconBitmapFromStream("smoke");
                DrawIcon(SmokeLayer, icon, positionPoint);

                icon.Dispose();
            }
            catch (Exception e)
            {
                Logger.Instance.Log(e);
            }
        }
Beispiel #27
0
        /// <summary>
        /// Draw successive icons to animate smoke started
        /// </summary>
        /// <param name="positionPoint"></param>
        public async void DrawSmokeStarted(PositionPoint positionPoint)
        {
            try
            {
                Bitmap icon = new Bitmap(Properties.Resources.smoke_start);
                DrawIcon(SmokeLayer, icon, positionPoint);

                await Task.Delay(1000);

                icon = new Bitmap(Properties.Resources.smoke);
                DrawIcon(SmokeLayer, icon, positionPoint);

                icon.Dispose();
            }
            catch (Exception e)
            {
                Logger.Instance.Log(e);
            }
        }
Beispiel #28
0
    public PointRing Create3PointRingInverted(float _size)
    {
        PointRing _newPointRing = InstantiateModule.InstantiateObjectWithScript <PointRing>(PrefabCollection.PointRing);

        PositionPoint[] _positionPoints = new PositionPoint[3];
        for (int i = 0; i < _positionPoints.Length; i++)
        {
            _positionPoints[i] = InstantiateModule.InstantiateObjectWithScript <PositionPoint>(PrefabCollection.PositionPoint);
        }
        _positionPoints[0].transform.position = new Vector3(0 * _size, -2.7f * _size, 5 * _size);
        _positionPoints[1].transform.position = new Vector3(0 * _size, -2.7f * _size, -5 * _size);
        _positionPoints[2].transform.position = new Vector3(0 * _size, 6f * _size, 0 * _size);

        _newPointRing.Points = _positionPoints;
        for (int i = 0; i < _positionPoints.Length; i++)
        {
            _positionPoints[i].transform.SetParent(_newPointRing.transform);
        }
        return(_newPointRing);
    }
Beispiel #29
0
        /// <summary>
        /// Undraw an icon when a decoy is over
        /// </summary>
        /// <param name="positionPoint"></param>
        public async void DrawDecoyEnded(PositionPoint positionPoint)
        {
            try
            {
                Bitmap icon = GetIconBitmapFromStream("decoy_screaming");
                ClearIcon(DecoyLayer, icon, positionPoint);

                icon = GetIconBitmapFromStream("decoy_exploded");
                DrawIcon(DecoyLayer, icon, positionPoint);

                await Task.Delay(1000);

                ClearIcon(DecoyLayer, icon, positionPoint);

                icon.Dispose();
            }
            catch (Exception e)
            {
                Logger.Instance.Log(e);
            }
        }
Beispiel #30
0
        /// <summary>
        /// Undraw an icon when a decoy is over
        /// </summary>
        /// <param name="positionPoint"></param>
        public async void DrawDecoyEnded(PositionPoint positionPoint)
        {
            try
            {
                Bitmap icon = new Bitmap(Properties.Resources.decoy_screaming);
                ClearIcon(DecoyLayer, icon, positionPoint);

                icon = new Bitmap(Properties.Resources.decoy_exploded);
                DrawIcon(DecoyLayer, icon, positionPoint);

                await Task.Delay(1000);

                ClearIcon(DecoyLayer, icon, positionPoint);

                icon.Dispose();
            }
            catch (Exception e)
            {
                Logger.Instance.Log(e);
            }
        }