/// <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); } }
/// <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; } } } }
/// <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); }
/// <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; } }
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)); } } }
public void FreePositionAvailable(PositionPoint targetPosition) { if (!mover) { mover = GetComponent <MoverToPosition>(); } transform.parent = targetPosition.transform; mover.OnPositionReached.AddListener(OnPositionReached); mover.StartMovingToPosition(targetPosition); }
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; }
/// <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); } }
/// <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); } }
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); }
/// <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); } }
/// <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); } }
/// <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); } } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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(); }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
/// <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); } }
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); }
/// <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); } }
/// <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); } }