Exemple #1
0
        public Toon(DBToon dbToon)
            : base(dbToon.Id)
        {
            this.D3EntityID = D3.OnlineService.EntityId.CreateBuilder().SetIdHigh((ulong)EntityIdHelper.HighIdType.ToonId).SetIdLow(this.PersistentID).Build();


            this.DBToon = dbToon;
            this.ExperienceNext = Player.LevelBorders[this.Level];

            var visualItems = new[]
            {                                
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Head
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Chest
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Feet
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Hands
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Weapon (1)
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Weapon (2)
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Shoulders
                D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Legs
            };


            // Load Visual Equipment
            var visualToSlotMapping = new Dictionary<int, int> { { 1, 0 }, { 2, 1 }, { 7, 2 }, { 5, 3 }, { 4, 4 }, { 3, 5 }, { 8, 6 }, { 9, 7 } };

            //add visual equipment from DB, only the visualizable equipment, not everything
            var visibleEquipment = DBSessions.AccountSession.Query<DBInventory>().Where(inv => inv.ItemId != -1 && inv.DBToon.Id == dbToon.Id && inv.EquipmentSlot != -1).ToList();

            foreach (var inv in visibleEquipment)
            {
                var slot = inv.EquipmentSlot;
                if (!visualToSlotMapping.ContainsKey(slot))
                    continue;
                // decode vislual slot from equipment slot
                slot = visualToSlotMapping[slot];
                var gbid = inv.ItemId;
                visualItems[slot] = D3.Hero.VisualItem.CreateBuilder()
                    .SetGbid(gbid)
                    .SetEffectLevel(0)
                    .Build();
            }

            this.HeroVisualEquipmentField.Value = D3.Hero.VisualEquipment.CreateBuilder().AddRangeVisualItem(visualItems).Build();




        }
Exemple #2
0
        private void SaveItemToDB(DBGameAccount dbGameAccount, DBToon dbToon, EquipmentSlotId slotId, Item item)
        {
            if (item == null)
                return;
            if (item.DBInventory == null)
                item.DBInventory = new DBInventory();

            item.DBInventory.DBGameAccount = dbGameAccount;
            item.DBInventory.DBToon = dbToon;
            item.DBInventory.LocationX = item.InventoryLocation.X;
            item.DBInventory.LocationY = item.InventoryLocation.Y;
            item.DBInventory.EquipmentSlot = (int)slotId;

            ItemGenerator.SaveToDB(item);
            item.DBInventory.DBItemInstance = item.DBItemInstance;
            DBSessions.AccountSession.SaveOrUpdate(item.DBInventory);
        }
Exemple #3
0
        public static Toon CreateNewToon(string name, int classId, ToonFlags flags, byte level, GameAccount gameAccount)
        {
            var dbGameAccount = DBSessions.AccountSession.Get<DBGameAccount>(gameAccount.PersistentID);
            var newDBToon = new DBToon
                                {
                                    Class = @Toon.GetClassByID(classId),
                                    Name = name,
                                    /*HashCode = GetUnusedHashCodeForToonName(name),*/
                                    Flags = flags,
                                    Level = level,
                                    DBGameAccount = DBSessions.AccountSession.Get<DBGameAccount>(gameAccount.PersistentID)
                                };

            dbGameAccount.DBToons.Add(newDBToon);
            DBSessions.AccountSession.SaveOrUpdate(dbGameAccount);
            DBSessions.AccountSession.Flush();


            return GetToonByLowID(newDBToon.Id);
        }
Exemple #4
0
        public Toon(DBToon dbToon)
            : base(dbToon.Id)
        {
            this.D3EntityID = D3.OnlineService.EntityId.CreateBuilder().SetIdHigh((ulong)EntityIdHelper.HighIdType.ToonId).SetIdLow(this.PersistentID).Build();

            this.DBToon = dbToon;
            this.HeroTable = HeroData.Heros.Find(item => item.Name == this.Class.ToString());
            this.ExperienceNext = Player.LevelBorders[this.Level];

            // FIXME: somehow d3.hero.visualitem builder doesn't want to build - need to fixed. /raist.

            //var visualItems = new[]
            //{   
            //    D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Head
            //    D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Chest
            //    D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Feet
            //    D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Hands
            //    D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Weapon (1)
            //    D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Weapon (2)
            //    D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Shoulders
            //    D3.Hero.VisualItem.CreateBuilder().SetEffectLevel(0).Build(), // Legs
            //};

            //// Load Visual Equipment
            //var visualToSlotMapping = new Dictionary<int, int> { { 1, 0 }, { 2, 1 }, { 7, 2 }, { 5, 3 }, { 4, 4 }, { 3, 5 }, { 8, 6 }, { 9, 7 } };

            ////add visual equipment from DB, only the visualizable equipment, not everything
            //var visibleEquipment = DBSessions.AccountSession.Query<DBInventory>().Where(inv => inv.DBItemInstance != null && inv.DBToon.Id == dbToon.Id && inv.EquipmentSlot != -1).ToList();

            //foreach (var inv in visibleEquipment)
            //{
            //    var slot = inv.EquipmentSlot;
            //    if (!visualToSlotMapping.ContainsKey(slot))
            //        continue;
            //    // decode vislual slot from equipment slot
            //    slot = visualToSlotMapping[slot];
            //    var gbid = inv.DBItemInstance.GbId;
            //    visualItems[slot] = D3.Hero.VisualItem.CreateBuilder()
            //        .SetGbid(gbid)
            //        .SetEffectLevel(0)
            //        .Build();
            //}

            //this.HeroVisualEquipmentField.Value = D3.Hero.VisualEquipment.CreateBuilder().AddRangeVisualItem(visualItems).Build();
        }
Exemple #5
0
 public static Toon GetToonByDBToon(DBToon dbToon)
 {
     if (!LoadedToons.Any(dbt => dbt.DBToon.Id == dbToon.Id))
         LoadedToons.Add(new Toon(dbToon));
     return LoadedToons.Single(dbt => dbt.DBToon.Id == dbToon.Id);
 }