Exemplo n.º 1
0
        public ActionResult StartMission(int id, string userID)
        {
            if (userID == null)
            {
                userID = User.Identity.Name;
            }


            Character character = db.Characters.Where(y => y.ApplicationUserID == userID).FirstOrDefault();
            Mission   mission   = db.Missions.Find(id);

            mission.MissionTasks = db.MissionTasks.Where(x => x.MissionID == mission.MissionID).ToList();

            CharacterMission charMiss = new CharacterMission {
                CharacterID = character.CharacterID, MissionID = mission.MissionID, IsCompleted = false
            };

            db.CharacterMissions.Add(charMiss);
            db.SaveChanges();

            foreach (var m in mission.MissionTasks)
            {
                CharacterMissionTask characterMissionTask = new CharacterMissionTask {
                    CharacterMissionTaskID = 1, CharacterID = character.CharacterID, MissionTaskID = m.MissionTaskID, CharacterMissionID = charMiss.CharacterMissionID, IsCompleted = false
                };
                db.CharacterMissionTasks.Add(characterMissionTask);
                db.SaveChanges();
            }


            var result = new MissionsController().CheckMission(charMiss.CharacterMissionID, userID);

            return(RedirectToAction("Index", "Missions", new { id = userID }));
        }
Exemplo n.º 2
0
        public ActionResult Index()
        {
            MissionVM model = new MissionVM();

            model.Character          = db.Characters.Where(x => x.ApplicationUserID == User.Identity.Name).First();
            model.Missions           = db.Missions.ToList();
            model.Items              = db.Items.ToList();
            model.InProgressMissions = db.CharacterMissions.Where(x => x.CharacterID == model.Character.CharacterID).ToList();
            model.Zombies            = db.Zombies.ToList();


            foreach (var mission in model.InProgressMissions)
            {
                mission.CharacterMissionTasks = db.CharacterMissionTasks.Where(x => x.CharacterMissionID == mission.CharacterMissionID).ToList();
            }


            foreach (var mission in model.Missions)
            {
                mission.MissionTasks = db.MissionTasks.Where(x => x.MissionID == mission.MissionID).ToList();
            }

            foreach (var mission in model.InProgressMissions)
            {
                var result = new MissionsController().CheckMission(mission.CharacterMissionID, User.Identity.Name);
            }


            db.SaveChanges();

            base.SetModelProperties(model);
            return(View(model));
        }
Exemplo n.º 3
0
        public ActionResult HarvestField(int fieldID, int plantID, string returnUrl)
        {
            CharacterField field     = db.CharacterFields.Find(fieldID);
            Plant          plant     = db.Plants.Find(plantID);
            Character      character = db.Characters.Where(x => x.ApplicationUserID == User.Identity.Name).FirstOrDefault();

            field.PlantID    = 0;
            field.IsEmpty    = true;
            field.isFinished = false;

            character.CharacterMoney += plant.PlantRewardCoin;
            character.CharacterFood  += plant.PlantRewardFood;
            var result = new MissionsController().HarvestMission(plantID, User.Identity.Name);

            db.SaveChanges();

            return(Redirect(returnUrl));
        }
