public void AutoDelete()
        {
            NewCharacter CharToDelete = _context.NewCharacter.FirstOrDefault(ctd => ctd.isSaved == false && ctd.CreatedAt < DateTime.Now.AddHours(-6));

            if (CharToDelete != null)
            {
                //Need to unravel the new character object and delete the character objects connected to it
                //Spell Associations - check
                //Feature Associations - check
                //playerClass - check
                //playerRace - check
                //playerStat - check
                //playerBG - check
                List <SpellAssoc> SpellsAssocToDelete = _context.Spell_Associations.Where(sa => sa.CharacterId == CharToDelete.CharacterId).ToList();
                foreach (SpellAssoc sa in SpellsAssocToDelete)
                {
                    _context.Spell_Associations.Remove(sa);
                }
                List <FeatureAssoc> FeatAssocToDelete = _context.Feature_Associations.Where(fa => fa.CharacterId == CharToDelete.CharacterId).ToList();
                foreach (FeatureAssoc fa in FeatAssocToDelete)
                {
                    _context.Feature_Associations.Remove(fa);
                }
                PlayerClass PClassToDelete = _context.PlayerClasses.FirstOrDefault(pc => pc.PlayerClassId == CharToDelete.playerClassId);
                _context.PlayerClasses.Remove(PClassToDelete);
                PlayerRace PRaceToDelete = _context.PlayerRaces.FirstOrDefault(pr => pr.PlayerRaceId == CharToDelete.playerRaceId);
                _context.PlayerRaces.Remove(PRaceToDelete);
                PlayerStat PStatToDelete = _context.PlayerStats.FirstOrDefault(ps => ps.PlayerStatId == CharToDelete.playerStatId);
                _context.PlayerStats.Remove(PStatToDelete);
                PlayerBG PGBToDelete = _context.PlayerBGs.FirstOrDefault(pbg => pbg.PlayerBGId == CharToDelete.playerBGId);
                _context.PlayerBGs.Remove(PGBToDelete);

                _context.NewCharacter.Remove(CharToDelete);
            }
        }
        /// <summary>
        /// Creates a new character associated with a single campaign
        /// </summary>
        /// <param name="model"></param>
        /// <param name="userId"></param>
        /// <param name="shouldValidate">Whether to explicitly validate the given model</param>
        /// <exception cref="ArgumentNullException">If model is empty</exception>
        /// <exception cref="ValidationException">If shouldValidate = true and the given model is invalid</exception>
        /// <exception cref="DataNotCreatedException">If the character was not added to the database</exception>
        /// <returns>The character's ID</returns>
        public async Task <Guid> CreateCharacter(NewCharacter model, string userId, bool shouldValidate = false)
        {
            if (model == null || string.IsNullOrWhiteSpace(userId))
            {
                throw new ArgumentNullException(nameof(model), "Character and user ID must not be null");
            }

            if (shouldValidate)
            {
                Validator.ValidateObject(model, new ValidationContext(model), true);
            }

            using (var db = new DatabaseContext(options))
            {
                var character = new Character(model, userId);

                db.Characters.Add(character);

                int changes = await db.SaveChangesAsync();

                if (changes != 1)
                {
                    throw new DataNotCreatedException("Could not add character to campaign");
                }

                return(character.CharacterId);
            }
        }
        public IActionResult deleteChar(int characterid)
        {
            NewCharacter CharToDelete = _context.NewCharacter.FirstOrDefault(ctd => ctd.CharacterId == characterid);

            if (CharToDelete != null)
            {
                List <SpellAssoc> SpellsAssocToDelete = _context.Spell_Associations.Where(sa => sa.CharacterId == CharToDelete.CharacterId).ToList();
                foreach (SpellAssoc sa in SpellsAssocToDelete)
                {
                    _context.Spell_Associations.Remove(sa);
                }
                List <FeatureAssoc> FeatAssocToDelete = _context.Feature_Associations.Where(fa => fa.CharacterId == CharToDelete.CharacterId).ToList();
                foreach (FeatureAssoc fa in FeatAssocToDelete)
                {
                    _context.Feature_Associations.Remove(fa);
                }
                PlayerClass PClassToDelete = _context.PlayerClasses.FirstOrDefault(pc => pc.PlayerClassId == CharToDelete.playerClassId);
                _context.PlayerClasses.Remove(PClassToDelete);
                PlayerRace PRaceToDelete = _context.PlayerRaces.FirstOrDefault(pr => pr.PlayerRaceId == CharToDelete.playerRaceId);
                _context.PlayerRaces.Remove(PRaceToDelete);
                PlayerStat PStatToDelete = _context.PlayerStats.FirstOrDefault(ps => ps.PlayerStatId == CharToDelete.playerStatId);
                _context.PlayerStats.Remove(PStatToDelete);
                PlayerBG PGBToDelete = _context.PlayerBGs.FirstOrDefault(pbg => pbg.PlayerBGId == CharToDelete.playerBGId);
                _context.PlayerBGs.Remove(PGBToDelete);

                _context.NewCharacter.Remove(CharToDelete);
            }
            _context.SaveChanges();
            int?SessionId = HttpContext.Session.GetInt32("UserId");

            return(RedirectToAction("Profile", new { ID = SessionId }));
        }
 public InventoryPage(NewCharacter page)//(Creature Data)
 {
     InitializeComponent();
     // Set the data binding for the page
     BindingContext = _viewModel = ItemsViewModel.Instance;
     newcPage       = page; //page to assign items in new character page
     character      = page.Data;
 }
Example #5
0
    public void NewCharacter(NewCharacter character)
    {
        dataUpdated = false;
        string json  = JsonUtility.ToJson(character);
        string token = RandomString.Generate();

        StartCoroutine(SendData("https://www.pixelsouls.be/newCharacter/" + token + "/" + user.tempToken, json, token));
        //StartCoroutine(SendData("http://127.0.0.1:8000/newCharacter/" + token, json, token));
    }
