예제 #1
0
        static void ChatTextBox_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Enter)
            {
                e.Handled = true;
                if (!string.IsNullOrEmpty(ChatTextBox.Text))
                {
                    OutBound.Chat();

                    if (ChatTextBox.Text[0] == '/')
                    {
                        RecieveChat(new ChatInfo {
                            Message = ChatTextBox.TextBox.Text, Type = MirChatType.OutBoundWhisper
                        });
                        LastPM = ChatTextBox.Text.Substring(1);
                        int TempI = LastPM.IndexOf(' ');
                        if (TempI != -1)
                        {
                            LastPM = LastPM.Substring(0, TempI);
                        }
                    }
                }
                ChatTextBox.Visible = false;
                ChatTextBox.Text    = string.Empty;
            }
            else if (e.KeyChar == (char)Keys.Escape)
            {
                e.Handled           = true;
                ChatTextBox.Visible = false;
                ChatTextBox.Text    = string.Empty;
            }
            else if (e.KeyChar == (char)Keys.Tab)
            {
                e.Handled = false;
            }
        }
예제 #2
0
 static void LoginButton_Click(object sender, EventArgs e)
 {
     LoginButton.Enabled = false;
     OutBound.Login();
 }
예제 #3
0
 static void ConfirmButton_Click(object sender, EventArgs e)
 {
     ConfirmButton.Enabled        = false;
     CharacterNameTextBox.Enabled = false;
     OutBound.NewCharacter();
 }
예제 #4
0
 private static void ConfirmButton_Click(object sender, EventArgs e)
 {
     ConfirmButton.Enabled = false;
     OutBound.ChangePassword();
 }
예제 #5
0
 public static OutBoundView ConvertToOutBoundView(this OutBound model)
 {
     return(Mapper.Map <OutBound, OutBoundView>(model));
 }
예제 #6
0
 static void ConfirmButton_Click(object sender, EventArgs e)
 {
     ConfirmButton.Enabled = false;
     OutBound.NewAccount();
 }
예제 #7
0
 static void StartGameButton_Click(object sender, EventArgs e)
 {
     StartGameButton.Enabled = false;
     OutBound.StartGame();
 }
예제 #8
0
        private void MoveItem()
        {
            if (SelectedCell == this)
            {
                SelectedCell = null;
                return;
            }

            UserItem I;

            if (SelectedCell != null)
            {
                if (SelectedCell.Item == null)
                {
                    SelectedCell = null;
                    return;
                }

                switch (GridType)
                {
                    #region To Inventory
                case MirGridType.Inventory:
                    switch (SelectedCell.GridType)
                    {
                    case MirGridType.Inventory:         //From Inventory
                        OutBound.MoveItem(GridType, SelectedCell.ItemSlot, ItemSlot);
                        if (Item == null)
                        {
                            Item = SelectedCell.Item;
                            SelectedCell.Item = null;
                            SelectedCell      = null;
                            return;
                        }
                        I    = Item;
                        Item = SelectedCell.Item;
                        SelectedCell.Item = I;
                        return;

                    case MirGridType.Equipment:         // From Equipment
                        if (!CanRemoveItem(SelectedCell.Item))
                        {
                            SelectedCell = null;
                            return;
                        }

                        OutBound.RemoveItem(GridType, SelectedCell.Item.UniqueID, ItemSlot);

                        if (ItemArray[ItemSlot] == null)
                        {
                            ItemArray[ItemSlot] = SelectedCell.Item;
                            SelectedCell.Item   = null;
                            SelectedCell        = null;
                            MapObject.User.RefreshLibraries();
                            MapObject.User.CalculateWeight();
                            return;
                        }

                        for (int X = 0; X < ItemArray.Length; X++)
                        {
                            if (ItemArray[X] == null)
                            {
                                ItemArray[X]      = SelectedCell.Item;
                                SelectedCell.Item = null;
                                SelectedCell      = null;
                                MapObject.User.RefreshLibraries();
                                MapObject.User.CalculateWeight();
                                return;
                            }
                        }
                        break;
                    }
                    break;

                    #endregion
                    #region To Equipment
                case MirGridType.Equipment:
                {
                    if (CorrectSlot(SelectedCell.Item))
                    {
                        if (CanWearItem(SelectedCell.Item))
                        {
                            OutBound.EquipItem(SelectedCell.GridType, SelectedCell.Item.UniqueID, ItemSlot);
                            I    = Item;
                            Item = SelectedCell.Item;
                            SelectedCell.Item = I;
                        }
                        SelectedCell = null;
                        MapObject.User.RefreshLibraries();
                        MapObject.User.CalculateWeight();
                    }
                    return;
                }
                    #endregion
                }

                return;
            }

            if (Item != null)
            {
                SelectedCell = this;
            }
        }