Exemplo n.º 4
0
        public ActionResult AttackZombie(string zAAID, int invID)
        {
            Character character = db.Characters.Where(y => y.ApplicationUserID == User.Identity.Name).FirstOrDefault();

            List <int> zombik = System.Web.Helpers.Json.Decode <List <int> >(zAAID);

            List <ZombieAttackAdventurer> zombies = new List <ZombieAttackAdventurer>();

            foreach (var z in zombik)
            {
                var zombie = db.ZombieAttackAdventurers.Find(z);
                zombies.Add(zombie);
            }


            Inventory item   = db.Inventories.Find(invID);
            Weapon    weapon = db.Weapons.Find(item.ItemID);


            foreach (var z in zombies)
            {
                ZombieAttackAdventurer model = db.ZombieAttackAdventurers.Find(z.ZombieAttackAdventurerID);
                model.Zombie = db.Zombies.Find(model.ZombieID);

                var inv = db.Inventories.Find(invID);
                if (inv.ItemCurrentDurability > 0 && inv.ItemMaxDurability != 999)
                {
                    inv.ItemCurrentDurability--;
                }
                else if (inv.ItemCurrentDurability > 0 && inv.ItemMaxDurability == 999)
                {
                }
                else
                {
                    if (inv.ItemPieces > 0)
                    {
                        inv.ItemCurrentDurability = inv.ItemMaxDurability;
                        inv.ItemPieces--;
                    }
                }

                if (model.ZombieLife > weapon.WeaponDamage)
                {
                    model.ZombieLife = model.ZombieLife - weapon.WeaponDamage;
                    List <ZombieAttackAdventurer> zAA = db.ZombieAttackAdventurers.Where(x => x.CharacterID == character.CharacterID).Where(x => x.State == character.AdventureState).ToList();
                    zAA.ToArray()[0].isYourTurn = true;
                    db.SaveChanges();
                }
                else
                {
                    var result = new MissionsController().KillingMission(model.Zombie.ZombieID, User.Identity.Name);
                    var addXP  = new CharactersController().ManageXPAndLevelUp(User.Identity.Name, model.Zombie.RewardXP, this.Request.FilePath);
                    character.CharacterMoney += model.Zombie.RewardCoins;
                    db.ZombieAttackAdventurers.Remove(model);
                    db.SaveChanges();
                    List <ZombieAttackAdventurer> zAA = db.ZombieAttackAdventurers.Where(x => x.CharacterID == character.CharacterID).Where(x => x.State == character.AdventureState).ToList();
                    if (zAA.Count() != 0)
                    {
                        zAA.ToArray()[0].isYourTurn = true;
                    }
                    db.SaveChanges();
                }
            }

            character.isYourTurn = false;
            db.SaveChanges();
            return(RedirectToAction("OnAdventure", "Adventures", new { id = User.Identity.Name }));
        }
Exemplo n.º 5
0
        public ActionResult CollectReward(int AdId, string ChId)
        {
            AdventureDropVM      model    = new AdventureDropVM();
            List <AdventureDrop> dropList = db.AdventureDrops.Where(a => a.AdventureID == AdId).ToList();

            model.ItemList = db.Items.ToList();
            model.Rewards  = new List <Inventory>();
            Character character = db.Characters.Where(y => y.ApplicationUserID == User.Identity.Name).FirstOrDefault();

            if (character.IsOnAdventure == true)
            {
                Random rand = new Random();

                foreach (var drop in dropList)
                {
                    double myRand = rand.NextDouble();

                    if (myRand > (1 - drop.ItemDroprate))
                    {
                        int       addPieces = rand.Next(1, drop.ItemMaxDrop);
                        Inventory inventory = new Inventory {
                            CharacterID = character.CharacterID, ItemID = drop.DropableItemID, ItemPieces = addPieces
                        };
                        var addItem = new AdventuresController().AddToInventory(character.CharacterID, drop.DropableItemID, addPieces);

                        Inventory item = new Inventory {
                            ItemID = drop.DropableItemID, ItemPieces = addPieces
                        };

                        model.Rewards.Add(item);

                        db.SaveChanges();
                    }
                }

                model.AdventureXPReward = db.Adventures.Find(AdId).AdventureXPBonus;

                character.IsOnAdventure     = false;
                character.FinishAdventure   = DateTime.MaxValue;
                character.TolerancePlusDate = DateTime.Now.AddMinutes(5);


                var result = new MissionsController().AdventureMission(User.Identity.Name);

                if (AdId > character.AdventureMapState)
                {
                    character.AdventureMapState = AdId;
                }


                db.SaveChanges();
            }
            else
            {
                return(RedirectToAction("Details", "Characters", new { id = User.Identity.Name }));
            }


            base.SetModelProperties(model);
            return(View(model));
        }