Example #6
0
        public static void NewCharacter()
        {
            NewCharacter P = new NewCharacter
            {
                CharacterName = NewCharacterDialog.CharacterNameTextBox.Text,
                Class         = NewCharacterDialog.NewClass,
                Gender        = NewCharacterDialog.NewGender
            };

            Network.Enqueue(P);
        }
Example #7
0
        public bool CreateCharacter(BasicSheet sheet)
        {
            NewCharacter newCharacter = new NewCharacter();

            Character = newCharacter.Get(sheet);
            DataCharacter dataCharacter = new DataCharacter();

            dataCharacter.Save(Character);


            return(true);
        }
Example #8
0
    private IEnumerator SendNewCharacterData(string text)
    {
        NewCharacter character = new NewCharacter();

        character.name = text;

        DBManager.Instance.NewCharacter(character);

        yield return(new WaitUntil(() => DBManager.Instance.dataUpdated));

        GameManager.Instance.ChangeLevel("chooseCharacter");
        checkCoroutine = null;
    }
        public async Task <Character> CreateChar(Guid playerid, NewCharacter character)
        {
            Character _character = new Character()
            {
                _CharId       = Guid.NewGuid(),
                _Name         = character._Name,
                _Strength     = character._Strength,
                _Agility      = character._Agility,
                _Intelligence = character._Intelligence
            };

            return(await _repository.CreateChar(playerid, _character));
        }
        public async Task Success_WithoutCampaign()
        {
            // Arrange
            var          options = DatabaseSetup.CreateContextOptions();
            const string userId  = "The Best ID";
            const string name    = "My Character";
            Guid?        result  = null;
            Type         eType   = null;

            // Act
            var games     = new GameService(options);
            var character = new NewCharacter
            {
                Name       = name,
                Strength   = 10,
                Dexterity  = 10,
                Mind       = 10,
                CampaignId = null,
                Class      = Micro20ClassType.Fighter,
                Race       = Micro20RaceType.Human
            };

            try
            {
                result = await games.CreateCharacter(character, userId, true);
            }
            catch (DataNotCreatedException e)
            {
                eType = e.GetType();
            }

            // Assert
            Assert.NotNull(result);
            Assert.Null(eType);
            using (var db = new DatabaseContext(options))
            {
                Assert.Equal(1, db.Characters.Count());

                var dbCharacter = await db.Characters.SingleAsync();

                Assert.Equal(result, dbCharacter.CharacterId);
                Assert.Equal(character.Strength, dbCharacter.BaseStrength);
                Assert.Equal(character.Dexterity, dbCharacter.BaseDexterity);
                Assert.Equal(character.Mind, dbCharacter.BaseMind);
                Assert.Equal(character.Race, dbCharacter.Race);
                Assert.Equal(character.Class, dbCharacter.Class);
                Assert.Null(dbCharacter.CampaignId);
                Assert.Equal(userId, dbCharacter.UserId);
                Assert.Equal(1, dbCharacter.Level);
            }
        }
        public async Task Fail_BadCharacterData(string name, int str, int dex, int mind, int classType, int raceType)
        {
            // Arrange
            var          options  = DatabaseSetup.CreateContextOptions();
            const string userId   = "A user id";
            var          campaign = new Campaign
            {
                GmUserId = userId,
                Name     = "A campaign"
            };
            Type ex     = null;
            Guid?result = null;

            using (var db = new DatabaseContext(options))
            {
                db.Campaigns.Add(campaign);
                int changes = await db.SaveChangesAsync();

                Assert.Equal(1, changes);
            }

            // Act
            var games     = new GameService(options);
            var character = new NewCharacter
            {
                Name       = name,
                Strength   = str,
                Dexterity  = dex,
                Mind       = mind,
                CampaignId = campaign.CampaignId,
                Class      = (Micro20ClassType)classType,
                Race       = (Micro20RaceType)raceType
            };

            try
            {
                result = await games.CreateCharacter(character, userId, true);
            }
            catch (ValidationException e)
            {
                ex = e.GetType();
            }

            // Assert
            Assert.Null(result);
            Assert.NotNull(ex);
            using (var db = new DatabaseContext(options))
            {
                Assert.False(db.Characters.Any());
            }
        }
    // Use this for initialization
    private void Start()
    {
        Input.multiTouchEnabled = false;

        // 플레이어 객체 캐싱
        player = GameObject.Find("Player").GetComponent <NewCharacter>();

        // Rect Component 캐싱
        rectTrans = GetComponent <RectTransform>();


        // 최대 ClickArea 이동 거리 지정
        maxMove = 25.0f;
    }
Example #13
0
        public NewCharacter GetNewCharacter()
        {
            //Get player,player skills and player stats
            var newCharacter = new NewCharacter();

            newCharacter.Races      = new StoredRaces().GetRaces();
            newCharacter.Stats      = new StoredStat().GetStats();
            newCharacter.Skills     = new StoredSkill().GetSkills();
            newCharacter.Feats      = new StoredFeat().GetFeats();
            newCharacter.Genders    = new StoredGender().GetGenders();
            newCharacter.Alignments = new StoredAlignment().GetAlignments();
            newCharacter.Classes    = new StoredClass().GetClasses();

            return(newCharacter);
        }
Example #14
0
 public Character(NewCharacter model, string userId)
 {
     CampaignId    = model.CampaignId;
     UserId        = userId;
     Name          = model.Name;
     Height        = model.Height;
     Weight        = model.Weight;
     HairColor     = model.HairColor;
     EyeColor      = model.EyeColor;
     BaseStrength  = model.Strength;
     BaseDexterity = model.Dexterity;
     BaseMind      = model.Mind;
     Race          = model.Race;
     Class         = model.Class;
 }
        public async Task <IActionResult> AddCharacter([FromBody] NewCharacter character)
        {
            try
            {
                Console.WriteLine(character.characterVisualData.ToString(Newtonsoft.Json.Formatting.None));
                var res = await characterModerationManager.CreateCharacter(HttpContext.GetUserIDFromJWTHeader(), character.characterName, character.characterVisualData);

                return(Ok(res));
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                return(BadRequest());
            }
        }