예제 #9
0
        public void UseItem()
        {
            if (Item == null)
            {
                return;
            }

            UserItem Temp;

            switch (Item.Info.ItemType)
            {
            case MirItemType.Weapon:
                if (CharacterDialog.WeaponCell.CanWearItem(Item))
                {
                    OutBound.EquipItem(GridType, Item.UniqueID, CharacterDialog.WeaponCell.ItemSlot);
                    Temp = CharacterDialog.WeaponCell.Item;
                    CharacterDialog.WeaponCell.Item = Item;
                    Item = Temp;
                    MapObject.User.RefreshLibraries();
                }
                break;

            case MirItemType.ArmourMale:
            case MirItemType.ArmourFemale:
                if (CharacterDialog.ArmorCell.CanWearItem(Item))
                {
                    OutBound.EquipItem(GridType, Item.UniqueID, CharacterDialog.ArmorCell.ItemSlot);
                    Temp = CharacterDialog.ArmorCell.Item;
                    CharacterDialog.ArmorCell.Item = Item;
                    Item = Temp;
                    MapObject.User.RefreshLibraries();
                }
                break;

            case MirItemType.Helmet:
                if (CharacterDialog.HelmetCell.CanWearItem(Item))
                {
                    OutBound.EquipItem(GridType, Item.UniqueID, CharacterDialog.HelmetCell.ItemSlot);
                    Temp = CharacterDialog.HelmetCell.Item;
                    CharacterDialog.HelmetCell.Item = Item;
                    Item = Temp;
                    MapObject.User.RefreshLibraries();
                }
                return;

            case MirItemType.Necklace:
                if (CharacterDialog.NecklaceCell.CanWearItem(Item))
                {
                    OutBound.EquipItem(GridType, Item.UniqueID, CharacterDialog.NecklaceCell.ItemSlot);
                    Temp = CharacterDialog.NecklaceCell.Item;
                    CharacterDialog.NecklaceCell.Item = Item;
                    Item = Temp;
                    MapObject.User.RefreshLibraries();
                }
                break;

            case MirItemType.Bracelet:
                if (CharacterDialog.BraceletRCell.Item == null && CharacterDialog.BraceletRCell.CanWearItem(Item))
                {
                    OutBound.EquipItem(GridType, Item.UniqueID, CharacterDialog.BraceletRCell.ItemSlot);
                    Temp = CharacterDialog.BraceletRCell.Item;
                    CharacterDialog.BraceletRCell.Item = Item;
                    Item = Temp;
                    MapObject.User.RefreshLibraries();
                }
                else if (CharacterDialog.BraceletLCell.CanWearItem(Item))
                {
                    OutBound.EquipItem(GridType, Item.UniqueID, CharacterDialog.BraceletLCell.ItemSlot);
                    Temp = CharacterDialog.BraceletLCell.Item;
                    CharacterDialog.BraceletLCell.Item = Item;
                    Item = Temp;
                    MapObject.User.RefreshLibraries();
                }
                break;

            case MirItemType.Ring:
                if (CharacterDialog.RingRCell.Item == null && CharacterDialog.RingRCell.CanWearItem(Item))
                {
                    OutBound.EquipItem(GridType, Item.UniqueID, CharacterDialog.RingRCell.ItemSlot);
                    Temp = CharacterDialog.RingRCell.Item;
                    CharacterDialog.RingRCell.Item = Item;
                    Item = Temp;
                    MapObject.User.RefreshLibraries();
                }
                else if (CharacterDialog.RingLCell.CanWearItem(Item))
                {
                    OutBound.EquipItem(GridType, Item.UniqueID, CharacterDialog.RingLCell.ItemSlot);
                    Temp = CharacterDialog.RingLCell.Item;
                    CharacterDialog.RingLCell.Item = Item;
                    Item = Temp;
                    MapObject.User.RefreshLibraries();
                }
                break;

            case MirItemType.Amulet:
                if (CharacterDialog.AmuletCell.CanWearItem(Item))
                {
                    OutBound.EquipItem(GridType, Item.UniqueID, CharacterDialog.AmuletCell.ItemSlot);
                    Temp = CharacterDialog.AmuletCell.Item;
                    CharacterDialog.AmuletCell.Item = Item;
                    Item = Temp;
                    MapObject.User.RefreshLibraries();
                }
                break;

            case MirItemType.Belt:
                if (CharacterDialog.BeltCell.CanWearItem(Item))
                {
                    OutBound.EquipItem(GridType, Item.UniqueID, CharacterDialog.BeltCell.ItemSlot);
                    Temp = CharacterDialog.BeltCell.Item;
                    CharacterDialog.BeltCell.Item = Item;
                    Item = Temp;
                    MapObject.User.RefreshLibraries();
                }
                break;

            case MirItemType.Boots:
                if (CharacterDialog.BootsCell.CanWearItem(Item))
                {
                    OutBound.EquipItem(GridType, Item.UniqueID, CharacterDialog.BootsCell.ItemSlot);
                    Temp = CharacterDialog.BootsCell.Item;
                    CharacterDialog.BootsCell.Item = Item;
                    Item = Temp;
                    MapObject.User.RefreshLibraries();
                }
                break;

            case MirItemType.Stone:
                if (CharacterDialog.StoneCell.CanWearItem(Item))
                {
                    OutBound.EquipItem(GridType, Item.UniqueID, CharacterDialog.StoneCell.ItemSlot);
                    Temp = CharacterDialog.StoneCell.Item;
                    CharacterDialog.StoneCell.Item = Item;
                    Item = Temp;
                    MapObject.User.RefreshLibraries();
                }
                break;

            case MirItemType.Torch:
                if (CharacterDialog.TorchCell.CanWearItem(Item))
                {
                    OutBound.EquipItem(GridType, Item.UniqueID, CharacterDialog.TorchCell.ItemSlot);
                    Temp = CharacterDialog.TorchCell.Item;
                    CharacterDialog.TorchCell.Item = Item;
                    Item = Temp;
                    MapObject.User.RefreshLibraries();
                }
                break;

            case MirItemType.Potion:
            case MirItemType.Scroll:
                if (CanUseItem() && GridType == MirGridType.Inventory)
                {
                    OutBound.UseItem(GridType, Item.UniqueID);

                    if (Item.Amount > 1)
                    {
                        Item.Amount--;
                    }
                    else
                    {
                        Item = null;
                    }
                }
                break;

            case MirItemType.Tiger:
                break;
            }

            PlayItemSound();
            MapObject.User.CalculateWeight();
        }
