Ejemplo n.º 1
0
        public async Task <IActionResult> Edit(int id, [Bind("TableGameId,Title,DateCreated,DateInitial,TableDuration,System,DescriptionGame,Theme,QuantityPeople,LinkDiscord,Photo,Presential,Address1,Address2,Latitude,Longitude")] TableGame tableGame, IFormFile file)
        {
            if (id != tableGame.TableGameId)
            {
                return(NotFound());
            }

            tableGame.Photo = TempData["PhotoTable"].ToString();
            if (ModelState.IsValid)
            {
                if (file != null)
                {
                    var linkUpload = Path.Combine(_hostingEnvironment.WebRootPath, "Images");
                    using (FileStream fileStream =
                               new FileStream(Path.Combine(linkUpload, file.FileName), FileMode.Create))
                    {
                        await file.CopyToAsync(fileStream);

                        tableGame.Photo = "~/Images/" + file.FileName;
                    }
                }
                else
                {
                    tableGame.Photo = TempData["PhotoTable"].ToString();
                }

                await _tableGameRepository.Update(tableGame);

                return(RedirectToAction(nameof(Index)));
            }
            return(View(tableGame));
        }
Ejemplo n.º 2
0
        /// <summary>Конструктор экземпляра класса <see cref="TicTacToeGame"/></summary>
        /// <param name="dimension">Размерность игрового поля (по умолчанию = 3)</param>
        /// <param name="startCellType">Чем ходит первый игрок (по умолчанию "Крестик")</param>
        /// <param name="playerTypes">Типы игроков - по порядку</param>
        public TicTacToeGame(int dimension = 3, CellValues startCellType = CellValues.Cross, int maxVictoryLine = 3, params PlayerTypes[] playerTypes)
        {
            //Инициализация игрового поля
            Table = new TableGame(dimension);

            // Генерация победных вариантов
            MaxVictoryLine = maxVictoryLine;
            InitVictoryVariants();

            // Инициализация игроков
            InitPlayers(startCellType, playerTypes);
            CurrentPlayer = 0;

            // Первоначальный вывод на экран
            Status = StatusTypes.Start;
            Draw();
        }
Ejemplo n.º 3
0
    private void handleTableSnapshotListPacket(TableSnapshotListPacket tableSnapshotListPacket)
    {
        unsubcribeRoom(currentRoom);
        tableList.Clear();

        GameObject       tableListObject  = GameObject.Find("TableList");
        TableListControl tableListControl = (TableListControl)tableListObject.GetComponent(typeof(TableListControl));

        foreach (TableSnapshotPacket tableSnapshotPacket in tableSnapshotListPacket.snapshots)
        {
            TableGame tableGame = new TableGame(tableSnapshotPacket);
            if (tableGame.capacity > 0)
            {
                tableList.Add(tableGame);
            }
        }

        // update to the view
        tableListControl.updateListItem(tableList);
    }
        public ActionResult _GetOneDetail(string tableGameID)
        {
            string    shopID = Session["ShopID"].ToString();
            TableGame tg     = db.TableGames.Find(tableGameID);
            //從傳入的桌遊,找到店家ID為shopID的店內桌遊明細
            TableGameInShopDetail detail = tg.TableGameInShopDetails.Where(m => m.ShopID == shopID).FirstOrDefault();

            //如果有找到則作為Model,沒找到則傳入新鑄造的TableGameInShopDetail
            if (detail != null)
            {
                ViewBag.isContained = true;
                return(PartialView(detail));
            }
            else
            {
                ViewBag.isContained = false;
                return(PartialView(new TableGameInShopDetail {
                    TableGameID = tableGameID, TableGame = tg, ShopID = shopID, IsSale = false, Price = 0
                }));
            }
        }
Ejemplo n.º 5
0
        //以桌遊分類隨機取得桌遊項目的PartialView(卡片方式呈現)
        public ActionResult _GetTableGameCards(TableGame tableGame)
        {
            Tag[] tags = tableGame.GameCategoryTags.ToArray();
            //將對應分類標籤下的TableGame全部裝入games
            List <TableGame> games = new List <TableGame>();

            foreach (Tag t in tags)
            {
                foreach (TableGame tg in t.TableGamesForGameCategory)
                {
                    if (!games.Contains(tg))
                    {
                        games.Add(tg);
                    }
                }
            }
            //若games包含傳入的桌遊本身則移除
            if (games.Contains(tableGame))
            {
                games.Remove(tableGame);
            }
            //若games不大於於四項則全丟入Model
            if (games.Count <= 4)
            {
                return(PartialView(games));
            }
            //games大於四項則隨機選出四項裝入selectedGames
            List <TableGame> selectedGames = new List <TableGame>();
            Random           r             = new Random();
            TableGame        selectedGame;

            for (int i = 0; i < 4; i++)
            {
                int index = r.Next(games.Count);
                selectedGame = games[index];
                games.Remove(selectedGame);
                selectedGames.Add(selectedGame);
            }
            return(PartialView(selectedGames));
        }