Example #16
0
        public static void NewCharacter(NewCharacter P)
        {
            NewCharacterDialog.CharacterNameTextBox.Enabled = true;
            NewCharacterDialog.ConfirmButton.Enabled        = true;

            switch (P.Result)
            {
            case 0:
                SceneFunctions.ShowMessage("An error occured when trying create your character.");
                break;

            case 1:
                NewCharacterDialog.Hide();
                SceneFunctions.ShowMessage("Creating new characters is currently disabled.");
                break;

            case 2:
                SceneFunctions.ShowMessage("Your Character Name is not acceptable.");
                NewCharacterDialog.CharacterNameTextBox.SetFocus();
                break;

            case 3:
                SceneFunctions.ShowMessage("The gender you selected does not exist.\n Contact a GM for assistance.");
                break;

            case 4:
                SceneFunctions.ShowMessage("The class you selected does not exist.\n Contact a GM for assistance.");
                break;

            case 5:
                SceneFunctions.ShowMessage("You cannot make anymore then " + Globals.MaxCharacterCount + " Characters.");
                NewCharacterDialog.Hide();
                break;

            case 6:
                SceneFunctions.ShowMessage("A Character with this name already exists.");
                NewCharacterDialog.CharacterNameTextBox.SetFocus();
                break;

#if DEBUG
            default:
                throw new NotImplementedException();
#endif
            }
        }
        public IActionResult UpdateNote(int characterId, string name, string notes)
        {
            // User Check to make sure login is completed, if not theredirect to login
            int? SessionId   = HttpContext.Session.GetInt32("UserId");
            User SessionUser = _context.Users.FirstOrDefault(u => u.UserId == SessionId);

            if (SessionUser == null)
            {
                return(View("UserLogin"));
            }
            NewCharacter CharacterUpdate = _context.NewCharacter.FirstOrDefault(c => c.CharacterId == characterId);

            CharacterUpdate.playerName  = name;
            CharacterUpdate.playerNotes = notes;
            //isSaved Bool now in use v
            CharacterUpdate.isSaved = true;
            //isSaved Bool now in use ^
            _context.SaveChanges();
            return(RedirectToAction("ViewCharacter", new { ID = characterId }));
        }
Example #18
0
        public async Task <IActionResult> CreateCharacter(NewCharacter model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            try
            {
                string userId = users.GetUserId();
                var    result = await games.CreateCharacter(model, userId);

                return(Created(string.Empty, new { CharacterId = result.ToString() }));
            }
            catch (DataNotCreatedException e)
            {
                logger.LogWarning(0, e, "Could not create character");
                return(BadRequest(new { Error = e.Message }));
            }
        }
        public IActionResult ViewCharacter(int ID)
        {
            NewCharacter character = _context.NewCharacter.Include(c => c.playerRace).Include(c => c.playerClass).Include(c => c.playerStat).Include(c => c.playerBG).FirstOrDefault(c => c.CharacterId == ID);

            int?SessionId = HttpContext.Session.GetInt32("UserId");

            ViewBag.SessionId = SessionId;
            User SessionUser = _context.Users.FirstOrDefault(u => u.UserId == SessionId);


            List <Feature> Feats = _context.NewCharacter
                                   .Include(c => c.FeaturesList)
                                   .ThenInclude(fa => fa.FeatureA)
                                   .FirstOrDefault(c => c.CharacterId == character.CharacterId)
                                   .FeaturesList.Select(f => f.FeatureA)
                                   .OrderBy(f => f.FeatLevel)
                                   .ToList();

            List <Spell> Spells = _context.NewCharacter
                                  .Include(c => c.SpellList)
                                  .ThenInclude(sa => sa.SpellA)
                                  .FirstOrDefault(c => c.CharacterId == character.CharacterId)
                                  .SpellList.Select(s => s.SpellA)
                                  .OrderBy(f => f.SpellLevel)
                                  .ToList();

            int passiveperception = 10 + character.playerStat.Perception;

            dynamic MyModel = new ExpandoObject();

            MyModel.User              = SessionUser;
            MyModel.Login             = new Login();
            MyModel.Character         = character;
            MyModel.Spells            = Spells;
            MyModel.Features          = Feats;
            MyModel.PassivePerception = passiveperception;

            return(View("Index", MyModel));
        }
        public MainPage()
        {
            MAINPAGE = this;

            ApplicationViewTitleBar titleBar = ApplicationView.GetForCurrentView().TitleBar;

            titleBar.BackgroundColor               = Colors.Black;
            titleBar.ForegroundColor               = Colors.White;
            titleBar.ButtonBackgroundColor         = Colors.Black;
            titleBar.ButtonForegroundColor         = Colors.White;
            titleBar.InactiveBackgroundColor       = Colors.Black;
            titleBar.InactiveForegroundColor       = App.Colors.BUTTON_CLICK.Color;
            titleBar.ButtonInactiveBackgroundColor = Colors.Black;
            titleBar.ButtonHoverBackgroundColor    = App.Colors.BUTTON_IDLE_LEFT.Color;
            titleBar.ButtonHoverForegroundColor    = Colors.White;

            InitializeComponent();
            NavCharacter.SetPageType(PageType.CHARACTER);
            NavBase.SetPageType(PageType.BASE);
            NavCombat.SetPageType(PageType.COMBAT);
            NavSkills.SetPageType(PageType.SKILLS);
            NavFeats.SetPageType(PageType.FEATS);
            NavInventory.SetPageType(PageType.INVENTORY);
            NavSpells.SetPageType(PageType.SPELLS);
            NavParty.SetPageType(PageType.PARTY);
            NavSettings.SetPageType(PageType.SETTINGS);
            NavSettings1.SetPageType(PageType.SETTINGS);

            NewCharacter.SetLoadType(LoadType.NEW);
            LoadCharacter.SetLoadType(LoadType.LOAD);
            DeleteCharacter.SetLoadType(LoadType.DELETE);
            SortOptions.SetLoadType(LoadType.SORT);
            NavCharactersMenu.SetLoadType(LoadType.MENU);

            LoadCharacters();

            //ChangePage(NavCharacter);
        }