Exemplo n.º 6
0
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            DataContext db = new DataContext();

            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    UserName = model.Name, Email = model.Email
                };
                var character = new Character {
                    ApplicationUserID = model.Name, CharacterName = model.CharacterName, CharacterType = model.CharacterType, CharacterMoney = 0, FinishAdventure = DateTime.MaxValue, IsOnAdventure = false, AdventureMapState = 0, CurrentEnergy = 14, MaxEnergy = 14, CharacterLevel = 1, EnergyPlusDate = DateTime.MaxValue, LastZombieAttackTime = DateTime.Now, MaxTolerance = 20, Tolerance = 20, DailyMissionDate = DateTime.Now.AddDays(-1), TolerancePlusDate = DateTime.MaxValue
                };

                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    db.Characters.Add(character);

                    db.SaveChanges();

                    var items = new List <Inventory>
                    {
                        new Inventory {
                            CharacterID = character.CharacterID, ItemID = 1, ItemPieces = 1, ItemMaxDurability = db.Buildings.Where(x => x.ItemID == 1).First().ItemMaxDurability, ItemCurrentDurability = db.Buildings.Where(x => x.ItemID == 1).First().ItemMaxDurability
                        },
                        new Inventory {
                            CharacterID = character.CharacterID, ItemID = 7, ItemPieces = 1, ItemMaxDurability = db.Buildings.Where(x => x.ItemID == 7).First().ItemMaxDurability, ItemCurrentDurability = db.Buildings.Where(x => x.ItemID == 7).First().ItemMaxDurability
                        },
                        new Inventory {
                            CharacterID = character.CharacterID, ItemID = 13, ItemPieces = 1, ItemMaxDurability = db.Buildings.Where(x => x.ItemID == 13).First().ItemMaxDurability, ItemCurrentDurability = db.Buildings.Where(x => x.ItemID == 13).First().ItemMaxDurability
                        },
                        new Inventory {
                            CharacterID = character.CharacterID, ItemID = 19, ItemPieces = 1, ItemMaxDurability = db.Buildings.Where(x => x.ItemID == 19).First().ItemMaxDurability, ItemCurrentDurability = db.Buildings.Where(x => x.ItemID == 19).First().ItemMaxDurability
                        },
                        new Inventory {
                            CharacterID = character.CharacterID, ItemID = 83, ItemPieces = 1, ItemMaxDurability = db.Buildings.Where(x => x.ItemID == 83).First().ItemMaxDurability, ItemCurrentDurability = db.Buildings.Where(x => x.ItemID == 83).First().ItemMaxDurability
                        },
                        new Inventory {
                            CharacterID = character.CharacterID, ItemID = 88, ItemPieces = 1, ItemMaxDurability = db.Buildings.Where(x => x.ItemID == 88).First().ItemMaxDurability, ItemCurrentDurability = db.Buildings.Where(x => x.ItemID == 88).First().ItemMaxDurability
                        },



                        new Inventory {
                            CharacterID = character.CharacterID, ItemID = 59, ItemPieces = 1, ItemMaxDurability = 999, ItemCurrentDurability = 999
                        },
                    };
                    items.ForEach(s => db.Inventories.Add(s));

                    db.SaveChanges();


                    foreach (var item in db.Materials)
                    {
                        var ittem = new Inventory {
                            CharacterID = character.CharacterID, ItemID = item.ItemID, ItemPieces = 0, ItemMaxDurability = item.ItemMaxDurability, ItemCurrentDurability = item.ItemMaxDurability
                        };
                        db.Inventories.Add(ittem);
                    }


                    foreach (var item in db.BuildingMaterials)
                    {
                        var ittem = new Inventory {
                            CharacterID = character.CharacterID, ItemID = item.ItemID, ItemPieces = 0, ItemMaxDurability = item.ItemMaxDurability, ItemCurrentDurability = item.ItemMaxDurability
                        };
                        db.Inventories.Add(ittem);
                    }


                    var missionStart = new MissionsController().StartMission(1, model.Name);


                    db.SaveChanges();

                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");


                    return(RedirectToAction("Index", "Home"));
                }
                AddErrors(result);
            }
            // If we got this far, something failed, redisplay form
            return(View(model));
        }