예제 #10
0
 public static void LogOut()
 {
     OutBound.LogOut();
     Game_Scene.GameScene.Scene.Enabled = false;
 }
예제 #11
0
 static void DeleteCharacter(object sender, EventArgs e)
 {
     OutBound.DeleteCharacter();
 }
예제 #12
0
        public static void OperateInput()
        {
            MirDirection Dir;
            PlayerObject User = MapObject.User;

            if (User.CanDoAction && MapObject.TargetObject != null && !MapObject.TargetObject.Dead)
            {
                if (MapObject.TargetObject as PlayerObject != null)
                {
                    if (Shift && Functions.InRange(MapObject.TargetObject.Location, MapObject.User.Location, 1) && Main.CanAttack)
                    {
                        Dir = Functions.DirectionFromPoint(MapObject.User.Location, MapObject.TargetObject.Location);
                        MapObject.User.Direction = Dir;
                        MapObject.User.DoAction(MirAction.Attack1);
                        OutBound.Attack(0);
                        return;
                    }
                }
                else if (MapObject.TargetObject as MonsterObject != null)
                {
                    if (Functions.InRange(MapObject.TargetObject.Location, MapObject.User.Location, 1) && Main.CanAttack)
                    {
                        Dir = Functions.DirectionFromPoint(MapObject.User.Location, MapObject.TargetObject.Location);
                        MapObject.User.Direction = Dir;
                        MapObject.User.DoAction(MirAction.Attack1);
                        OutBound.Attack(0);
                        return;
                    }
                }
            }



            if (Scene == MirControl.MouseControl && (MapObject.MouseObject as PlayerObject == null))
            {
                Point TPoint = MousePoint(MouseLocation);
                Dir = MouseDirection(MouseLocation);
                switch (MouseB)
                {
                case MouseButtons.Right:
                    if (MapObject.User.CanDoAction)
                    {
                        if (Math.Abs(TPoint.X - Settings.PlayerOffSet.X) <= 2 && Math.Abs(TPoint.Y - Settings.PlayerOffSet.Y) <= 2)
                        {
                            if (MapObject.User.Frame > 1)
                            {
                                MapObject.User.Direction = Dir;
                                MapObject.User.DoAction(MirAction.Standing);
                                OutBound.Turn();
                                return;
                            }
                        }
                        else if (Main.CanMove)    // && Main.UserCanMove)
                        {
                            if (Main.AllowRun && MapLayer.CanRun(Dir))
                            {
                                MapObject.User.Location  = Functions.PointMove(MapObject.User.Location, Dir, 2);
                                MapObject.User.Direction = Dir;
                                MapObject.User.DoAction(MirAction.Running);
                                OutBound.Run();
                                return;
                            }
                            else if (MapLayer.CanWalk(Dir))
                            {
                                MapObject.User.Location  = Functions.PointMove(MapObject.User.Location, Dir, 1);
                                MapObject.User.Direction = Dir;
                                MapObject.User.DoAction(MirAction.Walking);
                                OutBound.Walk();
                                Main.AllowRun = true;
                                return;
                            }
                            else
                            {
                                MapObject.User.Direction = Dir;
                                MapObject.User.DoAction(MirAction.Standing);
                                OutBound.Turn();
                                return;
                            }
                        }
                    }
                    break;

                case MouseButtons.Left:
                    if (MapObject.User.CanDoAction && Shift)
                    {
                        if (Main.CanAttack)
                        {
                            MapObject.User.Direction = Dir;
                            switch (Main.Rand.Next(3))
                            {
                            case 2:
                                MapObject.User.DoAction(MirAction.Attack1);
                                OutBound.Attack(2);
                                break;

                            case 1:
                                MapObject.User.DoAction(MirAction.Attack2);
                                OutBound.Attack(1);
                                break;

                            default:
                                MapObject.User.DoAction(MirAction.Attack3);
                                OutBound.Attack(0);
                                break;
                            }
                        }
                        return;
                    }
                    else if (MapObject.User.CanDoAction && Alt)
                    {
                        MapObject.User.Direction = Dir;
                        MapObject.User.DoAction(MirAction.Harvest);
                        OutBound.Harvest();
                    }
                    else if (TPoint == Settings.PlayerOffSet)
                    {
                        if (Main.Timer.ElapsedMilliseconds > Main.PickUpTime)
                        {
                            Main.PickUpTime = Main.Timer.ElapsedMilliseconds + 200;
                            for (int I = 0; I < ItemObject.ItemList.Count; I++)
                            {
                                if (ItemObject.ItemList[I].Location == MapObject.User.Location)
                                {
                                    OutBound.PickUp();
                                    return;
                                }
                            }
                        }
                    }
                    else if (MapObject.User.CanDoAction && Main.CanMove)    // && Main.UserCanMove)
                    {
                        if (MapLayer.CanWalk(Dir))
                        {
                            MapObject.User.Location  = Functions.PointMove(MapObject.User.Location, Dir, 1);
                            MapObject.User.Direction = Dir;
                            MapObject.User.DoAction(MirAction.Walking);
                            OutBound.Walk();
                            return;
                        }
                        else
                        {
                            MapObject.User.Direction = Dir;
                            MapObject.User.DoAction(MirAction.Standing);
                            OutBound.Turn();
                            return;
                        }
                    }
                    break;
                }
            }
            if (MapObject.User.CanDoAction && MapObject.TargetObject != null && !MapObject.TargetObject.Dead)
            {
                if (MapObject.TargetObject as PlayerObject != null)
                {
                    if (Shift && !Functions.InRange(MapObject.TargetObject.Location, MapObject.User.Location, 1) && Main.CanMove)
                    {
                        Dir = Functions.DirectionFromPoint(MapObject.User.Location, MapObject.TargetObject.Location);

                        if (MapLayer.CanWalk(Dir))
                        {
                            MapObject.User.Location  = Functions.PointMove(MapObject.User.Location, Dir, 1);
                            MapObject.User.Direction = Dir;
                            MapObject.User.DoAction(MirAction.Walking);
                            OutBound.Walk();
                            return;
                        }
                    }
                }
                else if (MapObject.TargetObject as MonsterObject != null)
                {
                    if (!Functions.InRange(MapObject.TargetObject.Location, MapObject.User.Location, 1) && Main.CanMove)
                    {
                        Dir = Functions.DirectionFromPoint(MapObject.User.Location, MapObject.TargetObject.Location);

                        if (MapLayer.CanWalk(Dir))
                        {
                            MapObject.User.Location  = Functions.PointMove(MapObject.User.Location, Dir, 1);
                            MapObject.User.Direction = Dir;
                            MapObject.User.DoAction(MirAction.Walking);
                            OutBound.Walk();
                            return;
                        }
                    }
                }
            }
        }