Example #21
0
        public static void CreateNewCharacter(PartyWin partywin, Button charpos)
        {
            Character    chara        = new Character();
            NewCharacter newcharacter = new NewCharacter(partywin, charpos);

            newcharacter.CharTypeCombo.Items.Add("Warrior");
            newcharacter.CharTypeCombo.Items.Add("Cleric");
            newcharacter.CharTypeCombo.Items.Add("Rogue");
            newcharacter.CharTypeCombo.Items.Add("Wizard");
            newcharacter.CharTypeCombo.Items.Add("Barbarian");
            newcharacter.CharTypeCombo.Items.Add("Elf");
            newcharacter.CharTypeCombo.Items.Add("Dwarf");
            newcharacter.CharTypeCombo.Items.Add("Halfling");
            newcharacter.GoldBox.Text = "0";
            for (int i = 1; i < 16; i++)
            {
                newcharacter.LevelCombo.Items.Add(i);
            }

            newcharacter.LevelCombo.SelectedIndex = 0;

            newcharacter.Show();
        }
    public void PlayerLoggedIn(ScoreoidPlayer player)
    {
        /**HACK: The only reason this is stored in this case is to support if a player registers, does not select a weapon,
         	logs in later, and is brought to the weaponselect screen.  The weaponselection screen is designed to read a new-
         	character object so we fill this out just in case.  ***/
        // Start a new character object
        character = new NewCharacter();	//TODO: Since this is global, should be forcefully dereferenced
        // Store these details between this step and the weapon selection phase
        character.name = player.playerName;
        character.password = passwordInput;

        Utilities().setCurrentCharacter(player);
    }
        public IActionResult SpecificGeneration(string selectedrace, string selectedclass, string selectedlevel)
        {
            AutoDelete();
            int? SessionId   = HttpContext.Session.GetInt32("UserId");
            User SessionUser = _context.Users.FirstOrDefault(u => u.UserId == SessionId);

            if (SessionUser == null)
            {
                return(View("UserLogin"));
            }
            int Level = Int32.Parse(selectedlevel);

            if (Level == 0) //Assign the base choice value as == 0
            {
                Level = rand.Next(1, 21);
            }
            //creating input for creation and modification of base in other functions
            PlayerStat playerStat = new PlayerStat(Level);

            // Run player stat through background
            PlayerBG playerBG = new PlayerBG();

            // Returns player Stat VVV
            playerBG.BGSelector(playerStat, playerBG);

            // Determines player Race and then run stats
            PlayerRace playerRace = new PlayerRace();

            // Returns player Stat VVV

            // Determine Player Class and run playerStat
            if (selectedrace != "Random")
            {
                playerRace.SpecificRaceSelector(Level, playerStat, playerRace, selectedrace);
            }
            else
            {
                playerRace.RaceSelector(Level, playerStat, playerRace);
            }
            PlayerClass playerClass = new PlayerClass(Level, playerStat);

            // Returns player Stat VVV
            if (selectedclass != "Random")
            {
                playerClass.SpecClassSelector(Level, playerStat, playerClass, selectedclass);
            }
            else
            {
                playerClass.ClassSelector(Level, playerStat, playerClass);
            }
            // reruns numbers based on updated proficiencies and skill increases
            playerStat.UpdatePro(playerStat);

            // create connection to all character objects within the character
            NewCharacter newPlayer = new NewCharacter(Level, playerStat, playerRace, playerClass, playerBG, SessionUser);

            _context.PlayerStats.Add(playerStat);
            _context.PlayerBGs.Add(playerBG);
            _context.PlayerClasses.Add(playerClass);
            _context.PlayerRaces.Add(playerRace);
            _context.NewCharacter.Add(newPlayer);

            // Feat Generation
            List <Feature> charFeatures = _context.Features.Where(f => ((f.FeatSource == playerClass.ClassName) && (f.FeatLevel <= Level)) || ((f.FeatSource == playerClass.SubClassName) && (f.FeatLevel <= Level))).ToList();

            foreach (Feature feat in charFeatures)
            {
                var Fassoc = new FeatureAssoc(newPlayer, feat);
                _context.Feature_Associations.Add(Fassoc);
                _context.SaveChanges();
            }

            List <Feature> Feats = _context.NewCharacter.Include(c => c.FeaturesList)
                                   .ThenInclude(fa => fa.FeatureA)
                                   .FirstOrDefault(c => c.CharacterId == newPlayer.CharacterId)
                                   .FeaturesList.Select(f => f.FeatureA)
                                   .OrderBy(f => f.FeatLevel)
                                   .ToList();


            List <Spell> ClassAvailbleSpells = _context.Spells.Where(s =>
                                                                     s.Source1 == newPlayer.playerClass.ClassName ||
                                                                     s.Source2 == newPlayer.playerClass.ClassName ||
                                                                     s.Source3 == newPlayer.playerClass.ClassName ||
                                                                     s.Source4 == newPlayer.playerClass.ClassName ||
                                                                     s.Source5 == newPlayer.playerClass.ClassName ||
                                                                     s.Source6 == newPlayer.playerClass.ClassName ||
                                                                     s.Source7 == newPlayer.playerClass.ClassName
                                                                     ).ToList();

            List <Spell> NonClassSpells = _context.Spells.Where(s =>
                                                                s.Source1 != newPlayer.playerClass.ClassName ||
                                                                s.Source2 != newPlayer.playerClass.ClassName ||
                                                                s.Source3 != newPlayer.playerClass.ClassName ||
                                                                s.Source4 != newPlayer.playerClass.ClassName ||
                                                                s.Source5 != newPlayer.playerClass.ClassName ||
                                                                s.Source6 != newPlayer.playerClass.ClassName ||
                                                                s.Source7 != newPlayer.playerClass.ClassName
                                                                ).ToList();

            Spell        FetchSpell           = new Spell();
            List <Spell> availableSpells      = FetchSpell.GetPossibleSpells(newPlayer, ClassAvailbleSpells, NonClassSpells);
            SpellAssoc   AlwaysPreppedChecker = new SpellAssoc();

            foreach (Spell s in availableSpells)
            {
                SpellAssoc a = new SpellAssoc(newPlayer, s);//always true
                AlwaysPreppedChecker.AlwaysPreppedChecker(newPlayer, s, a);
                _context.Spell_Associations.Add(a);
                _context.SaveChanges();
            }

            List <Spell> Spells = _context.NewCharacter
                                  .Include(c => c.SpellList)
                                  .ThenInclude(sa => sa.SpellA)
                                  .FirstOrDefault(c => c.CharacterId == newPlayer.CharacterId)
                                  .SpellList.Select(s => s.SpellA)
                                  .OrderBy(f => f.SpellLevel)
                                  .ThenBy(f => f.SpellName)
                                  .ToList();

            _context.SaveChanges();

            int passiveperception = 10 + newPlayer.playerStat.Perception;

            //Dynamic model with USer, Login, Character
            dynamic MyModel = new ExpandoObject();

            MyModel.User              = SessionUser;
            MyModel.Login             = new Login();
            MyModel.Character         = newPlayer;
            MyModel.Features          = Feats;
            MyModel.Spells            = Spells;
            MyModel.PassivePerception = passiveperception;
            return(View("Index", MyModel));
        }
        public IActionResult Index()
        {
            // Check for features, if null populate DB
            Feature featTest = _context.Features.FirstOrDefault(f => f.FeatureId == 1);

            if (featTest == null)
            {
                Feature        feats       = new Feature();
                List <Feature> FeatureList = feats.GenerateFeatureList();
                foreach (Feature f in FeatureList)
                {
                    _context.Features.Add(f);
                    _context.SaveChanges();
                }
            }
            // Check for spells, if null populate DB
            Spell spellTest = _context.Spells.FirstOrDefault(s => s.SpellId == 1);

            if (spellTest == null)
            {
                Spell        spell     = new Spell();
                List <Spell> SpellList = spell.GenerateSpellList();
                foreach (Spell s in SpellList)
                {
                    _context.Spells.Add(s);
                    _context.SaveChanges();
                }
            }
            // Check for base user, if null Populate DB
            User userCheck = _context.Users.FirstOrDefault(u => u.UserId == 1);

            if (userCheck == null)
            {
                string email    = "*****@*****.**";
                string uName    = "UnameTest";
                string PW       = "vu942kjdaiduq934i3o4odsud9qw324";
                User   testUser = new User(email, uName, PW);
                _context.Users.Add(testUser);
                _context.SaveChanges();
                userCheck = testUser;
            }
            // Create a function to generate 1 character for display if none in dB
            NewCharacter characterCheck = _context.NewCharacter.FirstOrDefault(c => c.CharacterId == 1);

            if (characterCheck == null)
            {
                NewCharacter test = new NewCharacter(1, userCheck);
                test.isSaved    = true;
                test.playerName = "First Character Generated";
                _context.PlayerStats.Add(test.playerStat);
                _context.PlayerBGs.Add(test.playerBG);
                _context.PlayerClasses.Add(test.playerClass);
                _context.PlayerRaces.Add(test.playerRace);
                _context.NewCharacter.Add(test);
                _context.SaveChanges();
                List <Feature> charFeatures = _context.Features.Where(f => ((f.FeatSource == test.playerClass.ClassName) && (f.FeatLevel <= test.Level)) || ((f.FeatSource == test.playerClass.SubClassName) && (f.FeatLevel <= test.Level))).ToList();
                foreach (Feature feat in charFeatures)
                {
                    var Fassoc = new FeatureAssoc(test, feat);     //id 1- 42
                    _context.Feature_Associations.Add(Fassoc);
                    _context.SaveChanges();
                }

                // Get all associated features with characterID
                List <Feature> Feats = _context.NewCharacter
                                       .Include(c => c.FeaturesList)
                                       .ThenInclude(fa => fa.FeatureA)
                                       .FirstOrDefault(c => c.CharacterId == test.CharacterId)
                                       .FeaturesList.Select(f => f.FeatureA)
                                       .OrderBy(f => f.FeatLevel)
                                       .ToList();

                List <Spell> ClassAvailbleSpells = _context.Spells.Where(s =>
                                                                         s.Source1 == test.playerClass.ClassName ||
                                                                         s.Source2 == test.playerClass.ClassName ||
                                                                         s.Source3 == test.playerClass.ClassName ||
                                                                         s.Source4 == test.playerClass.ClassName ||
                                                                         s.Source5 == test.playerClass.ClassName ||
                                                                         s.Source6 == test.playerClass.ClassName ||
                                                                         s.Source7 == test.playerClass.ClassName
                                                                         ).ToList();
                List <Spell> NonClassSpells = _context.Spells.Where(s =>
                                                                    s.Source1 != test.playerClass.ClassName ||
                                                                    s.Source2 != test.playerClass.ClassName ||
                                                                    s.Source3 != test.playerClass.ClassName ||
                                                                    s.Source4 != test.playerClass.ClassName ||
                                                                    s.Source5 != test.playerClass.ClassName ||
                                                                    s.Source6 != test.playerClass.ClassName ||
                                                                    s.Source7 != test.playerClass.ClassName
                                                                    ).ToList();

                Spell        FetchSpell           = new Spell();
                List <Spell> Spells               = FetchSpell.GetPossibleSpells(test, ClassAvailbleSpells, NonClassSpells);
                SpellAssoc   AlwaysPreppedChecker = new SpellAssoc();
                foreach (Spell s in Spells)
                {
                    SpellAssoc a = new SpellAssoc(test, s);
                    //insert alwayspreppedfunction here
                    AlwaysPreppedChecker.AlwaysPreppedChecker(test, s, a);
                    _context.Spell_Associations.Add(a);
                    _context.SaveChanges();
                }

                int passiveperception = 10 + test.playerStat.Perception;

                // Dynamic model to provide all available objects and data
                dynamic MyModel = new ExpandoObject();
                MyModel.User              = userCheck;
                MyModel.Login             = new Login();
                MyModel.Character         = test;
                MyModel.Features          = Feats;
                MyModel.Spells            = Spells;
                MyModel.PassivePerception = passiveperception;


                return(View("index", MyModel));
            }

            // if DB is populated with spells, feats, 1 character and 1 user are already present
            else
            {
                // Home screen selects and shows previously generated characters. IF players would like to generate new characters or save them, they must login
                int? SessionId   = HttpContext.Session.GetInt32("UserId");
                User SessionUser = _context.Users.FirstOrDefault(u => u.UserId == SessionId);
                // Get list of all Currently generated characters
                List <NewCharacter> CharacterList = _context.NewCharacter.ToList();
                // select random character and gather all stats, BG, Race and class
                // random selection might need tweaking
                int          characterNum = 1;
                NewCharacter character    = _context.NewCharacter.Include(c => c.playerRace).Include(c => c.playerClass).Include(c => c.playerStat).Include(c => c.playerBG).FirstOrDefault(c => c.CharacterId == characterNum);
                // LINQ query all Feature Associations
                List <Feature> Feats = _context.NewCharacter
                                       .Include(c => c.FeaturesList)
                                       .ThenInclude(fa => fa.FeatureA)
                                       .FirstOrDefault(c => c.CharacterId == character.CharacterId)
                                       .FeaturesList.Select(f => f.FeatureA)
                                       .OrderBy(f => f.FeatLevel)
                                       .ToList();

                List <Spell> Spells = _context.NewCharacter
                                      .Include(c => c.SpellList)
                                      .ThenInclude(sa => sa.SpellA)
                                      .FirstOrDefault(c => c.CharacterId == character.CharacterId)
                                      .SpellList.Select(s => s.SpellA)
                                      .OrderBy(f => f.SpellLevel)
                                      .ThenBy(f => f.SpellName)
                                      .ToList();

                // Pass Model User, Character, Feats
                //passiveperception, because it hates trying to do it on the front end
                int passiveperception = 10 + character.playerStat.Perception;

                dynamic MyModel = new ExpandoObject();
                MyModel.User              = SessionUser;
                MyModel.Login             = new Login();
                MyModel.Character         = character;
                MyModel.Features          = Feats;
                MyModel.Spells            = Spells;
                MyModel.PassivePerception = passiveperception;



                return(View("index", MyModel));
            }
        }
