private void _Populate() { // Get characters try { Customization.GetCharacters(); } catch { MessageBox.Show("There was an error while scanning for characters.", "ERROR", MessageBoxButtons.OK); } // Populate forms with data label_Character.Text = Customization.SelectedCharacter.Data.Name; //add controls for editable skills int SkillStartPositionV = 40; int SkillStartPositionH = 18; foreach (var skill in ValheimEngine.SkillsUI) { Controls.Skill_control skillcontrol = new Controls.Skill_control(); skillcontrol.Location = new System.Drawing.Point(SkillStartPositionH, SkillStartPositionV); skillcontrol.skill_name = skill.ToString(); int skill_level = 101; ValheimEngine.Character.SkillName SN = (ValheimEngine.Character.SkillName)Enum.Parse(typeof(ValheimEngine.Character.SkillName), skill.ToString()); Customization.SelectedCharacter.Data.Skills.Where(w => w.SkillName == SN).ToList().ForEach(s => skill_level = (int)s.Level); if (skill_level != 101) { skillcontrol.skill_level = skill_level; Controls.Add(skillcontrol); } else { ValheimEngine.Character.Skill add_skill = new ValheimEngine.Character.Skill(); add_skill.Level = 1; add_skill.SkillName = SN; Customization.SelectedCharacter.Data.Skills.Add(add_skill); skillcontrol.skill_level = 1; Controls.Add(skillcontrol); } SkillStartPositionV += 70; if (SkillStartPositionV > 700) { SkillStartPositionH += 500; SkillStartPositionV = 40; } } }
private void _Populate() { // Show selected character in form label_Character.Text = Customization.SelectedCharacter.Data.Name; // Add controls for editable skills int SkillStartPositionV = 40; int SkillStartPositionH = 18; foreach (var skill in ValheimEngine.SkillsUI) { Controls.Skill_control skillcontrol = new Controls.Skill_control(); skillcontrol.Location = new System.Drawing.Point(SkillStartPositionH, SkillStartPositionV); skillcontrol.skill_name = skill.ToString(); int skill_level = 101; ValheimEngine.Character.SkillName SN = (ValheimEngine.Character.SkillName)Enum.Parse(typeof(ValheimEngine.Character.SkillName), skill.ToString()); Customization.SelectedCharacter.Data.Skills.Where(w => w.SkillName == SN).ToList().ForEach(s => skill_level = (int)s.Level); if (skill_level != 101) { skillcontrol.skill_level = skill_level; Controls.Add(skillcontrol); } else { ValheimEngine.Character.Skill add_skill = new ValheimEngine.Character.Skill(); add_skill.Level = 1; add_skill.SkillName = SN; Customization.SelectedCharacter.Data.Skills.Add(add_skill); skillcontrol.skill_level = 1; Controls.Add(skillcontrol); } SkillStartPositionV += 70; if (SkillStartPositionV > 700) { SkillStartPositionH += 500; SkillStartPositionV = 40; } } }
// TODO check if data is correct/makes sense static public ValheimEngine.Character CharacterReadData(string path) { // Read header var character = new ValheimEngine.Character(); var byteAccess = LoadDataFromPath(path); if (byteAccess.Length() == 0) { MessageBox.Show("Could not read file.", "ERROR", MessageBoxButtons.OK); } character.CharacterVersion = byteAccess.ReadInt32(); // shouldn't be below 30 character.Kills = byteAccess.ReadInt32(); character.Deaths = byteAccess.ReadInt32(); character.Crafts = byteAccess.ReadInt32(); character.Builds = byteAccess.ReadInt32(); var numberOfWorlds = byteAccess.ReadInt32(); // Read worlds information for (var i = 0; i < numberOfWorlds; i++) { var worldId = byteAccess.ReadInt64(); var world = new ValheimEngine.Character.World { HasCustomSpawnPoint = byteAccess.ReadBoolean(), SpawnPoint = byteAccess.ReadVector3(), HasLogoutPoint = byteAccess.ReadBoolean(), LogoutPoint = byteAccess.ReadVector3(), HasDeathPoint = byteAccess.ReadBoolean(), DeathPoint = byteAccess.ReadVector3(), HomePoint = byteAccess.ReadVector3(), }; if (byteAccess.ReadBoolean()) { world.MapData = byteAccess.ReadBytes(); } character.WorldsData.Add(worldId, world); } // Read main character info character.Name = byteAccess.ReadString(); character.Id = byteAccess.ReadInt64(); character.StartSeed = byteAccess.ReadString(); // Check if character has more player data // Should be false for new characters if (!byteAccess.ReadBoolean()) { return(character); } var dataLength = byteAccess.ReadInt32(); character.DataVersion = byteAccess.ReadInt32(); character.MaxHp = byteAccess.ReadSingle(); character.Hp = byteAccess.ReadSingle(); character.Stamina = byteAccess.ReadSingle(); character.IsFirstSpawn = byteAccess.ReadBoolean(); character.TimeSinceDeath = byteAccess.ReadSingle(); character.GuardianPower = byteAccess.ReadString(); character.GuardianPowerCooldown = byteAccess.ReadSingle(); // Read inventory info character.Inventory = new List <ValheimEngine.Character.Item>(); character.InventoryVersion = byteAccess.ReadInt32(); var numberOfItems = byteAccess.ReadInt32(); for (var i = 0; i < numberOfItems; i++) { var item = new ValheimEngine.Character.Item { Name = byteAccess.ReadString(), Stack = byteAccess.ReadInt32(), Durability = byteAccess.ReadSingle(), Pos = new Tuple <int, int>(byteAccess.ReadInt32(), byteAccess.ReadInt32()), Equipped = byteAccess.ReadBoolean(), Quality = byteAccess.ReadInt32(), Variant = byteAccess.ReadInt32(), CrafterId = byteAccess.ReadInt64(), CrafterName = byteAccess.ReadString() }; if (item.Name != "") { character.Inventory.Add(item); } } // Read character info like recipes, trophies, tutorials, etc character.Recipes = new HashSet <string>(); character.KnownMaterials = new HashSet <string>(); character.ShownTutorials = new HashSet <string>(); character.Uniques = new HashSet <string>(); character.Trophies = new HashSet <string>(); character.Biomes = new HashSet <ValheimEngine.Character.Biome>(); var numberOfRecipes = byteAccess.ReadInt32(); for (var i = 0; i < numberOfRecipes; i++) { character.Recipes.Add(byteAccess.ReadString()); } var numberOfStations = byteAccess.ReadInt32(); for (var i = 0; i < numberOfStations; i++) { character.Stations.Add(byteAccess.ReadString(), byteAccess.ReadInt32()); } var numberOfKnownMaterials = byteAccess.ReadInt32(); for (var i = 0; i < numberOfKnownMaterials; i++) { character.KnownMaterials.Add(byteAccess.ReadString()); } var numberOfShownTutorials = byteAccess.ReadInt32(); for (var i = 0; i < numberOfShownTutorials; i++) { character.ShownTutorials.Add(byteAccess.ReadString()); } var numberOfUniques = byteAccess.ReadInt32(); for (var i = 0; i < numberOfUniques; i++) { character.Uniques.Add(byteAccess.ReadString()); } var numberOfTrophies = byteAccess.ReadInt32(); for (var i = 0; i < numberOfTrophies; i++) { character.Trophies.Add(byteAccess.ReadString()); } var numberOfBiomes = byteAccess.ReadInt32(); for (var i = 0; i < numberOfBiomes; i++) { character.Biomes.Add((ValheimEngine.Character.Biome)byteAccess.ReadInt32()); } var numberOfTexts = byteAccess.ReadInt32(); for (var i = 0; i < numberOfTexts; i++) { character.Texts.Add(byteAccess.ReadString(), byteAccess.ReadString()); } // Read character appearance character.Beard = byteAccess.ReadString(); character.Hair = byteAccess.ReadString(); character.SkinColor = byteAccess.ReadVector3(); character.HairColor = byteAccess.ReadVector3(); character.Gender = byteAccess.ReadInt32(); // Read character state like food consumed, skills, etc. var numberOfConsumedFood = byteAccess.ReadInt32(); character.Foods = new List <ValheimEngine.Character.Food>(); for (var i = 0; i < numberOfConsumedFood; i++) { var food = new ValheimEngine.Character.Food { Name = byteAccess.ReadString(), HpLeft = byteAccess.ReadSingle(), StaminaLeft = byteAccess.ReadSingle() }; character.Foods.Add(food); } character.SkillsVersion = byteAccess.ReadInt32(); var numberOfSkills = byteAccess.ReadInt32(); character.Skills = new List <ValheimEngine.Character.Skill>(); for (var i = 0; i < numberOfSkills; i++) { var skill = new ValheimEngine.Character.Skill { SkillName = (ValheimEngine.Character.SkillName)byteAccess.ReadInt32(), Level = byteAccess.ReadSingle(), Something = byteAccess.ReadSingle() }; character.Skills.Add(skill); } return(character); }