예제 #13
0
        static void Scene_MouseDown(object sender, EventArgs e)
        {
            MouseEventArgs ME = e as MouseEventArgs;

            if (ME == null)
            {
                return;
            }

            if (ME.Button == MouseButtons.Left)
            {
                if (MirItemCell.SelectedCell != null)
                {
                    if (MirItemCell.SelectedCell.GridType == MirGridType.Equipment || MirItemCell.SelectedCell.GridType == MirGridType.Trade)
                    {
                        MirItemCell.SelectedCell = null;
                        return;
                    }

                    MirMessageBox MMBox = new MirMessageBox(
                        string.Format("Are you sure you want to drop {0}?", MirItemCell.SelectedCell.Item.Info.ItemName),
                        MessageBoxButtons.YesNo);

                    MirItemCell Cell = MirItemCell.SelectedCell;

                    MMBox.YesButton.Click += (O, A) =>
                    {
                        OutBound.DropItem(Cell.GridType, Cell.Item.UniqueID);
                        Cell.Item = null;
                        MapObject.User.CalculateWeight();
                    };
                    MMBox.Show();

                    MirItemCell.SelectedCell = null;

                    return;
                }
                else if (MirItemCell.PickedUpGold)
                {
                    MirInputBox MIBox = new MirInputBox("How much do you want to drop?");

                    MIBox.OKButton.Click += (O, A) =>
                    {
                        int Amount;
                        if (int.TryParse(MIBox.InputTextBox.Text, out Amount) && Amount > 0 && Amount <= MapObject.User.Gold)
                        {
                            OutBound.DropGold(Amount);
                            MapObject.User.Gold -= Amount;
                        }
                        MIBox.Dispose();
                    };
                    MIBox.Show();
                    MirItemCell.PickedUpGold = false;

                    return;
                }
            }

            MouseB |= ME.Button;

            if (ME.Button == MouseButtons.Left)
            {
                if (MapObject.MouseObject != MapObject.User && MapObject.MouseObject != null && !MapObject.MouseObject.Dead)
                {
                    MapObject.TargetObject = MapObject.MouseObject;
                }
                else
                {
                    MapObject.TargetObject = null;
                }
            }
        }