Example #25
0
        public void Initialize()
        {
            #region Toolbar setup
            _fileMenu = new Menu();

            _fileMenuItem        = new MenuItem();
            _fileMenuItem.Header = "File";

            _saveFile        = new MenuItem();
            _saveFile.Click += (sender, args) => { Save?.Invoke(); };
            _saveFile.Header = "Save character";

            _loadFile        = new MenuItem();
            _loadFile.Click += (sender, args) => { Load?.Invoke(); };
            _loadFile.Header = "Load character";

            _newCharacter        = new MenuItem();
            _newCharacter.Click += (sender, args) => { NewCharacter?.Invoke(); };
            _newCharacter.Header = "New character";

            _fileMenuItem.Items.Add(_newCharacter);
            _fileMenuItem.Items.Add(_saveFile);
            _fileMenuItem.Items.Add(_loadFile);
            _fileMenu.Items.Add(_fileMenuItem);

            _toolBar = new ToolBar();
            _toolBar.Items.Add(_fileMenu);
            Grid.SetColumn(_toolBar, 0);
            Grid.SetRow(_toolBar, 0);
            #endregion

            #region Content setup

            StackPanel contentLayout = new StackPanel();
            Grid.SetColumn(contentLayout, 0);
            Grid.SetRow(contentLayout, 1);

            Label nameLabel = new Label();
            nameLabel.Content = "Character name:";
            contentLayout.Children.Add(nameLabel);
            _name = new TextBox();
            contentLayout.Children.Add(_name);

            Label baseInfoLabel = new Label();
            baseInfoLabel.Content = "Base information:";
            contentLayout.Children.Add(baseInfoLabel);
            _baseInformation               = new TextBox();
            _baseInformation.Height        = 70;
            _baseInformation.TextWrapping  = TextWrapping.Wrap;
            _baseInformation.AcceptsReturn = true;
            contentLayout.Children.Add(_baseInformation);

            Label appearanceLabel = new Label();
            appearanceLabel.Content = "Character appearance:";
            contentLayout.Children.Add(appearanceLabel);
            _appearance               = new TextBox();
            _appearance.Height        = 70;
            _appearance.TextWrapping  = TextWrapping.Wrap;
            _appearance.AcceptsReturn = true;
            contentLayout.Children.Add(_appearance);

            Label desctiptionLabel = new Label();
            desctiptionLabel.Content = "Character description:";
            contentLayout.Children.Add(desctiptionLabel);
            _description               = new TextBox();
            _description.Height        = 300;
            _description.TextWrapping  = TextWrapping.Wrap;
            _description.AcceptsReturn = true;
            contentLayout.Children.Add(_description);


            #endregion

            #region Grid setup
            _gridPanel = new Grid();

            RowDefinition rd1 = new RowDefinition();
            rd1.Height = GridLength.Auto;
            _gridPanel.RowDefinitions.Add(rd1);
            RowDefinition rd2 = new RowDefinition();
            _gridPanel.RowDefinitions.Add(rd2);
            ColumnDefinition cd1 = new ColumnDefinition();
            _gridPanel.ColumnDefinitions.Add(cd1);
            _gridPanel.Children.Add(_toolBar);
            _gridPanel.Children.Add(contentLayout);
            _gridPanel.HorizontalAlignment = HorizontalAlignment.Stretch;
            _gridPanel.VerticalAlignment   = VerticalAlignment.Stretch;
            _gridPanel.Margin = new Thickness(0.2);
            #endregion
        }