Exemplo n.º 7
0
        public ActionResult GetReward(int id)
        {
            Character character = db.Characters.Where(y => y.ApplicationUserID == User.Identity.Name).FirstOrDefault();

            character.Inventory = db.Inventories.Where(x => x.CharacterID == character.CharacterID).ToList();

            List <Item> items = db.Items.ToList();

            CharacterMission            characterMission      = db.CharacterMissions.Find(id);
            List <CharacterMissionTask> characterMissionTasks = db.CharacterMissionTasks.Where(x => x.CharacterMissionID == characterMission.CharacterMissionID).ToList();

            Mission            mission      = db.Missions.Find(characterMission.MissionID);
            List <MissionTask> missionTasks = db.MissionTasks.Where(x => x.MissionID == mission.MissionID).ToList();

            foreach (var cmt in characterMissionTasks)
            {
                foreach (var mt in missionTasks)
                {
                    if (mt.MissionTaskID == cmt.MissionTaskID)
                    {
                        foreach (var inv in character.Inventory)
                        {
                            if (mt.ItemID == inv.ItemID)
                            {
                                if (cmt.TaskProgress >= mt.ItemPieces)
                                {
                                    inv.ItemPieces -= mt.ItemPieces;
                                    db.CharacterMissionTasks.Remove(cmt);
                                    character.CharacterMoney += mission.RewardICoins;
                                    var resultXP = new CharactersController().ManageXPAndLevelUp(User.Identity.Name, mission.RewardXP, this.Request.FilePath);
                                }
                            }
                        }
                        if (mt.ItemID == 0)
                        {
                            if (cmt.TaskProgress >= mt.ItemPieces)
                            {
                                db.CharacterMissionTasks.Remove(cmt);
                                character.CharacterMoney += mission.RewardICoins;
                                var resultXP = new CharactersController().ManageXPAndLevelUp(User.Identity.Name, mission.RewardXP, this.Request.FilePath);
                            }
                        }
                    }
                }
            }
            db.SaveChanges();


            characterMissionTasks = db.CharacterMissionTasks.Where(x => x.CharacterMissionID == characterMission.CharacterMissionID).ToList();


            if (characterMissionTasks.Count() == 0)
            {
                db.CharacterMissions.Remove(characterMission);
            }

            db.SaveChanges();

            if (mission.IsNextMission)
            {
                var result = new MissionsController().StartMission(mission.MissionID + 1, User.Identity.Name);
            }


            return(RedirectToAction("Index", "Missions", new { id = User.Identity.Name }));
        }
Exemplo n.º 8
0
        public ActionResult BaseDefenseFromZombie(int ZabID, int AttackPower, int invID)
        {
            BaseDefenseFromZombiesVM model = new BaseDefenseFromZombiesVM();

            model.ZombieAttackBase = db.ZombieAttackBases.Find(ZabID);
            model.Zombie           = db.Zombies.Find(model.ZombieAttackBase.ZombieID);
            model.Character        = db.Characters.Find(model.ZombieAttackBase.CharacterID);

            ICollection <Inventory> inventory = model.Character.Inventory;

            model.Weapon = db.Weapons.Find(59);


            if (invID != 0)
            {
                var inv = db.Inventories.Find(invID);
                if (inv.ItemCurrentDurability > 1 && inv.ItemMaxDurability != 999)
                {
                    inv.ItemCurrentDurability--;
                }
                else if (inv.ItemCurrentDurability > 1 && inv.ItemMaxDurability == 999)
                {
                }
                else
                {
                    if (inv.ItemPieces > 0)
                    {
                        inv.ItemCurrentDurability = inv.ItemMaxDurability;
                        inv.ItemPieces--;
                    }
                }
            }
            if (AttackPower > 0)
            {
                model.ZombieAttackBase.ZombieLife -= AttackPower;
                var result = new CharactersController().ManageEnergy(User.Identity.Name, 1, this.Request.Path);
            }


            model.BuyableWeapons   = new List <BuyableWeapon>();
            model.CraftableWeapons = new List <CraftableWeapon>();

            foreach (var item in model.Character.Inventory)
            {
                foreach (var weap in db.BuyableWeapons)
                {
                    if (item.ItemID == weap.ItemID)
                    {
                        model.BuyableWeapons.Add(weap);
                    }
                }
            }

            foreach (var item in model.Character.Inventory)
            {
                foreach (var weap in db.CraftableWeapons)
                {
                    if (item.ItemID == weap.ItemID)
                    {
                        model.CraftableWeapons.Add(weap);
                    }
                }
            }

            if (model.ZombieAttackBase.ZombieLife <= 0)
            {
                var result = new MissionsController().KillingMission(model.Zombie.ZombieID, User.Identity.Name);

                db.SaveChanges();

                base.SetModelProperties(model);
                return(RedirectToAction("CollectReward", "Zombies", new { zABID = model.ZombieAttackBase.ZombieAttackBaseID, rewardXP = model.Zombie.RewardXP, rewardCoin = model.Zombie.RewardCoins }));
            }

            db.SaveChanges();

            base.SetModelProperties(model);
            return(View(model));
        }