예제 #14
0
        static void Scene_KeyDown(object sender, KeyEventArgs e)
        {
            switch (e.KeyCode)
            {
            case Keys.Up:
                ChatPanel.StartIndex--;
                ChatPanel.UpdateChatList();
                break;

            case Keys.Down:
                ChatPanel.StartIndex++;
                ChatPanel.UpdateChatList();
                break;

            case Keys.V:
                MiniMap.Toggle();
                break;

            case Keys.F9:
            case Keys.I:
                if (InventoryDialog.Window.Visible)
                {
                    InventoryDialog.Hide();
                }
                else
                {
                    InventoryDialog.Show();
                }
                break;

            case Keys.F10:
            case Keys.C:
                if (CharacterDialog.Window.Visible && CharacterDialog.CharacterPage.Visible)
                {
                    CharacterDialog.Hide();
                }
                else
                {
                    CharacterDialog.Show();
                    CharacterDialog.CharacterButton_Click(null, EventArgs.Empty);
                }
                break;

            case Keys.F11:
            case Keys.S:
                if (CharacterDialog.Window.Visible && CharacterDialog.SkillPage.Visible)
                {
                    CharacterDialog.Hide();
                }
                else
                {
                    CharacterDialog.Show();
                    CharacterDialog.SkillButton_Click(null, EventArgs.Empty);
                }
                break;

            case Keys.Escape:
                InventoryDialog.Hide();
                CharacterDialog.Hide();
                break;

            case Keys.Tab:
                if (Main.Timer.ElapsedMilliseconds > Main.PickUpTime)
                {
                    Main.PickUpTime = Main.Timer.ElapsedMilliseconds + 200;
                    for (int I = 0; I < ItemObject.ItemList.Count; I++)
                    {
                        if (ItemObject.ItemList[I].Location == MapObject.User.Location)
                        {
                            OutBound.PickUp();
                            return;
                        }
                    }
                }
                break;

            case Keys.X:
                if (!Alt)
                {
                    break;
                }
                LogOut();
                break;

            case Keys.Q:
                if (!Alt)
                {
                    break;
                }
                QuitGame();
                break;

            case Keys.Z:
                if (Ctrl)
                {
                    BeltPanel.Flip();
                }
                else
                {
                    if (BeltPanel.Window.Visible)
                    {
                        BeltPanel.Hide();
                    }
                    else
                    {
                        BeltPanel.Show();
                    }
                }
                break;

            case Keys.NumPad1:
            case Keys.D1:
                if (Main.Time > Main.UseItemTime)
                {
                    BeltPanel.Grid[0].UseItem();
                }
                break;

            case Keys.NumPad2:
            case Keys.D2:
                if (Main.Time > Main.UseItemTime)
                {
                    BeltPanel.Grid[1].UseItem();
                }
                break;

            case Keys.NumPad3:
            case Keys.D3:
                if (Main.Time > Main.UseItemTime)
                {
                    BeltPanel.Grid[2].UseItem();
                }
                break;

            case Keys.NumPad4:
            case Keys.D4:
                if (Main.Time > Main.UseItemTime)
                {
                    BeltPanel.Grid[3].UseItem();
                }
                break;

            case Keys.NumPad5:
            case Keys.D5:
                if (Main.Time > Main.UseItemTime)
                {
                    BeltPanel.Grid[4].UseItem();
                }
                break;

            case Keys.NumPad6:
            case Keys.D6:
                if (Main.Time > Main.UseItemTime)
                {
                    BeltPanel.Grid[5].UseItem();
                }
                break;
            }
        }