Example #26
0
 // Use this for initialization
 void Start()
 {
     soundEffect = GetComponentInChildren <AudioSource>();
     character   = GetComponent <NewCharacter>();
     StartCoroutine(MovingSound());
 }
Example #27
0
 public void OnNewCharacter(NewCharacter package)
 {
     _stateHandler.EntityManager.AddEntity(package.ObjectId, package.CharacterName, GameObject.GameObjectType.Player, GameObject.GameObjectSubType.Player);
 }
Example #28
0
 protected override void SpecificInit()
 {
     player = FindObjectOfType <NewPlayer>();
 }
    // -- Registration: Step 2 - Username and Password were available, and a "Player" was created
    public void PlayerRegistered()
    {
        // Start a new character object
        character = new NewCharacter();

        // Store these details between this step and the character selection phase
        character.name = characterNameInput;
        character.password = passwordInput;

        // Start the character selection
        Utilities().setGameState(GameState.WeaponSelection);
    }
Example #30
0
        public static void handlePacket(GameClient client, byte[] buff)
        {
            byte   id     = buff[0];
            string cninfo = "handlepacket: request " + id.ToString("x2") + " size " + buff.Length;

            string str = "header: " + buff[0].ToString("x2") + "\n";

            foreach (byte b in buff)
            {
                str += b.ToString("x2") + " ";
            }

            Console.WriteLine(str);
            //File.WriteAllText("header_" + buff[0].ToString("x2")+".txt", str);


            GameServerNetworkRequest msg = null;

            switch (id)
            {
            case 0x00:
                msg = new ProtocolVersion(client, buff);
                break;

            case 0x08:
                msg = new AuthLogin(client, buff);
                break;

            case 0x09:
                msg = new Logout(client, buff);
                break;

            case 0x0b:
                msg = new CharacterCreate(client, buff);
                break;

            //case 0x0c:
            //    msg = new CharacterDelete(client, buff);
            //    break;
            case 0x0d:
                msg = new CharacterSelected(client, buff);
                break;

            case 0x0e:
                msg = new NewCharacter(client, buff);
                break;
            //case 0x62:
            //    msg = new CharacterRestore(client, buff);
            //    break;
            //case 0x68:
            //    msg = new RequestPledgeCrest(client, buff);
            //    break;

            //case 0x0c:
            //    msg = new CharacterCreate(client, buff);
            //    break;
            //case 0x00:
            //    msg = new ProtocolVersion(client, buff);
            //    break;
            //case 0x09:
            //    msg = new RequestSetPledgeCrest(client, buff);
            //    break;
            case 0x01:
                msg = new MoveBackwardToLocation(client, buff);
                break;

            case 0x03:
                msg = new EnterWorld(client, buff);
                break;

            case 0x0f:
                msg = new RequestItemList(client, buff);
                break;

            case 0x11:
                msg = new RequestUnEquipItem(client, buff);
                break;

            case 0x14:
                msg = new RequestUseItem(client, buff);
                break;

            case 0x1A:
                msg = new RequestStartTrade(client, buff);
                break;

            case 0x16:
                msg = new RequestAddTradeItem(client, buff);
                break;

            case 0x17:
                msg = new RequestTradeDone(client, buff);
                break;

            case 0x04:
                msg = new RequestAction(client, buff);
                break;

            case 0x20:
                msg = new RequestLinkHtml(client, buff);
                break;

            case 0x21:
                msg = new RequestBypassToServer(client, buff);
                break;

            case 0x26:
                msg = new RequestWithdrawalPledge(client, buff);
                break;

            case 0x8c:
                msg = new RequestGetItemFromPet(client, buff);
                break;

            case 0x1b:
                msg = new RequestSocialAction(client, buff);
                break;

            case 0x1e:
                msg = new RequestSellItem(client, buff);
                break;

            case 0x2f:
                msg = new RequestMagicSkillUse(client, buff);
                break;

            case 0x30:
                msg = new Appearing(client, buff);
                break;

            case 0x3B:
                msg = new RequestWarehouseDeposit(client, buff);
                break;

            case 0x32:
                msg = new RequestWarehouseWithdraw(client, buff);
                break;

            case 0x33:
                msg = new RequestShortCutReg(client, buff);
                break;

            case 0x35:
                msg = new RequestShortCutDel(client, buff);
                break;

            case 0x1f:
                msg = new RequestBuyItem(client, buff);
                break;

            case 0x29:
                msg = new RequestJoinParty(client, buff);
                break;

            case 0x2a:
                msg = new RequestAnswerJoinParty(client, buff);
                break;

            case 0x2b:
                msg = new RequestWithDrawalParty(client, buff);
                break;

            case 0x2c:
                msg = new RequestOustPartyMember(client, buff);
                break;

            case 0x36:
                msg = new CannotMoveAnymore(client, buff);
                break;

            case 0x37:
                msg = new RequestTargetCanceld(client, buff);
                break;

            case 0x38:
                msg = new Say2(client, buff);
                break;

            case 0x42:
                msg = new RequestGetOnVehicle(client, buff);
                break;

            case 0x43:
                msg = new RequestGetOffVehicle(client, buff);
                break;

            case 0x44:
                msg = new AnswerTradeRequest(client, buff);
                break;

            case 0x45:
                msg = new RequestActionUse(client, buff);
                break;

            case 0x46:
                msg = new RequestRestart(client, buff);
                break;

            case 0x48:
                msg = new ValidatePosition(client, buff);
                break;

            case 0x4a:
                msg = new StartRotating(client, buff);
                break;

            case 0x4b:
                msg = new FinishRotating(client, buff);
                break;

            case 0x57:
                msg = new RequestShowBoard(client, buff);
                break;

            case 0x58:
                msg = new RequestEnchantItem(client, buff);
                break;

            case 0x59:
                msg = new RequestDestroyItem(client, buff);
                break;

            case 0x64:
                msg = new RequestQuestAbort(client, buff);
                break;

            case 0x66:
                msg = new RequestPledgeInfo(client, buff);
                break;

            case 0xcd:
                msg = new RequestShowMiniMap(client, buff);
                break;

            case 0x6D:
                msg = new RequestSendMsnChatLog(client, buff);
                break;

            case 0xcf:
                msg = new RequestRecordInfo(client, buff);
                break;

            case 0x73:
                msg = new RequestAcquireSkillInfo(client, buff);
                break;

            case 0x74:
                msg = new SendBypassBuildCmd(client, buff);
                break;

            case 0x75:
                msg = new RequestMoveToLocationInVehicle(client, buff);
                break;

            case 0x7C:
                msg = new RequestAcquireSkill(client, buff);
                break;

            case 0x7D:
                msg = new RequestRestartPoint(client, buff);
                break;

            case 0x80:
                msg = new RequestPartyMatchList(client, buff);
                break;

            case 0x85:
                msg = new RequestTutorialLinkHtml(client, buff);
                break;

            case 0x86:
                msg = new RequestTutorialPassCmdToServer(client, buff);
                break;
            //  case 0x87:
            //      msg = new RequestTutorialQuestionMark();
            //     break;

            case 0x93:
                msg = new RequestChangePetName(client, buff);
                break;

            case 0x94:
                msg = new RequestPetUseItem(client, buff);
                break;

            case 0x95:
                msg = new RequestGiveItemToPet(client, buff);
                break;

            case 0xB0:
                msg = new MultiSellChoose(client, buff);
                break;

            case 0xB1:
                msg = new NetPingResponse(client, buff);
                break;

            case 0xaa:
                msg = new BypassUserCmd(client, buff);
                break;

            case 0xB5:
                msg = new RequestRecipeBookOpen(client, buff);
                break;

            case 0xB6:
                msg = new RequestRecipeBookDestroy(client, buff);
                break;

            case 0xB7:
                msg = new RequestRecipeItemMakeInfo(client, buff);
                break;

            case 0xB8:
                msg = new RequestRecipeItemMakeSelf(client, buff);
                break;

            case 0xC1:
                msg = new ObserverReturn(client, buff);
                break;

            case 0xC7:
                msg = new RequestWearItem(client, buff);
                break;

            case 0xD0:
                byte id2 = buff[1];
                cninfo = "handlepacket: request unk id2 " + id2.ToString("x2") + " size " + buff.Length;
                switch (id2)
                {
                case 8:
                    msg = new RequestManorList(client, buff);
                    break;

                case 0x11:
                    msg = new RequestExSetPledgeCrestLarge(client, buff);
                    break;

                case 5:
                    msg = new RequestAutoSoulShot(client, buff);
                    break;

                case 0x16:
                    msg = new RequestPledgeMemberInfo(client, buff);
                    break;


                case 0x1E:
                    msg = new RequestExRqItemLink(client, buff);
                    break;

                case 0x24:
                    msg = new RequestSaveInventoryOrder(client, buff);
                    break;

                case 0x22:
                    msg = new RequestCursedWeaponList(client, buff);
                    break;

                case 0x4B:
                    msg = new RequestDispel(client, buff);
                    break;

                case 0x4C:
                    msg = new RequestExTryToPutEnchantTargetItem(client, buff);
                    break;

                case 0x4D:
                    msg = new RequestExTryToPutEnchantSupportItem(client, buff);
                    break;

                case 0x4E:
                    msg = new RequestExCancelEnchantItem(client, buff);
                    break;

                //case 0x51:
                //    byte id3 = buff[3];
                //    cninfo = "handlepacket: request unk id3 " + id3.ToString("x2") + " size " + buff.Length;

                //    switch (id3)
                //    {
                //        case 0:
                //            msg = new RequestBookMarkSlotInfo(client, buff);
                //            break;
                //        case 1:
                //            msg = new RequestSaveBookMarkSlot(client, buff);
                //            break;
                //        case 2:
                //            msg = new RequestModifyBookMarkSlot(client, buff);
                //            break;
                //        case 3:
                //            msg = new RequestDeleteBookMarkSlot(client, buff);
                //            break;
                //        case 4:
                //            msg = new RequestTeleportBookMark(client, buff);
                //            break;
                //    }
                //    break;

                case 0x58:
                    msg = new RequestDominionInfo(client, buff);
                    break;

                case 0x65:
                    msg = new RequestPostItemList(client, buff);
                    break;

                case 0x67:
                    msg = new RequestReceivedPostList(client, buff);
                    break;

                case 0x69:
                    msg = new RequestReceivedPost(client, buff);
                    break;

                case 0x6C:
                    msg = new RequestSentPostList(client, buff);
                    break;

                case 0x6E:
                    msg = new RequestSentPost(client, buff);
                    break;

                case 0x76:
                    msg = new RequestBuySellUIClose(client, buff);
                    break;

                case 0x78:
                    msg = new RequestPartyLootModification(client, buff);
                    break;

                case 0x79:
                    msg = new AnswerPartyLootModification(client, buff);
                    break;

                case 0x7F:
                    msg = new RequestBR_GamePoint(client, buff);
                    break;

                case 0x80:
                    msg = new RequestBR_ProductList(client, buff);
                    break;

                case 0x81:
                    msg = new RequestBR_ProductInfo(client, buff);
                    break;

                case 0x82:
                    msg = new RequestBR_BuyProduct(client, buff);
                    break;

                case 0x83:
                    msg = new RequestBR_RecentProductList(client, buff);
                    break;

                case 0x84:
                    msg = new RequestBR_MinigameLoadScores(client, buff);
                    break;

                case 0x85:
                    msg = new RequestBR_MinigameInsertScore(client, buff);
                    break;

                default:
                    // out_debug(2, buff);
                    break;
                }
                break;

            default:
                //  out_debug(1, buff);
                break;
            }
            // Console.WriteLine(cninfo + ", " + cnt);
            if (msg == null)
            {
                Console.WriteLine(cninfo + ", " + cnt);

                //   out_debug(0, buff);
                //  cnt++;
                return;
            }

            if (msg.Client.IsTerminated)
            {
                return;
            }

            new Thread(new ThreadStart(msg.run)).Start();
        }
Example #31
0
 public async Task <Character> CreateChar(Guid userid, [FromBody] NewCharacter character)
 {
     return(await _processor.CreateChar(userid, character));
 }