/// <summary> /// Метод обновления параметров объекта. /// </summary> public override void Update() { Pos.X = Pos.X + Dir.X; Pos.Y = Pos.Y + Dir.Y; if (Pos.X < -Size.Width) { //Если объект доходит до края экрана, то генерируется событие EventMessage?.Invoke(this, new MessageEventArgs("Корабль не был уничтожен, и теперь планета в опасности.", -10, MessageEventArgs.EventTypeEnum.OutOfScreen)); } if (Pos.Y < 0 || Pos.Y > ScreenSize.Height) //Если объект доходит до края экрана по оси Y, он меняет направление движения по оси Y на противоположное { Dir.Y *= -1; } else { Dir.Y = Rand.Next(-10, 10); //Направление и скорость движения по оси Y выбирается случайным образом } if (CooldownCounter == 0 && CooldownFlag) // перезарядка оружия (CooldownFlag=true значит идет перезарядка) { CooldownFlag = false; } else if (CooldownCounter > 0 && CooldownFlag) { CooldownCounter--; } }
/// <summary> /// Метод, описывающий получение урона. /// </summary> /// <param name="damage">Количество жизней, которые следует отнять у объекта</param> public void GetDamage(int damage) { System.Media.SystemSounds.Asterisk.Play(); Health -= damage; EventMessage?.Invoke(this, new MessageEventArgs("Корабль получил повреждения.", damage, MessageEventArgs.EventTypeEnum.GotDamage)); if (Health <= 0) { Die(); } }
private void RaiseEventMessage() { try { EventMessage?.Invoke(); } catch { } }
/// <summary> /// Метод, описывающий лечение объекта. /// </summary> /// <param name="health">количество здоровья, на которое следует увеличить жизни объекта.</param> public void GetHealed(int health) { if (Health < MaxHealth) { System.Media.SystemSounds.Beep.Play(); Health += health; } if (Health > MaxHealth) { Health = MaxHealth; EventMessage?.Invoke(this, new MessageEventArgs("Прочность корабля полностью восстановлена.", health, MessageEventArgs.EventTypeEnum.Healed)); } else { EventMessage?.Invoke(this, new MessageEventArgs("Корабль игрока отремантирован...", health, MessageEventArgs.EventTypeEnum.Healed)); } }
private static void SecondSession() { Guid id = Guid.NewGuid(); var session = WebRtcManager.AddSession(id.ToString()); ManualResetEvent offerEvt = new ManualResetEvent(false); string offer = string.Empty; EventMessage += (s, ex) => { if (ex.Msg.Source == id) { return; } else if (ex.Msg.Sdp.Type == SdpTypes.Answer) { session.Spitfire.SetOfferReply(ex.Msg.Sdp.Type.ToString().ToLower(), ex.Msg.Sdp.Sdp); } }; session.OnIceCandidateFound += (s, ex) => { EventMessage.Invoke(null, new EventMessageEventArgs(new Message(id, null, null, ex.IceCandidate))); }; session.Spitfire.OnSuccessOffer += (ex) => { offer = ex.Sdp; offerEvt.Set(); }; session.DataChannelOpened += (s, ex) => { session.Spitfire.DataChannelSendText("default", "Hello World!!! Data channel is open"); }; session.Spitfire.CreateOffer(); offerEvt.WaitOne(); EventMessage.Invoke(null, new EventMessageEventArgs(new Message(id, offer))); offerEvt.Reset(); offerEvt.WaitOne(); }
private static void SecondSession2() { Guid id = Guid.NewGuid(); ManualResetEvent offerEvt = new ManualResetEvent(false); ManualResetEvent waitEvt = new ManualResetEvent(false); string offer = string.Empty; WebRtcSession session = null; List <SpitfireIceCandidate> candidates = new List <SpitfireIceCandidate>(); EventMessage += (s, ex) => { if (ex.Msg.Source == id) { return; } if (session == null && ex.Msg.IceCandidate != null) { candidates.Add(ex.Msg.IceCandidate); } else if (session == null) { offerEvt.Set(); offer = ex.Msg.Msg; } else if (ex.Msg.IceCandidate != null) { if (!session.Spitfire.AddIceCandidate(ex.Msg.IceCandidate.SdpMid, ex.Msg.IceCandidate.SdpIndex, ex.Msg.IceCandidate.Sdp)) { Console.WriteLine("Unable to add"); } } }; offerEvt.WaitOne(); session = WebRtcManager.AddSession(id.ToString(), offer); session.Spitfire.OnDataMessage += (s, ex) => { Console.WriteLine("Meesage from peer:" + ex); }; while (session.AnswerSdp == null) { Thread.Sleep(100); } EventMessage.Invoke(null, new EventMessageEventArgs(new Message(id, "Answer", session.AnswerSdp))); if (candidates.Count > 0) { foreach (var c in candidates) { if (!session.Spitfire.AddIceCandidate(c.SdpMid, c.SdpIndex, c.Sdp)) { Console.WriteLine("Unable to add"); } } } while (true) { if (waitEvt.WaitOne(100)) { break; } } }
/// <summary> /// Метод, описывающий смерть объекта. /// </summary> public void Die() { System.Media.SystemSounds.Exclamation.Play(); EventMessage?.Invoke(this, new MessageEventArgs("Корабль игрока уничтожен.", ScoredPoints, MessageEventArgs.EventTypeEnum.Killed)); }
public void Message(int playerID, string text) { EventMessage?.Invoke(playerID, text); }
public static void OnEventMessage() => EventMessage?.Invoke();
/// <summary> /// Метод, описывающий смерть врага. /// </summary> public void Die() { System.Media.SystemSounds.Exclamation.Play(); EventMessage?.Invoke(this, new MessageEventArgs("Враг уничтожен!", Points, MessageEventArgs.EventTypeEnum.Killed)); }
/// <summary> /// 事件信息 /// </summary> /// <param name="eventInfo"></param> private void Op_CHDEventInfo(CHDEventInfo eventInfo) { EventMessage?.Invoke(eventInfo); }
public void InvokeEvent() { EventMessage?.Invoke(); }