示例#1
0
        public FightLog CreateFightLog(FightLog fightLog)
        {
            _context.FightLogs.Add(fightLog);
            _context.SaveChanges();

            return(fightLog);
        }
        public IActionResult Take(int inventoryItemID, int itemID, int chestID)
        {
            // TODO: Actions taken when taking
            User user = GetUser();

            Item          takenItem = _context.Item.Where(i => i.ItemID == itemID).FirstOrDefault();
            InventoryItem inv       = new InventoryItem();

            if (inventoryItemID == 0)
            {
                inv.ItemID   = itemID;
                inv.UserID   = user.UserID;
                inv.Quantity = 1;
                _context.InventoryItems.Add(inv);
                ScreenItem se = _context.ScreenItem.Where(s => s.ScreenID == user.Screen && s.ItemID == itemID).FirstOrDefault();
                _context.ScreenItem.Remove(se);
            }
            else
            {
                inv.InventoryItemID = inventoryItemID;
                inv.ItemID          = itemID;
                inv.UserID          = user.UserID;
                inv.Quantity        = 1;
                _context.InventoryItems.Update(inv);
            }
            user.Inventory.Add(takenItem);
            ItemType type = _context.ItemType.Where(t => t.ItemTypeID == takenItem.ItemTypeID).FirstOrDefault();

            if (type.ItemTypeName == "Weapon")
            {
                user.WeaponEquipped = true;
                user.WeaponID       = takenItem.ItemID;
            }
            SaveUser(user);
            FightLog f = new FightLog {
                UserID = user.UserID, Entry = $"You added the {takenItem.ItemName} to your inventory.", EntryType = "normal-event"
            };

            _context.FightLogs.Add(f);
            _context.User.Update(user);
            _context.SaveChanges();
            if (chestID == 0)
            {
                UpdateScreen(user);
                return(View("Console", BuildModel()));
            }
            else
            {
                BuildOpenViewDescription(chestID);

                return(View("Open", BuildModel()));
            }
        }
示例#3
0
 static int Close(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 0);
         FightLog.Close();
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
示例#4
0
 static int Log(IntPtr L)
 {
     try
     {
         ToLua.CheckArgsCount(L, 1);
         string arg0 = ToLua.CheckString(L, 1);
         FightLog.Log(arg0);
         return(0);
     }
     catch (Exception e)
     {
         return(LuaDLL.toluaL_exception(L, e));
     }
 }
        public void BuildOpenViewDescription(int itemID)
        {
            Item     item = _context.Item.Where(i => i.ItemID == itemID).FirstOrDefault();
            ItemType type = _context.ItemType.Where(i => i.ItemTypeID == item.ItemTypeID).FirstOrDefault();
            User     user = GetUser();

            Screen screen = _context.Screen.Include(s => s.ScreenInventory).Where(s => s.ScreenID == user.Screen).FirstOrDefault();
            Chest  chest  = new Chest();

            foreach (ScreenItem si in screen.ScreenInventory)
            {
                si.Item = _context.Item.Where(i => i.ItemID == si.ItemID).FirstOrDefault();
                chest.ParentContainer = si.Item;
                List <InventoryItem> items = _context.InventoryItems.Where(i => i.ScreenItemID == si.ScreenItemID).ToList();
                foreach (InventoryItem inv in items)
                {
                    chest.ItemsInside.Add(inv.InventoryItemID, _context.Item.Where(i => i.ItemID == inv.ItemID).FirstOrDefault());
                }
            }

            string openDesc = $"You open the {type.ItemTypeName} and look in.";

            if (chest.ItemsInside == null || chest.ItemsInside.Count == 0)
            {
                openDesc += " You don't see anything.";
            }
            else
            {
                foreach (KeyValuePair <int, Item> chestItem in chest.ItemsInside)
                {
                    openDesc += " " + chestItem.Value.ItemDescription;
                }
            }
            // TODO: Append items in container to description
            FightLog f = new FightLog {
                UserID = user.UserID, Entry = openDesc, EntryType = "normal-event"
            };

            _context.FightLogs.Add(f);
            _context.SaveChanges();
        }