예제 #1
0
파일: Game.cs 프로젝트: Lorinet/HackLife
        public static void HandleBreakPlace()
        {
            int  xm  = 0;
            int  ym  = 0;
            bool act = false;

            switch (LastInput)
            {
            case ConsoleKey.D1:
                ActiveItemSlot = 0;
                DrawInventorySlots();
                break;

            case ConsoleKey.D2:
                ActiveItemSlot = 1;
                DrawInventorySlots();
                break;

            case ConsoleKey.D3:
                ActiveItemSlot = 2;
                DrawInventorySlots();
                break;

            case ConsoleKey.D4:
                ActiveItemSlot = 3;
                DrawInventorySlots();
                break;

            case ConsoleKey.D5:
                ActiveItemSlot = 4;
                DrawInventorySlots();
                break;

            case ConsoleKey.UpArrow:
                ym  = -1;
                act = true;
                break;

            case ConsoleKey.DownArrow:
                ym  = 1;
                act = true;
                break;

            case ConsoleKey.LeftArrow:
                xm  = -1;
                act = true;
                break;

            case ConsoleKey.RightArrow:
                xm  = 1;
                act = true;
                break;
            }
            if (act)
            {
                if (Renderer.PlayerScreenPosition.X + xm >= 0 && Renderer.PlayerScreenPosition.X + xm < Renderer.MapSecWidth && Renderer.PlayerScreenPosition.Y + ym >= 0 && Renderer.PlayerScreenPosition.Y + ym < Renderer.MapSecHeight)
                {
                    Console.SetCursorPosition(22, Renderer.MapSecHeight + 1);
                    Console.Write(Item.GlyphToName(Renderer.Screen[Renderer.PlayerScreenPosition.Y + ym][Renderer.PlayerScreenPosition.X + xm]));
                    Console.SetCursorPosition(Renderer.PlayerScreenPosition.X + xm, Renderer.PlayerScreenPosition.Y + ym);
                    char block = Renderer.Screen[Renderer.PlayerScreenPosition.Y + ym][Renderer.PlayerScreenPosition.X + xm];
                    if (block == '◰')
                    {
                        Crafting(CraftingRecipes, "Workbench");
                        return;
                    }
                    else if (block == '◘')
                    {
                        Crafting(FurnaceRecipes, "Furnace");
                        return;
                    }
                    Console.Write("*");
                    ConsoleKey brk = Console.ReadKey(true).Key;
                    if (brk == ConsoleKey.X)
                    {
                        if (block != '.')
                        {
                            Item i;
                            if (HandSlots[ActiveItemSlot] == -1)
                            {
                                i = Item.HandleBreak(block, '.');
                            }
                            else
                            {
                                i = Item.HandleBreak(block, Inventory[HandSlots[ActiveItemSlot]].Glyph);
                            }
                            if (i.Glyph != '.')
                            {
                                Renderer.Screen[Renderer.PlayerScreenPosition.Y + ym][Renderer.PlayerScreenPosition.X + xm] = '.';
                                Map[PlayerPosition.Y + ym][PlayerPosition.X + xm] = '.';
                                Console.SetCursorPosition(Renderer.PlayerScreenPosition.X + xm, Renderer.PlayerScreenPosition.Y + ym);
                                Console.Write(".");
                                AddItem(i);
                                Inventory[HandSlots[ActiveItemSlot]].Durability -= 1;
                                if (Inventory[HandSlots[ActiveItemSlot]].Durability == 0)
                                {
                                    Inventory.Remove(HandSlots[ActiveItemSlot]);
                                    HandSlots[ActiveItemSlot] = -1;
                                }
                            }
                        }
                        Console.SetCursorPosition(22, Renderer.MapSecHeight + 1);
                        string spc = "";
                        for (int i = 0; i < Renderer.MapSecWidth - 25; i++)
                        {
                            spc += " ";
                        }
                        Console.Write(spc);
                        Renderer.RenderMap();
                    }
                    else if (brk == ConsoleKey.E && Renderer.Screen[Renderer.PlayerScreenPosition.Y + ym][Renderer.PlayerScreenPosition.X + xm] == '.' && HandSlots[ActiveItemSlot] != -1)
                    {
                        Renderer.Screen[Renderer.PlayerScreenPosition.Y + ym][Renderer.PlayerScreenPosition.X + xm] = Inventory[HandSlots[ActiveItemSlot]].Glyph;
                        Map[PlayerPosition.Y + ym][PlayerPosition.X + xm] = Inventory[HandSlots[ActiveItemSlot]].Glyph;
                        Inventory[HandSlots[ActiveItemSlot]].Count--;
                        Renderer.RenderMap();
                        if (Inventory[HandSlots[ActiveItemSlot]].Count == 0)
                        {
                            Inventory.Remove(HandSlots[ActiveItemSlot]);
                            HandSlots[ActiveItemSlot] = -1;
                        }
                        DrawInventorySlots();
                    }
                    else
                    {
                        Console.SetCursorPosition(Renderer.PlayerScreenPosition.X + xm, Renderer.PlayerScreenPosition.Y + ym);
                        Console.Write(Renderer.Screen[Renderer.PlayerScreenPosition.Y + ym][Renderer.PlayerScreenPosition.X + xm]);
                        Console.SetCursorPosition(22, Renderer.MapSecHeight + 1);
                        string spc = "";
                        for (int i = 0; i < Renderer.MapSecWidth - 25; i++)
                        {
                            spc += " ";
                        }
                        Console.Write(spc);
                    }
                }
            }
        }