//public DbPlayerCharacter GetCharacterByName(string name) { // if (false == string.IsNullOrEmpty(SelectedCharacterId)) { // var character = GetCharacter(SelectedCharacterId); // if(character) // } //} /// <summary> /// Create new character, select it and return new character object /// </summary> /// <param name="name">Name of character</param> /// <param name="level">Level of character</param> /// <param name="race">Race of character</param> /// <param name="workshop">Home workshop of character</param> /// <param name="model">Modules dictionary of character</param> /// <param name="exp">Initial exp of character</param> /// <returns></returns> public DbPlayerCharacter AddCharacter(string name, int race, int workshop, Dictionary <ShipModelSlotType, string> model, int icon) { if (this.Characters == null) { this.Characters = new List <DbPlayerCharacter>(); } DbPlayerCharacter character = new DbPlayerCharacter { CharacterId = Guid.NewGuid().ToString(), Name = name, Deleted = false, Race = race, Workshop = workshop, Exp = 0, WorldId = SelectCharacterApplication.Instance.GetStartLocation((Race)race, (Workshop)workshop), raceStatus = (int)RaceStatus.None, characterIcon = icon }; character.SetModel(ToHash(model)); this.Characters.Add(character); //select new created character to be selected character this.SelectedCharacterId = character.CharacterId; //return new character return(character); }
public Player(DbPlayerCharacter playerInfo) { Id = playerInfo.Id; Name = playerInfo.Name; Class = playerInfo.Class; EquippedItems = new EquippedItems(playerInfo.EquipedItems); CalculateStats(); }
public void SetCharacterId(string cID) { characterId = cID; if (!string.IsNullOrEmpty(id)) { var player = application.Players.GetExistingPlayer(id); mCachedCharacter = player.Data.GetCharacter(characterId); } }
private static async Task UpdatePlayerDb(DbServer server, LiveUpdate update) { var updateBuilder = Builders <DbPlayerCharacter> .Update; var filterBuilder = Builders <DbPlayerCharacter> .Filter; //Get the ID uint id = uint.Parse(update.id1); //Create updates List <UpdateDefinition <DbPlayerCharacter> > updates = new List <UpdateDefinition <DbPlayerCharacter> >(); updates.Add(updateBuilder.Set("tribe_id", update.tribeId)); if (update.x != null && update.y != null && update.z != null) { updates.Add(updateBuilder.Set("pos", new DbVector3 { x = update.x.Value, y = update.y.Value, z = update.z.Value })); } //Send update var result = await Program.conn.content_player_characters.UpdateOneAsync(filterBuilder.Eq("server_id", server.id)& filterBuilder.Eq("ark_id", id), updateBuilder.Combine(updates)); //Check if this entry even exists if (result.MatchedCount == 0 && update.x != null && update.y != null && update.z != null) { //We'll create a new object with this basic data DbPlayerCharacter c = new DbPlayerCharacter { server_id = server._id, tribe_id = update.tribeId, ark_id = id, pos = new DbVector3 { x = update.x.Value, y = update.y.Value, z = update.z.Value } }; //Insert this await Program.conn.content_player_characters.InsertOneAsync(c); } }
private void CreateTestData() { var testRogueDb = new DbPlayerCharacter { Class = new DbGameClass { Skills = new List <Skill> { new Skill { CastTime = 0, Cooldown = 1000, Cost = 20, Id = 1, Name = "Backstab", Effects = new List <Effect> { new DirectDamageEffect { BonusDamage = 2, CritChance = 10, Id = 1, MaxDamage = 0, MinDamage = 0, Type = EffectType.DirectDamage, TargetType = TargetType.Single } } }, new Skill { CastTime = 0, Cooldown = 1000, Cost = 20, Id = 3, Name = "Evade", Effects = new List <Effect> { new DirectThreatEffect() { Id = 3, MinThreat = -10, MaxThreat = -10, Type = EffectType.DirectThreat, TargetType = TargetType.Aoe } } } }, Id = 1, Name = "Rogue", MainStat = StatName.Agility, BaseStats = new BaseStats { Id = 1, BaseAgility = 20, BaseStrength = 10, BaseIntelligence = 10, BaseWisdom = 10, BaseStamina = 20 }, BaseResources = new BaseResources { Id = 1, BaseHealth = 100 } }, EquipedItems = new DbEquipedItems { MainHand = new DbWeapon { EquipSlotType = EquipSlot.MainHand, Id = 1, ItemRarity = ItemRarity.Magic, MaxDamage = 10, MinDamage = 5, Name = "Magic Dagger", SwingSpeed = 1, WeaponEquipType = WeaponEquipType.OneHanded, Stats = new ItemStats { Agility = 10, Id = 1 } } }, Id = 1, Inventory = new DbInventory { Id = 1, Gold = 100 }, Name = "Test Rogue" }; var testRoguePlayer = new Player(testRogueDb); var testRogue = new PlayerObject(testRoguePlayer, true) { CombatConfig = new CombatConfig(testRogueDb.Class.Skills) }; var tesstWarriorDb = new DbPlayerCharacter { Class = new DbGameClass { Skills = new List <Skill> { new Skill { CastTime = 0, Cooldown = 500, Cost = 20, Id = 2, Name = "Taunt", Effects = new List <Effect> { new DirectThreatEffect() { Id = 2, Type = EffectType.DirectThreat, MinThreat = 20, MaxThreat = 20, TargetType = TargetType.Single } } }, new Skill { CastTime = 0, Cooldown = 500, Cost = 20, Id = 3, Name = "Health", Effects = new List <Effect> { new BuffEffect() { Id = 2, Type = EffectType.Buff, Duration = 1000, Stats = new BuffStats { Health = 50 } } } } }, Id = 2, Name = "Warrior", MainStat = StatName.Agility, BaseStats = new BaseStats { Id = 2, BaseAgility = 10, BaseStrength = 20, BaseIntelligence = 10, BaseWisdom = 10, BaseStamina = 20 }, BaseResources = new BaseResources { Id = 2, BaseHealth = 200 } }, EquipedItems = new DbEquipedItems { MainHand = new DbWeapon { EquipSlotType = EquipSlot.MainHand, Id = 2, ItemRarity = ItemRarity.Magic, MaxDamage = 15, MinDamage = 9, Name = "Magic Sword", SwingSpeed = 2, WeaponEquipType = WeaponEquipType.OneHanded, Stats = new ItemStats { Strength = 10, Id = 2 } } }, Id = 2, Inventory = new DbInventory { Id = 2, Gold = 100 }, Name = "Test Warrior" }; var testWarriorPlayer = new Player(tesstWarriorDb); var testWarrior = new PlayerObject(testWarriorPlayer, true) { CombatConfig = new CombatConfig(testWarriorPlayer.Class.Skills) }; var playerList = new List <ICharacterObject> { testWarrior, testRogue }; var playerGroup = new CharacterGroup(playerList, testWarrior); var testOrcPawnDb = new DbMonster { Class = new DbGameClass { Skills = new List <Skill> { new Skill { CastTime = 0, Cooldown = 100000, Cost = 20, Id = 2, Name = "Taunt", Effects = new List <Effect> { new DirectThreatEffect() { Id = 2, Type = EffectType.DirectThreat, MinThreat = 20, MaxThreat = 20, TargetType = TargetType.Single } } } }, Id = 2, Name = "Warrior", MainStat = StatName.Agility, BaseStats = new BaseStats { Id = 2, BaseAgility = 10, BaseStrength = 20, BaseIntelligence = 10, BaseWisdom = 10, BaseStamina = 20 }, BaseResources = new BaseResources { Id = 2, BaseHealth = 200 } }, Id = 3, Inventory = new DbInventory { Id = 3, Gold = 100 }, Name = "Orc Pawn", LootList = new List <PossibleLoot> { new PossibleLoot() }, MonsterType = MonsterType.Common, MonsterBaseResources = new BaseResources { Id = 1, BaseHealth = 300 } }; var testOrcPawnMonster = new Monster(testOrcPawnDb); var testOrcPawn = new MonsterObject(testOrcPawnMonster, false) { CombatConfig = new CombatConfig(testOrcPawnMonster.Class.Skills) }; var monsterList = new List <ICharacterObject> { testOrcPawn }; var monsterGroup = new CharacterGroup(monsterList, testOrcPawn); _testCombat = new Combat(playerGroup, monsterGroup); _testCombat.StartCombat(); }