/// <summary> /// Таймер игры /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void GameTimer_Tick(object sender, EventArgs e) { timer.Text = m + ":" + s; s = s - 1; if (s == -1) { m = m - 1; s = 59; } if (m == -1 && !no_reply) { timer.Text = "Время вышло"; GameTimer.Stop(); // Останавливаем таймер игры EffectTimer.Stop(); // Останавливаем действующие эффекты GlobalTimer.Stop(); // Останавливаем передвижение игроков if (Mouse.mice.Count == 4) { ServerTimer.Stop(); // Прекращаем обмен данных с сервером Server.ConclusionOfGame(); // Подведение итогов Close(); } else if (Mouse.mice.Count == 1) { MessageBox.Show("Время вышло!", "Конец игры"); Close(); } no_reply = true; } }
/// <summary> /// Действия после закрытия GameForm /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void GameForm_FormClosed(object sender, FormClosedEventArgs e) { no_reply = false; GameTimer.Stop(); // Останавливаем таймер игры EffectTimer.Stop(); // Останавливаем действующие эффекты GlobalTimer.Stop(); // Останавливаем передвижение игроков ServerTimer.Stop(); // Останавливаем обмен данных с сервером MenuForm menu_form = Owner as MenuForm; menu_form.Show(); // Вызываем FormMenu }
/// <summary> /// Таймер действия эффектов (иначе - баффов) /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void EffectTimer_Tick(object sender, EventArgs e) { time_of_effect = time_of_effect - 1; // Если таймер закончился if (time_of_effect == -1) { EffectTimer.Stop(); // Если действовало ускорение, то возвращаем исходную скорость if (Mouse.mice[current_mouse].speed == 3) { Mouse.mice[current_mouse].speed = 2; } // Если действовало замедление, то возвращаем исходную скорость if (Mouse.mice[current_mouse].speed == 1) { Mouse.mice[current_mouse].speed = 2; } } }
public void StopSpell() { effectTimer.Stop(); }
private void Activate(object parent) { if (Effect == JewelEffect.None || Charges <= 0) { return; } if (parent is Mobile) { Mobile from = (Mobile)parent; string modName = this.Serial.ToString(); switch (Effect) { case JewelEffect.Strength: from.AddStatMod(new StatMod(StatType.Str, modName + "Str", 10, TimeSpan.Zero)); from.CheckStatTimers(); from.FixedParticles(0x375a, 10, 15, 5017, EffectLayer.Waist); from.PlaySound(0x1ee); break; case JewelEffect.Agility: from.AddStatMod(new StatMod(StatType.Dex, modName + "Dex", 10, TimeSpan.Zero)); from.CheckStatTimers(); from.FixedParticles(0x375a, 10, 15, 5010, EffectLayer.Waist); from.PlaySound(0x28e); break; case JewelEffect.Cunning: from.AddStatMod(new StatMod(StatType.Int, modName + "Int", 10, TimeSpan.Zero)); from.CheckStatTimers(); from.FixedParticles(0x375a, 10, 15, 5011, EffectLayer.Head); from.PlaySound(0x1eb); break; case JewelEffect.Bless: from.AddStatMod(new StatMod(StatType.Str, modName + "BlessStr", 10, TimeSpan.Zero)); from.AddStatMod(new StatMod(StatType.Dex, modName + "BlessDex", 10, TimeSpan.Zero)); from.AddStatMod(new StatMod(StatType.Int, modName + "BlessInt", 10, TimeSpan.Zero)); from.CheckStatTimers(); from.FixedParticles(0x373a, 10, 15, 5018, EffectLayer.Waist); from.PlaySound(0x1ea); break; case JewelEffect.Weaken: from.AddStatMod(new StatMod(StatType.Str, modName + "LowerStr", -10, TimeSpan.Zero)); from.CheckStatTimers(); from.FixedParticles(0x3779, 10, 15, 5009, EffectLayer.Waist); from.PlaySound(0x1e6); break; case JewelEffect.Clumsy: from.AddStatMod(new StatMod(StatType.Dex, modName + "LowerDex", -10, TimeSpan.Zero)); from.CheckStatTimers(); from.FixedParticles(0x3779, 10, 15, 5002, EffectLayer.Head); from.PlaySound(0x1df); break; case JewelEffect.Feeblemind: from.AddStatMod(new StatMod(StatType.Int, modName + "LowerInt", -10, TimeSpan.Zero)); from.CheckStatTimers(); from.FixedParticles(0x3779, 10, 15, 5004, EffectLayer.Head); from.PlaySound(0x1e4); break; case JewelEffect.Curse: from.AddStatMod(new StatMod(StatType.Str, modName + "CurseStr", -10, TimeSpan.Zero)); from.AddStatMod(new StatMod(StatType.Dex, modName + "CurseDex", -10, TimeSpan.Zero)); from.AddStatMod(new StatMod(StatType.Int, modName + "CurseInt", -10, TimeSpan.Zero)); from.CheckStatTimers(); from.FixedParticles(0x374a, 10, 15, 5028, EffectLayer.Waist); from.PlaySound(0x1ea); break; case JewelEffect.NightSight: from.EndAction(typeof(LightCycle)); from.BeginAction(typeof(LightCycle)); from.LightLevel = (int)LightCycle.DungeonLevel; from.FixedParticles(0x376a, 9, 32, 5007, EffectLayer.Waist); from.PlaySound(0x1e3); break; case JewelEffect.Invisibility: Effects.SendLocationParticles(EffectItem.Create(new Point3D(from.X, from.Y, from.Z + 16), from.Map, EffectItem.DefaultDuration), 0x376A, 10, 15, 5045); from.PlaySound(0x203); from.Hidden = true; break; case JewelEffect.MagicReflection: from.MagicDamageAbsorb = 15; from.FixedParticles(0x375a, 10, 15, 5037, EffectLayer.Waist); from.PlaySound(0x1e9); break; case JewelEffect.Protection: from.VirtualArmorMod += 10; from.FixedParticles(0x375a, 9, 20, 5016, EffectLayer.Waist); from.PlaySound(0x1ed); break; } ConsumeCharge(from, this); if (m_st != null) { m_st.Stop(); } m_st = new EffectTimer(from, this); m_st.Start(); } }
/// <summary> /// Изменение координат мыши и действия при нахождении бонусов и сыра /// </summary> private void MovementOfMouse() { int x = Mouse.mice[current_mouse].position.Left - Server.shift_of_map_Left; // Координата X текущей мыши int y = Mouse.mice[current_mouse].position.Top - Server.shift_of_map_Top; // Координата Y текущей мыши int step = Convert.ToInt32(Mouse.mice[current_mouse].speed); // Шаг double double_x = (Convert.ToDouble(x)) / Server.size_of_cell; // Позиция X внутри ячейки double double_y = (Convert.ToDouble(y)) / Server.size_of_cell; // Позиция Y внутри ячейки // Нажата клавиша влево if (key_left_pressed) { // Проверка на преграды и прочее if (CheckingOfMovement(Mouse.mice[current_mouse].position.Left, Mouse.mice[current_mouse].position.Top, "left", current_mouse)) { Mouse.mice[current_mouse].position.Location = new Point(Mouse.mice[current_mouse].position.Left - step, Mouse.mice[current_mouse].position.Top); } } // Нажата клавиша вправо if (key_right_pressed) { // Проверка на преграды и прочее if (CheckingOfMovement(Mouse.mice[current_mouse].position.Left, Mouse.mice[current_mouse].position.Top, "right", current_mouse)) { Mouse.mice[current_mouse].position.Location = new Point(Mouse.mice[current_mouse].position.Left + step, Mouse.mice[current_mouse].position.Top); } } // Нажата клавиша вверх if (key_up_pressed) { // Проверка на преграды и прочее if (CheckingOfMovement(Mouse.mice[current_mouse].position.Left, Mouse.mice[current_mouse].position.Top, "up", current_mouse)) { Mouse.mice[current_mouse].position.Location = new Point(Mouse.mice[current_mouse].position.Left, Mouse.mice[current_mouse].position.Top - step); } } // Нажата клавиша вниз if (key_down_pressed) { // Проверка на преграды и прочее if (CheckingOfMovement(Mouse.mice[current_mouse].position.Left, Mouse.mice[current_mouse].position.Top, "down", current_mouse)) { Mouse.mice[current_mouse].position.Location = new Point(Mouse.mice[current_mouse].position.Left, Mouse.mice[current_mouse].position.Top + step); } } // Если никакая клавиша не нажата if (!key_left_pressed && !key_right_pressed && !key_up_pressed && !key_down_pressed) { int result = AutoAligment(Mouse.mice[current_mouse].position.Left, Mouse.mice[current_mouse].position.Top); // Проверка на автоцентровку (выравнивание по правому краю) if (result == 1) { int coordinate_X_of_right_cell = Convert.ToInt32(Math.Ceiling(double_x) * Server.size_of_cell + Server.shift_of_map_Left); Mouse.mice[current_mouse].position.Location = new Point(coordinate_X_of_right_cell, y + Server.shift_of_map_Left); } // Проверка на автоцентровку (выравнивание по левому краю) if (result == 2) { int coordinate_X_of_left_cell = Convert.ToInt32(Math.Floor(double_x) * Server.size_of_cell + Server.shift_of_map_Left); Mouse.mice[current_mouse].position.Location = new Point(coordinate_X_of_left_cell, y + Server.shift_of_map_Left); } // Проверка на автоцентровку (выравнивание по нижнему краю) if (result == 3) { int coordinate_Y_of_down_cell = Convert.ToInt32(Math.Ceiling(double_y) * Server.size_of_cell + Server.shift_of_map_Top); Mouse.mice[current_mouse].position.Location = new Point(x + Server.shift_of_map_Left, coordinate_Y_of_down_cell); } // Проверка на автоцентровку (выравнивание по верхнему краю) if (result == 4) { int coordinate_Y_of_up_cell = Convert.ToInt32(Math.Floor(double_y) * Server.size_of_cell + Server.shift_of_map_Top); Mouse.mice[current_mouse].position.Location = new Point(x + Server.shift_of_map_Left, coordinate_Y_of_up_cell); } } // Если подобрали бонус if (bonus) { bonus = false; Mouse.mice[current_mouse].speed = 3; EffectTimer.Stop(); // Останавливаем таймер, если он запущен time_of_effect = 10; EffectTimer.Start(); // Запускаем таймер эффекта бонуса Server.bonus_sound.Play(); } // Если подобрали сыр if (cheese) { cheese = false; Mouse.mice[current_mouse].number_of_cheeses++; Server.cheese_sound.Play(); } // Если наткнулись на мышеловку if (trap) { trap = false; Mouse.mice[current_mouse].speed = 1; EffectTimer.Stop(); // Останавливаем таймер, если он запущен time_of_effect = 10; EffectTimer.Start(); // Запускаем таймер эффекта бонуса Server.cheese_sound.Play(); } }