Ejemplo n.º 6
0
    public void AddNewItem(TableGame tableGame)
    {
        RectTransform rect = (RectTransform)Instantiate(TableItem);

        rect.transform.parent = this.transform;

        rect.pivot = new Vector2(0.5f, 1);

        rect.offsetMax = new Vector2(0, rect.offsetMax.y);
        rect.offsetMin = new Vector2(MarginLR, rect.offsetMin.y);

        rect.anchoredPosition = new Vector2(0, bottomPositionY);

        bottomPositionY -= rect.rect.height + ItemSpacing;

        RectTransform textTransform = (RectTransform)rect.FindChild("Text");
        Text          text          = textTransform.GetComponent <Text>();

        text.text = tableGame.tostring();

        UpdateScrollHeight();
    }
Ejemplo n.º 7
0
        public ActionResult DeleteTableGame(string tableGameID)
        {
            TableGame tg = db.TableGames.Find(tableGameID);

            //刪除對應的GameCategoryTags
            tg.GameCategoryTags.Clear();
            //刪除對應的圖片
            PhotoManager.Delete(tableGameID);
            //刪除相關教學連結
            db.RelevantLinks.Where(m => m.TableGameID == tableGameID).ToList().ForEach(m => db.RelevantLinks.Remove(m));
            //刪除店內桌遊明細
            List <TableGameInShopDetail> details = db.TableGameInShopDetails.Where(m => m.TableGameID == tableGameID).ToList();

            details.ForEach(m => db.TableGameInShopDetails.Remove(m));
            //刪除桌遊評論
            db.TableGameComments.RemoveRange(tg.TableGameComments);
            //刪除桌遊閱覽紀錄
            db.TableGameVisitedStatistics.RemoveRange(tg.TableGameVisitedStatistics);
            //最後再刪除桌遊本身
            db.TableGames.Remove(tg);
            db.SaveChanges();
            return(RedirectToAction("ShowTableGameListForAdmin"));
        }
Ejemplo n.º 8
0
        public ActionResult CreateTableGame(TableGame newTableGame, string[] selectedCategories, HttpPostedFileBase[] photos, string[] links)
        {
            //無法通過驗證則顯示錯誤訊息
            if (!ModelState.IsValid)
            {
                UpdateTableGamePreparaion();
                return(View());
            }
            //儲存newTableGame
            newTableGame.ID = UsefulTools.GetNextID(db.TableGames, 1);
            db.TableGames.Add(newTableGame);
            db.SaveChanges();
            foreach (string sc in selectedCategories)
            {
                newTableGame.GameCategoryTags.Add(db.Tags.Find(sc));
                db.SaveChanges();
            }
            //調用PhotoManager中的方法來儲存傳入的圖片
            PhotoManager.Create(newTableGame.ID, photos);
            //儲存相關教學連結
            RelevantLinkManager.Create(newTableGame.ID, links);

            return(RedirectToAction("ShowTableGameListForAdmin"));
        }
Ejemplo n.º 9
0
        //玩家看到的店家列表
        public ActionResult ShopIndexForPlayer(int?CityID, int?DistrictID, string searchedTableGameID,
                                               string AreaScale, string IsFoodAcceptable, string IsMinConsumeRequired, int page = 1)
        {
            ViewBag.CityID     = new SelectList(db.Cities, "ID", "CityName");
            ViewBag.DistrictID = new SelectList(db.Districts, "ID", "DistrictName", -1);
            ViewBag.AreaScale  = new SelectList(new [] {
                new { Text = "大" },
                new { Text = "中" },
                new { Text = "小" },
                new { Text = "不限" }
            }, "Text", "Text", "不限");
            ViewBag.IsFoodAcceptable = new SelectList(new[] {
                new { Text = "可外食" },
                new { Text = "不可外食" },
                new { Text = "不限" }
            }, "Text", "Text", "不限");
            ViewBag.IsMinConsumeRequired = new SelectList(new[] {
                new { Text = "有" },
                new { Text = "無" },
                new { Text = "不限" }
            }, "Text", "Text", "不限");
            ViewBag.NoDistrict = DistrictID == null || DistrictID == -1;
            //店家查詢結果的容器
            var shops = db.Shops.ToList();

            if (searchedTableGameID == null || searchedTableGameID.Trim() == "")
            {
                //桌遊搜尋ID為空,啟用一般篩選功能
                if (CityID != null)
                {
                    if (DistrictID != -1)
                    {
                        shops = db.Districts.Find(DistrictID).Shops.ToList();
                    }
                    else
                    {
                        shops.Clear();
                        foreach (District d in db.Cities.Find(CityID).Districts)
                        {
                            shops.AddRange(d.Shops);
                        }
                    }
                }
            }
            //在哪裡可以玩此桌遊的查詢
            else
            {
                //先找到有此桌遊的店家
                TableGame game = db.TableGames.Find(searchedTableGameID);
                //傳送搜尋相關資訊
                ViewBag.SearchingTGInfo = game;
                //將包含此桌遊的店家找出
                shops.Clear();
                foreach (var detail in game.TableGameInShopDetails)
                {
                    shops.Add(detail.Shop);
                }
                //地區篩選
                if (CityID != null)
                {
                    if (DistrictID != -1)
                    {
                        shops = shops.Where(s => s.DistrictID == DistrictID).ToList();
                    }
                    else
                    {
                        shops = shops.Where(s => s.District.CityID == CityID).ToList();
                    }
                }
            }
            //店家規模篩選
            if (AreaScale != "不限" && AreaScale != null)
            {
                shops = shops.Where(s => s.AreaScale == AreaScale).ToList();
            }
            //可否外食篩選
            if (IsFoodAcceptable != "不限" && IsFoodAcceptable != null)
            {
                bool acceptable = IsFoodAcceptable == "可外食";
                shops = shops.Where(s => s.IsFoodAcceptable == acceptable).ToList();
            }
            //有無低消篩選
            if (IsMinConsumeRequired != "不限" && IsMinConsumeRequired != null)
            {
                bool required = IsMinConsumeRequired == "有";
                shops = shops.Where(s => s.IsMinConsumeRequired == required).ToList();
            }
            return(View(shops.OrderByDescending(s => s.IsVIP).ThenByDescending(s => s.AccumulatedHours).ToPagedList(page, 5)));
        }
Ejemplo n.º 10
0
        public ActionResult EditTableGame(TableGame tableGame, string[] selectedCategories,
                                          int[] deletedPhotoID, HttpPostedFileBase[] newPhoto, int[] deletedLinkIDs, string[] links)
        {
            //無法通過驗證則顯示錯誤訊息
            if (!ModelState.IsValid)
            {
                UpdateTableGamePreparaion();
                //將圖片的ID的List傳入ViewBag
                ViewBag.photoIDList = PhotoManager.GetPhotoIDList(tableGame.ID);
                return(View(db.TableGames.Find(tableGame.ID)));
            }
            tableGame.ID = (string)TempData["TableGame_ID"];
            //通過ID找到舊的tableGame資料
            TableGame oldTableGame = db.TableGames.Find(tableGame.ID);

            //使用自訂方法更新
            UsefulTools.Update(oldTableGame, tableGame);
            db.SaveChanges();

            //通過selectedCategories解析出對應的Tags並加入newTagList
            List <Tag> newTagList = new List <Tag>();

            foreach (string sc in selectedCategories)
            {
                Tag t = db.Tags.Find(sc);
                newTagList.Add(t);
            }
            //全部的GameCategoryTag
            List <Tag> allTagList = db.Tags.Where(t => t.ID.Substring(0, 1) == "C").ToList();

            //遍歷所有GameCategoryTag
            foreach (Tag t in allTagList)
            {
                if (oldTableGame.GameCategoryTags.Contains(t))
                {
                    //這個GameCategoryTag有在這個桌遊的GameCategoryTags之中
                    //進一步判斷是否有在newTagList中,如果沒有就從這個桌遊的GameCategoryTags刪除
                    if (!newTagList.Contains(t))
                    {
                        oldTableGame.GameCategoryTags.Remove(t);
                        db.SaveChanges();
                    }
                }
                else
                {
                    //這個GameCategoryTag不在這個桌遊的GameCategoryTags之中
                    //進一步判斷是否有在newTagList中,如果有就加入這個桌遊的GameCategoryTags
                    if (newTagList.Contains(t))
                    {
                        oldTableGame.GameCategoryTags.Add(t);
                        db.SaveChanges();
                    }
                }
            }

            //刪除被勾選的圖片
            if (deletedPhotoID != null)
            {
                foreach (int id in deletedPhotoID)
                {
                    PhotoManager.Delete(id);
                }
            }
            //加入新圖片
            PhotoManager.Create(tableGame.ID, newPhoto);
            //刪除連結
            if (deletedLinkIDs != null)
            {
                RelevantLinkManager.Delete(deletedLinkIDs);
            }
            //加入新連結
            RelevantLinkManager.Create(tableGame.ID, links);

            return(RedirectToAction("ShowTableGameListForAdmin"));
        }