public void BuildOre() { var itemFactory = new ItemFactory(new IdResolutionContext(new[] { new ItemInfo(ItemCode.Veldnium) })); var ore = itemFactory.Build(ItemCode.Veldnium, 10); Assert.That(ore.ItemInfo.Code, Is.EqualTo(ItemCode.Veldnium)); Assert.That(ore.Quantity, Is.EqualTo(10)); }
/// <summary> /// Initialise a default Fortis setup with a context provider and verifies the initialisation. /// </summary> /// <param name="contextProvider"></param> public static void Initialise(IContextProvider contextProvider) { var templateMapProvider = new TemplateMapProvider(new ModelAssemblyProvider()); var spawnProvider = new SpawnProvider(templateMapProvider); var itemFactory = new ItemFactory(contextProvider, SpawnProvider); var itemSearchFactory = new ItemSearchFactory(templateMapProvider, new SearchResultsAdapter()); Initialise(spawnProvider, itemFactory, itemSearchFactory); }
//Only Needs a Default Constructor, This will be a Singleton public ItemFactoryManager() { itemFactory = new ItemFactory(); items = new Dictionary<string, Item>(); itemToInventory = new Dictionary<Item, string>(); inventoryToItems = new Dictionary<string, List<Item>>(); //playerInventories = new List<string>(); changed = false; inventoryToItems["trash"] = new List<Item>(); }
public void PackWeaponInBox() { var itemFactory = new ItemFactory(new IdResolutionContext(new[] { TestItems.Item(ItemCode.MissileLauncher), })); var weaponPacker = new WeaponPacker(new IdGenerator(), itemFactory); var itemPacker = new ItemPacker(new[] { weaponPacker }); var weapon = new Weapon() { WeaponInfo = new WeaponInfo { Code = ItemCode.MissileLauncher} }; Assert.That(itemPacker.CanPack(weapon), Is.True); var weaponInBox = itemPacker.Pack(weapon); Assert.That(weaponInBox, Is.Not.Null); Assert.That(weaponInBox.ItemInfo, Is.InstanceOf<WeaponInfo>()); }
public void BuildWeapon() { var itemFactory = new ItemFactory(new IdResolutionContext(new[] { TestItems.Item(ItemCode.MissileLauncher), TestItems.Weapon(ItemCode.MissileLauncher) })); var weaponPacker = new WeaponPacker(new IdGenerator(), itemFactory); var itemPacker = new ItemPacker(new[] { weaponPacker }); var weaponInBox = itemFactory.Build(ItemCode.MissileLauncher, 10); var weapon = itemPacker.Unpack<Weapon>(weaponInBox); Assert.That(weapon, Is.Not.Null); Assert.That(weapon.WeaponInfo.Code, Is.EqualTo(ItemCode.MissileLauncher)); Assert.That(weapon.Id, Is.Not.EqualTo(0)); Assert.That(weaponInBox.Quantity, Is.EqualTo(9)); }
public ISassStylesheet Parse(IParsingRequest request) { var tokens = Tokenize(request); var stream = CreateTokenStream(tokens, new ParsingRequestExecutionContext(request)); var itemFactory = new ItemFactory(new DefaultSassItemFactory()); var stylesheet = new Stylesheet(); if (stylesheet.Parse(itemFactory, request.Text, stream) && !request.IsCancelled) { stylesheet.Freeze(); foreach (var import in stylesheet.Children.OfType<SassImportDirective>()) import.ResolveImports(request.Text, request.Document, DocumentManager); foreach (var reference in ResolveReferences(stylesheet)) reference.ResolveImports(request.Text, request.Document, DocumentManager); return stylesheet; } return null; }
public Inventory(int capacity = 8) { m_items = new List<Item>(capacity); m_factory = new ItemFactory(); // Initialize item prototypes Item[] items = { // Generics new Item_Generic(), // Weapons new Weapon_Sword(), new Weapon_Melee(), new Weapon_Staff(), new Weapon_Bow(), // Armor new Armor_Chestplate(), }; m_factory.AddRange(items); }
public void IncorrectTemplateForContext() { using (ShimsContext.Create()) { var templateId = new Guid("{AF49395C-74BB-4ACF-8E01-F2B5BEECA8FE}"); var testItem = CreateTestItem(templateId: templateId); var contextProvider = new Mock<IContextProvider>(); contextProvider.Setup(c => c.PageContextItem).Returns(testItem); var itemFactory = new ItemFactory(contextProvider.Object); var wrappedItem = itemFactory.GetContextItem<IScTemplate>(); Assert.IsNull(wrappedItem); } }
public void Parse(HabboHotel.GameClients.GameClient Session, ClientPacket Packet) { int PageId = Packet.PopInt(); int ItemId = Packet.PopInt(); string Data = Packet.PopString(); string GiftUser = StringCharFilter.Escape(Packet.PopString()); string GiftMessage = StringCharFilter.Escape(Packet.PopString().Replace(Convert.ToChar(5), ' ')); int SpriteId = Packet.PopInt(); int Ribbon = Packet.PopInt(); int Colour = Packet.PopInt(); bool dnow = Packet.PopBoolean(); if (PlusEnvironment.GetSettingsManager().TryGetValue("room.item.gifts.enabled") != "1") { Session.SendNotification("The hotel managers have disabled gifting"); return; } /*if (PlusEnvironment.GetGame().GetCatalog().CatalogFlatOffers.ContainsKey(ItemId) && PageId < 0) * { * PageId = PlusEnvironment.GetGame().GetCatalog().CatalogFlatOffers[ItemId]; * * CatalogPage P = null; * if (!PlusEnvironment.GetGame().GetCatalog().Pages.TryGetValue(PageId, out P)) * PageId = 0; * }*/ CatalogPage Page = null; if (!PlusEnvironment.GetGame().GetCatalog().TryGetPage(PageId, out Page)) { return; } if (!Page.Enabled || !Page.Visible || Page.MinimumRank > Session.GetHabbo().Rank || (Page.MinimumVIP > Session.GetHabbo().VIPRank&& Session.GetHabbo().Rank == 1)) { return; } CatalogItem Item = null; if (!Page.Items.TryGetValue(ItemId, out Item)) { if (Page.ItemOffers.ContainsKey(ItemId)) { Item = (CatalogItem)Page.ItemOffers[ItemId]; if (Item == null) { return; } } else { return; } } if (!ItemUtility.CanGiftItem(Item)) { return; } ItemData PresentData = null; if (!PlusEnvironment.GetGame().GetItemManager().GetGift(SpriteId, out PresentData) || PresentData.InteractionType != InteractionType.GIFT) { return; } if (Session.GetHabbo().Credits < Item.CostCredits) { Session.SendPacket(new PresentDeliverErrorMessageComposer(true, false)); return; } if (Session.GetHabbo().Duckets < Item.CostPixels) { Session.SendPacket(new PresentDeliverErrorMessageComposer(false, true)); return; } Habbo Habbo = PlusEnvironment.GetHabboByUsername(GiftUser); if (Habbo == null) { Session.SendPacket(new GiftWrappingErrorComposer()); return; } if (!Habbo.AllowGifts) { Session.SendNotification("Oops, this user doesn't allow gifts to be sent to them!"); return; } if ((DateTime.Now - Session.GetHabbo().LastGiftPurchaseTime).TotalSeconds <= 15.0) { Session.SendNotification("You're purchasing gifts too fast! Please wait 15 seconds!"); Session.GetHabbo().GiftPurchasingWarnings += 1; if (Session.GetHabbo().GiftPurchasingWarnings >= 25) { Session.GetHabbo().SessionGiftBlocked = true; } return; } if (Session.GetHabbo().SessionGiftBlocked) { return; } string ED = GiftUser + Convert.ToChar(5) + GiftMessage + Convert.ToChar(5) + Session.GetHabbo().Id + Convert.ToChar(5) + Item.Data.Id + Convert.ToChar(5) + SpriteId + Convert.ToChar(5) + Ribbon + Convert.ToChar(5) + Colour; int NewItemId = 0; using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { //Insert the dummy item. dbClient.SetQuery("INSERT INTO `items` (`base_item`,`user_id`,`extra_data`) VALUES (@baseId, @habboId, @extra_data)"); dbClient.AddParameter("baseId", PresentData.Id); dbClient.AddParameter("habboId", Habbo.Id); dbClient.AddParameter("extra_data", ED); NewItemId = Convert.ToInt32(dbClient.InsertQuery()); string ItemExtraData = null; switch (Item.Data.InteractionType) { case InteractionType.NONE: ItemExtraData = ""; break; #region Pet handling case InteractionType.PET: try { string[] Bits = Data.Split('\n'); string PetName = Bits[0]; string Race = Bits[1]; string Color = Bits[2]; int.Parse(Race); // to trigger any possible errors if (PetUtility.CheckPetName(PetName)) { return; } if (Race.Length > 2) { return; } if (Color.Length != 6) { return; } PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_PetLover", 1); } catch { return; } break; #endregion case InteractionType.FLOOR: case InteractionType.WALLPAPER: case InteractionType.LANDSCAPE: Double Number = 0; try { if (string.IsNullOrEmpty(Data)) { Number = 0; } else { Number = Double.Parse(Data, PlusEnvironment.CultureInfo); } } catch { } ItemExtraData = Number.ToString().Replace(',', '.'); break; // maintain extra data // todo: validate case InteractionType.POSTIT: ItemExtraData = "FFFF33"; break; case InteractionType.MOODLIGHT: ItemExtraData = "1,1,1,#000000,255"; break; case InteractionType.TROPHY: ItemExtraData = Session.GetHabbo().Username + Convert.ToChar(9) + DateTime.Now.Day + "-" + DateTime.Now.Month + "-" + DateTime.Now.Year + Convert.ToChar(9) + Data; break; case InteractionType.MANNEQUIN: ItemExtraData = "m" + Convert.ToChar(5) + ".ch-210-1321.lg-285-92" + Convert.ToChar(5) + "Default Mannequin"; break; case InteractionType.BADGE_DISPLAY: if (!Session.GetHabbo().GetBadgeComponent().HasBadge(Data)) { Session.SendPacket(new BroadcastMessageAlertComposer("Oops, it appears that you do not own this badge.")); return; } ItemExtraData = Data + Convert.ToChar(9) + Session.GetHabbo().Username + Convert.ToChar(9) + DateTime.Now.Day + "-" + DateTime.Now.Month + "-" + DateTime.Now.Year; break; default: ItemExtraData = Data; break; } //Insert the present, forever. dbClient.SetQuery("INSERT INTO `user_presents` (`item_id`,`base_id`,`extra_data`) VALUES (@itemId, @baseId, @extra_data)"); dbClient.AddParameter("itemId", NewItemId); dbClient.AddParameter("baseId", Item.Data.Id); dbClient.AddParameter("extra_data", (string.IsNullOrEmpty(ItemExtraData) ? "" : ItemExtraData)); dbClient.RunQuery(); //Here we're clearing up a record, this is dumb, but okay. dbClient.SetQuery("DELETE FROM `items` WHERE `id` = @deleteId LIMIT 1"); dbClient.AddParameter("deleteId", NewItemId); dbClient.RunQuery(); } Item GiveItem = ItemFactory.CreateGiftItem(PresentData, Habbo, ED, ED, NewItemId, 0, 0); if (GiveItem != null) { GameClient Receiver = PlusEnvironment.GetGame().GetClientManager().GetClientByUserID(Habbo.Id); if (Receiver != null) { Receiver.GetHabbo().GetInventoryComponent().TryAddItem(GiveItem); Receiver.SendPacket(new FurniListNotificationComposer(GiveItem.Id, 1)); Receiver.SendPacket(new PurchaseOKComposer()); Receiver.SendPacket(new FurniListAddComposer(GiveItem)); Receiver.SendPacket(new FurniListUpdateComposer()); } if (Habbo.Id != Session.GetHabbo().Id&& !string.IsNullOrWhiteSpace(GiftMessage)) { PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Session, "ACH_GiftGiver", 1); if (Receiver != null) { PlusEnvironment.GetGame().GetAchievementManager().ProgressAchievement(Receiver, "ACH_GiftReceiver", 1); } PlusEnvironment.GetGame().GetQuestManager().ProgressUserQuest(Session, QuestType.GIFT_OTHERS); } } Session.SendPacket(new PurchaseOKComposer(Item, PresentData)); if (Item.CostCredits > 0) { Session.GetHabbo().Credits -= Item.CostCredits; Session.SendPacket(new CreditBalanceComposer(Session.GetHabbo().Credits)); } if (Item.CostPixels > 0) { Session.GetHabbo().Duckets -= Item.CostPixels; Session.SendPacket(new HabboActivityPointNotificationComposer(Session.GetHabbo().Duckets, Session.GetHabbo().Duckets)); } Session.GetHabbo().LastGiftPurchaseTime = DateTime.Now; }
public void TestWeaponFactorySpecialNameLevel1() { BaseWeapon BW = ItemFactory.CreateWeapon(1, true, true); Assert.AreEqual("Elderwood Sword", BW.Name); }
public void TestWeaponFactory() { BaseWeapon BW = ItemFactory.CreateWeapon(1); Assert.IsInstanceOfType(BW, typeof(BaseWeapon)); }
public override Item[] GetDrops(Item tool) { // One per layer, plus one. return(new[] { ItemFactory.GetItem(332, 0, (byte)(Metadata + 2)) }); }
public void CorrectInheritedTemplateForContext() { using (ShimsContext.Create()) { var testItem = CreateTestItem(); Template templateItem = new ShimTemplate() { DescendsFromID = id => true, }; ShimTemplateManager.GetTemplateItem = id => { return templateItem; }; var contextProvider = new Mock<IContextProvider>(); contextProvider.Setup(c => c.PageContextItem).Returns(testItem); var itemFactory = new ItemFactory(contextProvider.Object); var wrappedItem = itemFactory.GetContextItem<IScBaseTemplate>(); Assert.IsNotNull(wrappedItem); } }
public static Inventory AddItemFromFactory(this Inventory inventory, int itemId) => inventory.AddItem(ItemFactory.CreateItem(itemId));
public void setFactory(ItemFactory.ItemFactory factory) { this.Factory = factory; Items = Factory.GetItems(); }
public void SetUp() { factory = ItemFactory.Instance; }
public void Awake() { instance = this; enabled = false; }
/// <summary> /// LoadContent will be called once per game and is the place to load /// all of your content. /// </summary> protected override void LoadContent() { // Create a new SpriteBatch, which can be used to draw textures. SpriteBatch = new SpriteBatch(GraphicsDevice); world = new World(this); ItemFactory itemFactory = new ItemFactory(world, @"Items"); EnemyFactory factory = new EnemyFactory(world, @"Enemy"); world.EnemyFactory = factory; Map dungeonOne = MapLoader.Load("Content/Maps/DungeonOne_top.txt", "Content/Maps/DungeonOne_bottom.txt", "Content/Maps/DungeonOne_enemy.txt", world); world.CurrentDungeon = dungeonOne; Item item = itemFactory.Create("Super Awesome Potion"); item.Position = new Vector2(70, 70); world.item = item; Animation animation = new Animation(1, 32, 32, 0, 0); Animation animation2 = new Animation(1, 256, 256, 0, 0); AnimatedSprite sprite = new AnimatedSprite(Content.Load<Texture2D>(@"Items\Weapons\Fireball"), new Dictionary<AnimationKey, Animation> { { AnimationKey.Right, animation } }); AnimatedSprite light = new AnimatedSprite(Content.Load<Texture2D>(@"Enemy\LightBugAttack"), new Dictionary<AnimationKey, Animation> { { AnimationKey.Right, animation2 } }); world.Player.Inventory.TempaQuips.Add(new Sword(Content.Load<Texture2D>(@"Gui\SwordIcon"), "Sword")); world.Player.Inventory.TempaQuips.Add((Gun)itemFactory.Create("Bobs Gun")); world.Player.Inventory.SelectRelativeTempaQuip(world.Player, 0); world.Player.Inventory.TempaQuips.Add(new Zapper(Content.Load<Texture2D>(@"Gui\GogglesIcon"), "BobsZapper", light)); world.Player.Inventory.TempaQuips.Add(new SomeConeWeapon(Content.Load<Texture2D>(@"Gui\GravityBootsIcon"), "BobsCone", sprite.Clone())); world.Player.Inventory.TempaQuips.Add((EBall)itemFactory.Create("E-Ball Fire")); world.Player.Inventory.TempaQuips.Add((EBall)itemFactory.Create("E-Ball Ice")); world.Player.Inventory.TempaQuips.Add((EBall)itemFactory.Create("E-Ball Lightning")); }
public void CorrectDirectTemplatesForRenderingContext() { using (ShimsContext.Create()) { // Rendering Item var scRenderingTemplateType = typeof(IScRenderingParametersTemplate); var renderingTemplateAttribute = (TemplateMappingAttribute)scRenderingTemplateType.GetCustomAttributes(typeof(TemplateMappingAttribute), false).First(); var renderingTemplateId = renderingTemplateAttribute.Id; Field parametersTemplateField = new ShimField() { NameGet = () => "Parameters Template", ValueGet = () => renderingTemplateId.ToString(), }; var testRenderingItem = CreateTestItem(fields: CreateTestFields(new List<Field>() { parametersTemplateField })); // Context Item var scBaseTemplateType = typeof(IScTemplate); var templateAttribute = (TemplateMappingAttribute)scBaseTemplateType.GetCustomAttributes(typeof(TemplateMappingAttribute), false).First(); var templateId = templateAttribute.Id; var testItem = CreateTestItem(templateId: templateId); Template templateItem = new ShimTemplate() { DescendsFromID = id => true, }; ShimTemplateManager.GetTemplateItem = id => { return templateItem; }; var contextProvider = new Mock<IContextProvider>(); contextProvider.Setup(c => c.PageContextItem).Returns(testItem); contextProvider.Setup(c => c.RenderingContextItem).Returns(testItem); contextProvider.Setup(c => c.RenderingItem).Returns(testRenderingItem); contextProvider.Setup(c => c.RenderingParameters).Returns(new Dictionary<string, string>()); var itemFactory = new ItemFactory(contextProvider.Object); var renderingModel = itemFactory.GetRenderingContextItems<IScTemplate, IScTemplate, IScRenderingParametersTemplate>(); Assert.IsNotNull(renderingModel.PageItem); Assert.IsNotNull(renderingModel.RenderingItem); Assert.IsNotNull(renderingModel.RenderingParametersItem); } }
private void SpawnRods(Vector3 pos) { ItemFactory.SpawnRods(1, pos.RoundToInt().To2Int()); }
public void SetUp() { _itemFactory = new ItemFactory(); _receipt = new Receipt(); _checkout = new CheckOut(_receipt); }
public override string ToString() => $"{Quantity}x{ItemFactory.GetItemNameById(ItemId)}";
public void CreateShieldTest(string name) { Shield shield = (Shield)ItemFactory.CreateItem(name); Assert.That(shield.title, Is.EqualTo(name)); }
public override Item[] GetDrops() { return(new[] { ItemFactory.GetItem(397, Metadata, 1) }); }
public void UnmappedTemplateForContext() { using (ShimsContext.Create()) { var testItem = CreateTestItem(); var contextProvider = new Mock<IContextProvider>(); contextProvider.Setup(c => c.PageContextItem).Returns(testItem); var itemFactory = new ItemFactory(contextProvider.Object); var wrappedItem = itemFactory.GetContextItem<IScUnmappedTemplate>(); } }
public void CreateWeaponTest(string name) { Weapon weapon = (Weapon)ItemFactory.CreateItem(name); Assert.That(weapon.title, Is.EqualTo(name)); }
public SimpleDependencyFactory(ItemFactory item_factory) { this.item_factory = item_factory; }
public void CreateArmourTest(string name) { Armour armour = (Armour)ItemFactory.CreateItem(name); Assert.That(armour.title, Is.EqualTo(name)); }
protected virtual void Drag(int i, Item item) { ItemFactory factory = new ItemFactory(); draggingItem = true; prevIndex = i; draggedItem = item; //delete the item by making it an empty item current [i] = factory.CreateItem (current [i].Type); }
public override void SpawnToPlayers(Player[] players) { { Player fake = new Player(null, null) { ClientUuid = Uuid, EntityId = EntityId, NameTag = NameTag, Skin = Skin }; McpePlayerList playerList = McpePlayerList.CreateObject(); playerList.records = new PlayerAddRecords { fake }; Level.RelayBroadcast(players, Level.CreateMcpeBatch(playerList.Encode())); playerList.records = null; playerList.PutPool(); } { McpeAddPlayer message = McpeAddPlayer.CreateObject(); message.uuid = Uuid; message.username = NameTag; message.entityIdSelf = EntityId; message.runtimeEntityId = EntityId; message.x = KnownPosition.X; message.y = KnownPosition.Y; message.z = KnownPosition.Z; message.yaw = KnownPosition.Yaw; message.headYaw = KnownPosition.HeadYaw; message.pitch = KnownPosition.Pitch; message.metadata = GetMetadata(); Level.RelayBroadcast(players, message); } { McpeMobEquipment message = McpeMobEquipment.CreateObject(); message.runtimeEntityId = EntityId; message.item = ItemInHand; message.slot = 0; Level.RelayBroadcast(players, message); } { McpeMobArmorEquipment armorEquipment = McpeMobArmorEquipment.CreateObject(); armorEquipment.runtimeEntityId = EntityId; armorEquipment.helmet = ItemFactory.GetItem(Helmet); armorEquipment.chestplate = ItemFactory.GetItem(Chest); armorEquipment.leggings = ItemFactory.GetItem(Leggings); armorEquipment.boots = ItemFactory.GetItem(Boots); Level.RelayBroadcast(players, armorEquipment); } //{ // Player fake = new Player(null, null) // { // ClientUuid = Uuid, // EntityId = EntityId, // NameTag = NameTag, // Skin = Skin // }; // McpePlayerList playerList = McpePlayerList.CreateObject(); // playerList.records = new PlayerRemoveRecords {fake}; // Level.RelayBroadcast(players, Level.CreateMcpeBatch(playerList.Encode())); // playerList.records = null; // playerList.PutPool(); //} { McpeSetEntityData setEntityData = McpeSetEntityData.CreateObject(); setEntityData.runtimeEntityId = EntityId; setEntityData.metadata = GetMetadata(); Level?.RelayBroadcast(players, setEntityData); } }
public void Parse(GameClient Session, ClientPacket Packet) { int Data1 = Packet.PopInt(); // ELEMENTO 1 int Data2 = Packet.PopInt(); // ELEMENTO 2 int Data3 = Packet.PopInt(); // ELEMENTO 3 int Data4 = Packet.PopInt(); // SELECTOR var RewardName = ""; var NuxGift = RavenEnvironment.GetGame().GetNuxUserGiftsListManager().NuxUserGiftsList; switch (Data4) { case 0: switch (NuxGift.Type[0]) { case "diamonds": string[] Posibility = NuxGift.Reward[0].Split(','); int Posibility1 = int.Parse(Posibility[0]); int Posibility2 = int.Parse(Posibility[1]); int RewardDiamonds = RandomNumber.GenerateRandom(Posibility1, Posibility2); Session.GetHabbo().Diamonds += RewardDiamonds; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Diamonds, RewardDiamonds, 5)); break; case "honor": string[] Posibilitya = NuxGift.Reward[0].Split(','); int Posibility1a = int.Parse(Posibilitya[0]); int Posibility2a = int.Parse(Posibilitya[1]); int RewardHonor = RandomNumber.GenerateRandom(Posibility1a, Posibility2a); Session.GetHabbo().GOTWPoints += RewardHonor; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().GOTWPoints, RewardHonor, 103)); break; case "item": int RewardItem = RandomNumber.GenerateRandom(1, 10); string[] Furnis = NuxGift.Reward[0].Split(','); string[] Present = Furnis[0].Split(':'); string[] Present1 = Furnis[1].Split(':'); string[] Present2 = Furnis[2].Split(':'); string[] Present3 = Furnis[3].Split(':'); string[] Present4 = Furnis[4].Split(':'); string[] Present5 = Furnis[5].Split(':'); string[] Present6 = Furnis[6].Split(':'); string[] Present7 = Furnis[7].Split(':'); string[] Present8 = Furnis[8].Split(':'); string[] Present9 = Furnis[9].Split(':'); var RewardItemId = 0; switch (RewardItem) { case 1: RewardItemId = int.Parse(Present[0]); // VIP - club_sofa RewardName = Present[1]; break; case 2: RewardItemId = int.Parse(Present1[0]); // VIP - club_sofa RewardName = Present1[1]; break; case 3: RewardItemId = int.Parse(Present2[0]); // VIP - club_sofa RewardName = Present2[1]; break; case 4: RewardItemId = int.Parse(Present3[0]); // VIP - club_sofa RewardName = Present3[1]; break; case 5: RewardItemId = int.Parse(Present4[0]); // VIP - club_sofa RewardName = Present4[1]; break; case 6: RewardItemId = int.Parse(Present5[0]); // VIP - club_sofa RewardName = Present5[1]; break; case 7: RewardItemId = int.Parse(Present6[0]); // VIP - club_sofa RewardName = Present6[1]; break; case 8: RewardItemId = int.Parse(Present7[0]); // VIP - club_sofa RewardName = Present7[1]; break; case 9: RewardItemId = int.Parse(Present8[0]); // VIP - club_sofa RewardName = Present8[1]; break; case 10: RewardItemId = int.Parse(Present9[0]); // VIP - club_sofa RewardName = Present9[1]; break; } ItemData Item = null; if (!RavenEnvironment.GetGame().GetItemManager().GetItem(RewardItemId, out Item)) { return; } Item GiveItem = ItemFactory.CreateSingleItemNullable(Item, Session.GetHabbo(), "", ""); if (GiveItem != null) { Session.GetHabbo().GetInventoryComponent().TryAddItem(GiveItem); Session.SendMessage(RoomNotificationComposer.SendBubble("image2", "Acabas de recibir un " + RewardName + ".\n\n¡Corre, " + Session.GetHabbo().Username + ", revisa tu inventario, hay algo nuevo al parecer!", "inventory/open/furni")); Session.SendMessage(new FurniListNotificationComposer(GiveItem.Id, 1)); Session.SendMessage(new FurniListUpdateComposer()); } Session.GetHabbo().GetInventoryComponent().UpdateItems(false); break; } break; case 1: switch (NuxGift.Type[1]) { case "diamonds": string[] Posibility = NuxGift.Reward[1].Split(','); int Posibility1 = int.Parse(Posibility[0]); int Posibility2 = int.Parse(Posibility[1]); int RewardDiamonds = RandomNumber.GenerateRandom(Posibility1, Posibility2); Session.GetHabbo().Diamonds += RewardDiamonds; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Diamonds, RewardDiamonds, 5)); break; case "honor": string[] Posibilitya = NuxGift.Reward[1].Split(','); int Posibility1a = int.Parse(Posibilitya[0]); int Posibility2a = int.Parse(Posibilitya[1]); int RewardHonor = RandomNumber.GenerateRandom(Posibility1a, Posibility2a); Session.GetHabbo().GOTWPoints += RewardHonor; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().GOTWPoints, RewardHonor, 103)); break; case "item": int RewardItem = RandomNumber.GenerateRandom(1, 10); string[] Furnis = NuxGift.Reward[1].Split(','); string[] Present = Furnis[0].Split(':'); string[] Present1 = Furnis[1].Split(':'); string[] Present2 = Furnis[2].Split(':'); string[] Present3 = Furnis[3].Split(':'); string[] Present4 = Furnis[4].Split(':'); string[] Present5 = Furnis[5].Split(':'); string[] Present6 = Furnis[6].Split(':'); string[] Present7 = Furnis[7].Split(':'); string[] Present8 = Furnis[8].Split(':'); string[] Present9 = Furnis[9].Split(':'); var RewardItemId = 0; switch (RewardItem) { case 1: RewardItemId = int.Parse(Present[0]); // VIP - club_sofa RewardName = Present[1]; break; case 2: RewardItemId = int.Parse(Present1[0]); // VIP - club_sofa RewardName = Present1[1]; break; case 3: RewardItemId = int.Parse(Present2[0]); // VIP - club_sofa RewardName = Present2[1]; break; case 4: RewardItemId = int.Parse(Present3[0]); // VIP - club_sofa RewardName = Present3[1]; break; case 5: RewardItemId = int.Parse(Present4[0]); // VIP - club_sofa RewardName = Present4[1]; break; case 6: RewardItemId = int.Parse(Present5[0]); // VIP - club_sofa RewardName = Present5[1]; break; case 7: RewardItemId = int.Parse(Present6[0]); // VIP - club_sofa RewardName = Present6[1]; break; case 8: RewardItemId = int.Parse(Present7[0]); // VIP - club_sofa RewardName = Present7[1]; break; case 9: RewardItemId = int.Parse(Present8[0]); // VIP - club_sofa RewardName = Present8[1]; break; case 10: RewardItemId = int.Parse(Present9[0]); // VIP - club_sofa RewardName = Present9[1]; break; } ItemData Item = null; if (!RavenEnvironment.GetGame().GetItemManager().GetItem(RewardItemId, out Item)) { return; } Item GiveItem = ItemFactory.CreateSingleItemNullable(Item, Session.GetHabbo(), "", ""); if (GiveItem != null) { Session.GetHabbo().GetInventoryComponent().TryAddItem(GiveItem); Session.SendMessage(RoomNotificationComposer.SendBubble("image2", "Acabas de recibir un " + RewardName + ".\n\n¡Corre, " + Session.GetHabbo().Username + ", revisa tu inventario, hay algo nuevo al parecer!", "inventory/open/furni")); Session.SendMessage(new FurniListNotificationComposer(GiveItem.Id, 1)); Session.SendMessage(new FurniListUpdateComposer()); } Session.GetHabbo().GetInventoryComponent().UpdateItems(false); break; } break; case 2: switch (NuxGift.Type[2]) { case "diamonds": string[] Posibility = NuxGift.Reward[2].Split(','); int Posibility1 = int.Parse(Posibility[0]); int Posibility2 = int.Parse(Posibility[1]); int RewardDiamonds = RandomNumber.GenerateRandom(Posibility1, Posibility2); Session.GetHabbo().Diamonds += RewardDiamonds; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().Diamonds, RewardDiamonds, 5)); break; case "honor": string[] Posibilitya = NuxGift.Reward[2].Split(','); int Posibility1a = int.Parse(Posibilitya[0]); int Posibility2a = int.Parse(Posibilitya[1]); int RewardHonor = RandomNumber.GenerateRandom(Posibility1a, Posibility2a); Session.GetHabbo().GOTWPoints += RewardHonor; Session.SendMessage(new HabboActivityPointNotificationComposer(Session.GetHabbo().GOTWPoints, RewardHonor, 103)); break; case "item": int RewardItem = RandomNumber.GenerateRandom(1, 10); string[] Furnis = NuxGift.Reward[2].Split(','); string[] Present = Furnis[0].Split(':'); string[] Present1 = Furnis[1].Split(':'); string[] Present2 = Furnis[2].Split(':'); string[] Present3 = Furnis[3].Split(':'); string[] Present4 = Furnis[4].Split(':'); string[] Present5 = Furnis[5].Split(':'); string[] Present6 = Furnis[6].Split(':'); string[] Present7 = Furnis[7].Split(':'); string[] Present8 = Furnis[8].Split(':'); string[] Present9 = Furnis[9].Split(':'); var RewardItemId = 0; switch (RewardItem) { case 1: RewardItemId = int.Parse(Present[0]); // VIP - club_sofa RewardName = Present[1]; break; case 2: RewardItemId = int.Parse(Present1[0]); // VIP - club_sofa RewardName = Present1[1]; break; case 3: RewardItemId = int.Parse(Present2[0]); // VIP - club_sofa RewardName = Present2[1]; break; case 4: RewardItemId = int.Parse(Present3[0]); // VIP - club_sofa RewardName = Present3[1]; break; case 5: RewardItemId = int.Parse(Present4[0]); // VIP - club_sofa RewardName = Present4[1]; break; case 6: RewardItemId = int.Parse(Present5[0]); // VIP - club_sofa RewardName = Present5[1]; break; case 7: RewardItemId = int.Parse(Present6[0]); // VIP - club_sofa RewardName = Present6[1]; break; case 8: RewardItemId = int.Parse(Present7[0]); // VIP - club_sofa RewardName = Present7[1]; break; case 9: RewardItemId = int.Parse(Present8[0]); // VIP - club_sofa RewardName = Present8[1]; break; case 10: RewardItemId = int.Parse(Present9[0]); // VIP - club_sofa RewardName = Present9[1]; break; } ItemData Item = null; if (!RavenEnvironment.GetGame().GetItemManager().GetItem(RewardItemId, out Item)) { return; } Item GiveItem = ItemFactory.CreateSingleItemNullable(Item, Session.GetHabbo(), "", ""); if (GiveItem != null) { Session.GetHabbo().GetInventoryComponent().TryAddItem(GiveItem); Session.SendMessage(RoomNotificationComposer.SendBubble("image2", "Acabas de recibir un " + RewardName + ".\n\n¡Corre, " + Session.GetHabbo().Username + ", revisa tu inventario, hay algo nuevo al parecer!", "inventory/open/furni")); Session.SendMessage(new FurniListNotificationComposer(GiveItem.Id, 1)); Session.SendMessage(new FurniListUpdateComposer()); } Session.GetHabbo().GetInventoryComponent().UpdateItems(false); break; } break; } }
public void TestWeaponFactoryNameLevel1() { BaseWeapon BW = ItemFactory.CreateWeapon(1); Assert.AreEqual("Wood Sword", BW.Name); }
public void Execute(bool isNew, bool avatarBackward, bool enemyBackward) { var previousWeeklyState = _initialState.GetWeeklyArenaState(0); var previousAvatar1State = _initialState.GetAvatarState(_avatar1Address); previousAvatar1State.level = 10; var prevScore = previousWeeklyState[_avatar1Address].Score; if (isNew) { previousWeeklyState.Remove(_avatar1Address); } var previousState = _initialState.SetState( _avatar1Address, previousAvatar1State.Serialize()); var itemIds = _tableSheets.WeeklyArenaRewardSheet.Values .Select(r => r.Reward.ItemId) .ToList(); Assert.All(itemIds, id => Assert.False(previousAvatar1State.inventory.HasItem(id))); var row = _tableSheets.CostumeStatSheet.Values.First(r => r.StatType == StatType.ATK); var costume = (Costume)ItemFactory.CreateItem( _tableSheets.ItemSheet[row.CostumeId], new TestRandom()); costume.equipped = true; previousAvatar1State.inventory.AddItem(costume); var row2 = _tableSheets.CostumeStatSheet.Values.First(r => r.StatType == StatType.DEF); var enemyCostume = (Costume)ItemFactory.CreateItem( _tableSheets.ItemSheet[row2.CostumeId], new TestRandom()); enemyCostume.equipped = true; var enemyAvatarState = _initialState.GetAvatarState(_avatar2Address); enemyAvatarState.inventory.AddItem(enemyCostume); if (avatarBackward) { previousState = previousState.SetState(_avatar1Address, previousAvatar1State.Serialize()); } else { previousState = previousState .SetState( _avatar1Address.Derive(LegacyInventoryKey), previousAvatar1State.inventory.Serialize()) .SetState( _avatar1Address.Derive(LegacyWorldInformationKey), previousAvatar1State.worldInformation.Serialize()) .SetState( _avatar1Address.Derive(LegacyQuestListKey), previousAvatar1State.questList.Serialize()) .SetState(_avatar1Address, previousAvatar1State.SerializeV2()); } if (enemyBackward) { previousState = previousState.SetState(_avatar2Address, enemyAvatarState.Serialize()); } else { previousState = previousState .SetState( _avatar2Address.Derive(LegacyInventoryKey), enemyAvatarState.inventory.Serialize()) .SetState( _avatar2Address.Derive(LegacyWorldInformationKey), enemyAvatarState.worldInformation.Serialize()) .SetState( _avatar2Address.Derive(LegacyQuestListKey), enemyAvatarState.questList.Serialize()) .SetState(_avatar2Address, enemyAvatarState.SerializeV2()); } var action = new RankingBattle { avatarAddress = _avatar1Address, enemyAddress = _avatar2Address, weeklyArenaAddress = _weeklyArenaAddress, costumeIds = new List <Guid> { costume.ItemId }, equipmentIds = new List <Guid>(), consumableIds = new List <Guid>(), }; Assert.Null(action.Result); var nextState = action.Execute(new ActionContext() { PreviousStates = previousState, Signer = _agent1Address, Random = new TestRandom(), Rehearsal = false, }); var nextAvatar1State = nextState.GetAvatarStateV2(_avatar1Address); var nextWeeklyState = nextState.GetWeeklyArenaState(0); Assert.Contains(nextAvatar1State.inventory.Materials, i => itemIds.Contains(i.Id)); Assert.NotNull(action.Result); Assert.NotNull(action.ArenaInfo); Assert.NotNull(action.EnemyArenaInfo); Assert.NotNull(action.EnemyAvatarState); Assert.Contains(typeof(GetReward), action.Result.Select(e => e.GetType())); Assert.Equal(BattleLog.Result.Win, action.Result.result); Assert.True(nextWeeklyState[_avatar1Address].Score > prevScore); // Check simulation result equal. var simulator = new RankingSimulator( new TestRandom(), previousAvatar1State, action.EnemyAvatarState, action.consumableIds, _tableSheets.GetRankingSimulatorSheets(), RankingBattle.StageId, action.ArenaInfo, action.EnemyArenaInfo, _tableSheets.CostumeStatSheet); simulator.Simulate(); BattleLog log = simulator.Log; BattleLog result = action.Result; Assert.Equal(result.score, log.score); Assert.Equal(result.Count, log.Count); Assert.Equal(result.result, log.result); }
public void AttackCurrentMonster() { if (CurrentWeapon == null) { RaiseMessage("You must select a weapon, to attack."); return; } // Determine damage to monster int damageToMonster = RandomNumberGenerator.NumberBetween(CurrentWeapon.MinimumDamage, CurrentWeapon.MaximumDamage); if (damageToMonster == 0) { RaiseMessage($"You missed the {CurrentMonster.Name}."); } else { CurrentMonster.HitPoints -= damageToMonster; RaiseMessage($"You hit the {CurrentMonster.Name} for {damageToMonster} points."); } // If monster if killed, collect rewards and loot if (CurrentMonster.HitPoints <= 0) { RaiseMessage(""); RaiseMessage($"You defeated the {CurrentMonster.Name}!"); CurrentPlayer.ExperiencePoints += CurrentMonster.RewardExperiencePoints; RaiseMessage($"You receive {CurrentMonster.RewardExperiencePoints} experience points."); CurrentPlayer.Gold += CurrentMonster.RewardGold; RaiseMessage($"You receive {CurrentMonster.RewardGold} gold."); foreach (ItemQuantity itemQuantity in CurrentMonster.Inventory) { GameItems item = ItemFactory.CreateGameItem(itemQuantity.ItemID); CurrentPlayer.AddItemToInventory(item); RaiseMessage($"You receive {itemQuantity.Quantity} {item.Name}."); } // Get another monster to fight GetMonsterAtLocation(); } else { // If monster is still alive, let the monster attack int damageToPlayer = RandomNumberGenerator.NumberBetween(CurrentMonster.MinimumDamage, CurrentMonster.MaximumDamage); if (damageToPlayer == 0) { RaiseMessage("The monster attacks, but misses you."); } else { CurrentPlayer.HitPoints -= damageToPlayer; RaiseMessage($"The {CurrentMonster.Name} hit you for {damageToPlayer} points."); } // If player is killed, move them back to their home. if (CurrentPlayer.HitPoints <= 0) { RaiseMessage(""); RaiseMessage($"The {CurrentMonster.Name} killed you."); CurrentLocation = CurrentWorld.LocationAt(0, -1); // Player's home CurrentPlayer.HitPoints = CurrentPlayer.Level * 10; // Completely heal the player } } }
public override bool Parse(ItemFactory itemFactory, ITextProvider text, TokenStream tokens) { if (tokens.CurrentToken.TokenType != CssTokenType.OpenSquareBracket) { return(false); } // Collect each piece of "[ name = value ]", any of which could be missing after the '[' OpenBracket = Children.AddCurrentAndAdvance(tokens, CssClassifierContextType.SquareBracket); if (ItemName.IsAtItemName(tokens)) { AttributeName = itemFactory.CreateSpecific <ItemName>(this); AttributeName.Parse(itemFactory, text, tokens); AttributeName.Context = CssClassifierContextCache.FromTypeEnum(CssClassifierContextType.ElementAttribute); Children.Add(AttributeName); } else { OpenBracket.AddParseError(ParseErrorType.AttributeSelectorElementMissing, ParseErrorLocation.AfterItem); } switch (tokens.CurrentToken.TokenType) { case CssTokenType.BeginsWith: // ^= case CssTokenType.EndsWith: // $= case CssTokenType.OneOf: // ~= case CssTokenType.ListBeginsWith: // |= case CssTokenType.ContainsString: // *= case CssTokenType.Equals: // = Operation = Children.AddCurrentAndAdvance(tokens, CssClassifierContextType.SelectorOperator); break; } if (tokens.CurrentToken.TokenType == CssTokenType.Identifier) { AttributeValue = Children.AddCurrentAndAdvance(tokens, CssClassifierContextType.ElementAttributeValue); } else if (tokens.CurrentToken.IsString()) { AttributeValue = Children.AddCurrentAndAdvance(tokens, CssClassifierContextType.ElementAttributeValue); } if (AttributeValue != null && Operation == null) { AttributeValue.AddParseError(ParseErrorType.AttributeSelectorOperationMissing, ParseErrorLocation.BeforeItem); } else if (AttributeValue == null && Operation != null) { Operation.AddParseError(ParseErrorType.AttributeSelectorValueMissing, ParseErrorLocation.AfterItem); } if (AttributeValue != null && tokens.CurrentToken.TokenType == CssTokenType.Identifier) { OperationModifier = Children.AddCurrentAndAdvance(tokens, CssClassifierContextType.SelectorOperator); if (OperationModifier.Length != 1 || text[OperationModifier.Start] != 'i') { OperationModifier.AddParseError(ParseErrorType.UnexpectedToken, ParseErrorLocation.WholeItem); } } if (tokens.CurrentToken.TokenType == CssTokenType.CloseSquareBracket) { CloseBracket = Children.AddCurrentAndAdvance(tokens, CssClassifierContextType.SquareBracket); } else { AddParseError(ParseErrorType.AttributeSelectorCloseBracketMissing, ParseErrorLocation.AfterItem); } return(Children.Count > 0); }
public void Execute(int avatarLevel, int worldId, int stageId, int playCount, bool backward, bool isLock, bool isClearedBefore) { Assert.True(_tableSheets.WorldSheet.TryGetValue(worldId, out var worldRow)); Assert.True(stageId >= worldRow.StageBegin); Assert.True(stageId <= worldRow.StageEnd); Assert.True(_tableSheets.StageSheet.TryGetValue(stageId, out _)); var previousAvatarState = _initialState.GetAvatarStateV2(_avatarAddress); previousAvatarState.level = avatarLevel; var clearedStageId = _tableSheets.StageSheet.First?.Id ?? 0; clearedStageId = isClearedBefore ? Math.Max(clearedStageId, stageId - 1) : stageId - 1; clearedStageId = playCount > 1 ? clearedStageId + 1 : clearedStageId; previousAvatarState.worldInformation = new WorldInformation( 0, _tableSheets.WorldSheet, clearedStageId); List <Guid> costumes = new List <Guid>(); IRandom random = new TestRandom(); if (avatarLevel >= GameConfig.RequireCharacterLevel.CharacterFullCostumeSlot) { var costumeId = _tableSheets .CostumeItemSheet .Values .First(r => r.ItemSubType == ItemSubType.FullCostume) .Id; var costume = (Costume)ItemFactory.CreateItem( _tableSheets.ItemSheet[costumeId], random); previousAvatarState.inventory.AddItem(costume); costumes.Add(costume.ItemId); } List <Guid> equipments = new List <Guid>(); if (avatarLevel >= GameConfig.RequireCharacterLevel.CharacterEquipmentSlotWeapon) { var weaponId = _tableSheets .EquipmentItemSheet .Values .Where(r => r.ItemSubType == ItemSubType.Weapon) .OrderBy(r => r.Stat.ValueAsInt) .Last() .Id; var weapon = ItemFactory.CreateItem( _tableSheets.EquipmentItemSheet[weaponId], random) as Equipment; equipments.Add(weapon.ItemId); OrderLock?orderLock = null; if (isLock) { orderLock = new OrderLock(Guid.NewGuid()); } previousAvatarState.inventory.AddItem(weapon, iLock: orderLock); } if (avatarLevel >= GameConfig.RequireCharacterLevel.CharacterEquipmentSlotArmor) { var armorId = _tableSheets .EquipmentItemSheet .Values .Where(r => r.ItemSubType == ItemSubType.Armor) .OrderBy(r => r.Stat.ValueAsInt) .Last() .Id; var armor = ItemFactory.CreateItem( _tableSheets.EquipmentItemSheet[armorId], random) as Equipment; equipments.Add(armor.ItemId); previousAvatarState.inventory.AddItem(armor); } var mailEquipmentRow = _tableSheets.EquipmentItemSheet.Values.First(); var mailEquipment = ItemFactory.CreateItemUsable(mailEquipmentRow, default, 0);
public void CorrectInheritedTemplatesForRenderingContext() { using (ShimsContext.Create()) { var tId = new Guid("{02F5002C-325E-4E5A-9C93-A97724ED3400}"); var testItem = CreateTestItem(templateId: tId); Template templateItem = new ShimTemplate() { DescendsFromID = id => true, }; ShimTemplateManager.GetTemplateItem = id => { return templateItem; }; var contextProvider = new Mock<IContextProvider>(); contextProvider.Setup(c => c.PageContextItem).Returns(testItem); contextProvider.Setup(c => c.RenderingContextItem).Returns(testItem); contextProvider.Setup(c => c.RenderingItem).Returns(testItem); contextProvider.Setup(c => c.RenderingParameters).Returns(new Dictionary<string, string>()); var itemFactory = new ItemFactory(contextProvider.Object); var wrappedItem = itemFactory.GetContextItem<IScTemplate>(); Assert.IsNotNull(wrappedItem); } }
/// <summary> /// コンストラクタ /// </summary> /// <param name="node">対象Node</param> /// <param name="semanticModel">対象ソースのsemanticModel</param> /// <param name="parent">親IAnalyzeItem</param> /// <param name="container">イベントコンテナ</param> public ItemFor(ForStatementSyntax node, SemanticModel semanticModel, IAnalyzeItem parent, EventContainer container) : base(parent, node, semanticModel, container) { ItemType = ItemTypes.MethodStatement; // 宣言部 if (node.Declaration != null) { // 型設定 IsVar = node.Declaration.Type.IsVar; var declaredSymbol = semanticModel.GetDeclaredSymbol(node.Declaration.Variables.First()); var parts = ((ILocalSymbol)declaredSymbol).Type.ToDisplayParts(SymbolDisplayFormat.MinimallyQualifiedFormat); foreach (var part in parts) { // スペースの場合は型設定に含めない if (part.Kind == SymbolDisplayPartKind.Space) { continue; } var name = Expression.GetSymbolName(part, true); var type = Expression.GetSymbolTypeName(part.Symbol); if (part.Kind == SymbolDisplayPartKind.ClassName) { // 外部ファイル参照イベント発行 RaiseOtherFileReferenced(node, part.Symbol); } Types.Add(new Expression(name, type)); } // ローカル定義 foreach (var variable in node.Declaration.Variables) { var declaration = semanticModel.GetOperation(variable); Declarations.Add(OperationFactory.GetExpressionList(declaration, container)); } } else if (node.Initializers != null) { // 既存定義 foreach (var initializer in node.Initializers) { var declaration = semanticModel.GetOperation(initializer); Declarations.Add(OperationFactory.GetExpressionList(declaration, container)); } } // 計算部 foreach (var increment in node.Incrementors) { var incrementOperator = semanticModel.GetOperation(increment); Incrementors.Add(OperationFactory.GetExpressionList(incrementOperator, container)); } // 条件部 var condition = semanticModel.GetOperation(node.Condition); Conditions.AddRange(OperationFactory.GetExpressionList(condition, container)); // 内部処理設定 var block = node.Statement as BlockSyntax; foreach (var statement in block.Statements) { Members.Add(ItemFactory.Create(statement, semanticModel, container, this)); } }
public Texture ReadFromDisk(int ItemID, IHue Hue) { ItemID &= 0x3fff; if ((ItemID >= 0x3584) && (ItemID <= 0x35a1)) { return Hue.GetGump(0x91b + (ItemID - 0x3584)); } if (this.m_Factory == null) { this.m_Factory = new ItemFactory(this); } return this.m_Factory.Load(ItemID, Hue); }
public void Execute(int level, int expectedLevel, int expectedGold, bool backward) { var row = _tableSheets.EquipmentItemSheet.Values.First(r => r.Grade == 1); var equipment = (Equipment)ItemFactory.CreateItemUsable(row, default, 0, level);
public AffixManagerTest() { _affixFactory = new AffixFactory(); _itemFactory = new ItemFactory(_affixFactory); }
public override Item[] GetDrops(Item tool) { return(new[] { ItemFactory.GetItem(158, Metadata, 2) }); }
public void OnDrawGizmos() { if (Application.isPlaying) { return; } bool layoutViz = false; // Dont show gizmos over item references that live in an inactive layout if (transform.parent) { ItemLayout layout = transform.parent.GetComponent <ItemLayout>(); layoutViz = layout.visualizeAllRandom; if (layout && !layout.visualize) { return; } } bool previzRandom = (visualizeRandomness && Selection.activeGameObject == this.gameObject) || layoutViz; int previzInstances = previzRandom ? (instanceCount > 1 ? instanceCount : 15) : 1; System.Random rnd = new System.Random(itemId.GetHashCode()); if (procedural) { for (int i = 0; i < previzInstances; i++) { Matrix4x4 previzRandomMatrix = Matrix4x4.identity; if (previzRandom) { Vector3 randomOffset = ItemFactory.GetRandomPositionOffset(randomPositionAmplitude, rnd); Vector3 randomRotation = ItemFactory.GetRandomRotationOffset(randomRotationAmplitude, rnd); Vector3 randomScale = ItemFactory.GetRandomScaleOffset(randomScaleAmplitude, uniformScale, rnd); previzRandomMatrix = Matrix4x4.TRS(randomOffset, Quaternion.Euler(randomRotation), randomScale); } Gizmos.matrix = this.transform.localToWorldMatrix * previzRandomMatrix; Gizmos.color = Color.yellow; Gizmos.DrawWireCube(Vector3.zero, this.availableProceduralVolume.size); Gizmos.color = new Color(0f, 1f, 1f, .5f); Gizmos.DrawCube(GetAnchorPositionWorld() - this.transform.position, GetAnchorPlaneSize()); } } else { LoadMeshes(); Bounds itemBounds = CalculateBoundsWorldSpace(1); Gizmos.color = Color.yellow; Gizmos.DrawWireCube(itemBounds.center, itemBounds.size); for (int i = 0; i < previzInstances; i++) { Matrix4x4 previzRandomMatrix = Matrix4x4.identity; if (previzRandom) { Vector3 randomOffset = ItemFactory.GetRandomPositionOffset(randomPositionAmplitude, rnd); Vector3 randomRotation = ItemFactory.GetRandomRotationOffset(randomRotationAmplitude, rnd); Vector3 randomScale = ItemFactory.GetRandomScaleOffset(randomScaleAmplitude, uniformScale, rnd); previzRandomMatrix = Matrix4x4.TRS(randomOffset, Quaternion.Euler(randomRotation), randomScale); } foreach (MeshTransform m in cachedMeshes) { m.material.SetPass(0); Graphics.DrawMeshNow(m.mesh, transform.localToWorldMatrix * previzRandomMatrix * m.matrix, 0); } } } }
public override IAccountStateDelta Execute(IActionContext context) { IActionContext ctx = context; var states = ctx.PreviousStates; var slotAddress = AvatarAddress.Derive( string.Format( CultureInfo.InvariantCulture, CombinationSlotState.DeriveFormat, SlotIndex ) ); if (ctx.Rehearsal) { return(states .SetState(AvatarAddress, MarkChanged) .SetState(slotAddress, MarkChanged) .SetState(ctx.Signer, MarkChanged) .MarkBalanceChanged(GoldCurrencyMock, ctx.Signer, BlacksmithAddress)); } if (!states.TryGetAgentAvatarStates(ctx.Signer, AvatarAddress, out var agentState, out var avatarState)) { throw new FailedLoadStateException("Aborted as the avatar state of the signer was failed to load."); } var slotState = states.GetCombinationSlotState(AvatarAddress, SlotIndex); if (slotState is null) { throw new FailedLoadStateException("Aborted as the slot state is failed to load"); } if (!slotState.Validate(avatarState, ctx.BlockIndex)) { throw new CombinationSlotUnlockException( $"Aborted as the slot state is invalid: {slotState} @ {SlotIndex}"); } var recipeSheet = states.GetSheet <EquipmentItemRecipeSheet>(); var materialSheet = states.GetSheet <MaterialItemSheet>(); var materials = new Dictionary <Material, int>(); // Validate recipe. if (!recipeSheet.TryGetValue(RecipeId, out var recipe)) { throw new SheetRowNotFoundException(nameof(EquipmentItemRecipeSheet), RecipeId); } if (!(SubRecipeId is null)) { if (!recipe.SubRecipeIds.Contains((int)SubRecipeId)) { throw new SheetRowColumnException( $"Aborted as the sub recipe {SubRecipeId} was failed to load from the sheet." ); } } // Validate main recipe is unlocked. if (!avatarState.worldInformation.IsStageCleared(recipe.UnlockStage)) { avatarState.worldInformation.TryGetLastClearedStageId(out var current); throw new NotEnoughClearedStageLevelException(recipe.UnlockStage, current); } if (!materialSheet.TryGetValue(recipe.MaterialId, out var material)) { throw new SheetRowNotFoundException(nameof(MaterialItemSheet), recipe.MaterialId); } if (!avatarState.inventory.RemoveMaterial(material.ItemId, recipe.MaterialCount)) { throw new NotEnoughMaterialException( $"Aborted as the player has no enough material ({material} * {recipe.MaterialCount})" ); } var equipmentMaterial = ItemFactory.CreateMaterial(materialSheet, material.Id); materials[equipmentMaterial] = recipe.MaterialCount; BigInteger requiredGold = recipe.RequiredGold; var requiredActionPoint = recipe.RequiredActionPoint; var equipmentItemSheet = states.GetSheet <EquipmentItemSheet>(); // Validate equipment id. if (!equipmentItemSheet.TryGetValue(recipe.ResultEquipmentId, out var equipRow)) { throw new SheetRowNotFoundException(nameof(equipmentItemSheet), recipe.ResultEquipmentId); } var requiredBlockIndex = ctx.BlockIndex + recipe.RequiredBlockIndex; var equipment = (Equipment)ItemFactory.CreateItemUsable( equipRow, ctx.Random.GenerateRandomGuid(), requiredBlockIndex ); // Validate sub recipe. HashSet <int> optionIds = null; if (SubRecipeId.HasValue) { var subSheet = states.GetSheet <EquipmentItemSubRecipeSheet>(); var subId = (int)SubRecipeId; if (!subSheet.TryGetValue(subId, out var subRecipe)) { throw new SheetRowNotFoundException(nameof(EquipmentItemSubRecipeSheet), subId); } requiredBlockIndex += subRecipe.RequiredBlockIndex; requiredGold += subRecipe.RequiredGold; requiredActionPoint += subRecipe.RequiredActionPoint; foreach (var materialInfo in subRecipe.Materials) { if (!materialSheet.TryGetValue(materialInfo.Id, out var subMaterialRow)) { throw new SheetRowNotFoundException(nameof(MaterialItemSheet), materialInfo.Id); } if (!avatarState.inventory.RemoveMaterial(subMaterialRow.ItemId, materialInfo.Count)) { throw new NotEnoughMaterialException( $"Aborted as the player has no enough material ({subMaterialRow} * {materialInfo.Count})" ); } var subMaterial = ItemFactory.CreateMaterial(materialSheet, materialInfo.Id); materials[subMaterial] = materialInfo.Count; } optionIds = SelectOption(states.GetSheet <EquipmentItemOptionSheet>(), states.GetSheet <SkillSheet>(), subRecipe, ctx.Random, equipment); equipment.Update(requiredBlockIndex); } // Validate NCG. FungibleAssetValue agentBalance = states.GetBalance(ctx.Signer, states.GetGoldCurrency()); if (agentBalance < states.GetGoldCurrency() * requiredGold) { throw new InsufficientBalanceException( ctx.Signer, agentBalance, $"Aborted as the agent ({ctx.Signer}) has no sufficient gold: {agentBalance} < {requiredGold}" ); } if (avatarState.actionPoint < requiredActionPoint) { throw new NotEnoughActionPointException( $"Aborted due to insufficient action point: {avatarState.actionPoint} < {requiredActionPoint}" ); } avatarState.actionPoint -= requiredActionPoint; if (!(optionIds is null)) { foreach (var id in optionIds.OrderBy(id => id)) { agentState.unlockedOptions.Add(id); } } // FIXME: BlacksmithAddress just accumulate NCG. we need plan how to circulate this. if (requiredGold > 0) { states = states.TransferAsset( ctx.Signer, BlacksmithAddress, states.GetGoldCurrency() * requiredGold ); } var result = new CombinationConsumable.ResultModel { actionPoint = requiredActionPoint, gold = requiredGold, materials = materials, itemUsable = equipment, recipeId = RecipeId, subRecipeId = SubRecipeId, itemType = ItemType.Equipment, }; slotState.Update(result, ctx.BlockIndex, requiredBlockIndex); var mail = new CombinationMail(result, ctx.BlockIndex, ctx.Random.GenerateRandomGuid(), requiredBlockIndex); result.id = mail.id; avatarState.UpdateV2(mail); avatarState.questList.UpdateCombinationEquipmentQuest(RecipeId); avatarState.UpdateFromCombination(equipment); avatarState.UpdateQuestRewards(materialSheet); return(states .SetState(AvatarAddress, avatarState.Serialize()) .SetState(slotAddress, slotState.Serialize()) .SetState(ctx.Signer, agentState.Serialize())); }
public EntityFactory(Database database, LanguageService languageService, ItemFactory itemFactory) { this.database = database; this.languageService = languageService; this.itemFactory = itemFactory; }
public void Case(int randomSeed, int[] optionNumbers) { var gameConfigState = _initialState.GetGameConfigState(); Assert.NotNull(gameConfigState); var recipeRow = _tableSheets.EquipmentItemRecipeSheet.OrderedList.First(e => e.SubRecipeIds.Any()); var subRecipeRow = _tableSheets.EquipmentItemSubRecipeSheetV2[recipeRow.SubRecipeIds.First()]; var combinationEquipmentAction = new CombinationEquipment { avatarAddress = _avatarAddress, slotIndex = 0, recipeId = recipeRow.Id, subRecipeId = subRecipeRow.Id, }; var inventoryValue = _initialState.GetState(_inventoryAddress); Assert.NotNull(inventoryValue); var inventoryState = new Inventory((List)inventoryValue); inventoryState.AddFungibleItem( ItemFactory.CreateMaterial(_tableSheets.MaterialItemSheet, recipeRow.MaterialId), recipeRow.MaterialCount); foreach (var materialInfo in subRecipeRow.Materials) { inventoryState.AddFungibleItem( ItemFactory.CreateMaterial(_tableSheets.MaterialItemSheet, materialInfo.Id), materialInfo.Count); } var worldInformation = new WorldInformation( 0, _tableSheets.WorldSheet, recipeRow.UnlockStage); var nextState = _initialState .SetState(_inventoryAddress, inventoryState.Serialize()) .SetState(_worldInformationAddress, worldInformation.Serialize()); var random = new TestRandom(randomSeed); nextState = combinationEquipmentAction.Execute(new ActionContext { PreviousStates = nextState, BlockIndex = 0, Random = random, Signer = _agentAddress, }); var slot0Value = nextState.GetState(_slot0Address); Assert.NotNull(slot0Value); var slot0State = new CombinationSlotState((Dictionary)slot0Value); Assert.NotNull(slot0State.Result.itemUsable); var equipment = (Equipment)slot0State.Result.itemUsable; var additionalStats = equipment.StatsMap .GetAdditionalStats(true) .ToArray(); var skills = equipment.Skills; Assert.Equal(optionNumbers.Length, equipment.optionCountFromCombination); var optionSheet = _tableSheets.EquipmentItemOptionSheet; var mainAdditionalStatMin = 0; var mainAdditionalStatMax = 0; var requiredBlockIndex = 0; foreach (var optionNumber in optionNumbers) { var optionInfo = subRecipeRow.Options[optionNumber - 1]; requiredBlockIndex += optionInfo.RequiredBlockIndex; var optionRow = optionSheet[optionInfo.Id]; if (optionRow.StatMin > 0 || optionRow.StatMax > 0) { if (optionRow.StatType == equipment.UniqueStatType) { mainAdditionalStatMin += optionRow.StatMin; mainAdditionalStatMax += optionRow.StatMax; continue; } var additionalStatValue = additionalStats .First(e => e.statType == optionRow.StatType) .additionalValue; Assert.True(additionalStatValue >= optionRow.StatMin); Assert.True(additionalStatValue <= optionRow.StatMax + 1); } else if (optionRow.SkillId != default) { var skill = skills.First(e => e.SkillRow.Id == optionRow.SkillId); Assert.True(skill.Chance >= optionRow.SkillChanceMin); Assert.True(skill.Chance <= optionRow.SkillChanceMax + 1); Assert.True(skill.Power >= optionRow.SkillDamageMin); Assert.True(skill.Power <= optionRow.SkillDamageMax + 1); } } var mainAdditionalStatValue = additionalStats .First(e => e.statType == equipment.UniqueStatType) .additionalValue; Assert.True(mainAdditionalStatValue >= mainAdditionalStatMin); Assert.True(mainAdditionalStatValue <= mainAdditionalStatMax + 1); Assert.Equal(requiredBlockIndex + 1, slot0State.RequiredBlockIndex); // FIXME // https://github.com/planetarium/lib9c/pull/517#discussion_r679218764 // The tests after this line should be finished. However, since then the logic is being developed by // different developers in different branches. I wrote a test beforehand, but it's failing. // I plan to move to another branch after this PR is merged and finish writing the tests. return; if (requiredBlockIndex == 0) { return; } var hourglassRow = _tableSheets.MaterialItemSheet .First(pair => pair.Value.ItemSubType == ItemSubType.Hourglass) .Value; inventoryValue = nextState.GetState(_inventoryAddress); Assert.NotNull(inventoryValue); inventoryState = new Inventory((List)inventoryValue); Assert.False(inventoryState.TryGetFungibleItems(hourglassRow.ItemId, out _)); var hourglassCount = requiredBlockIndex * gameConfigState.HourglassPerBlock; inventoryState.AddFungibleItem( ItemFactory.CreateMaterial(_tableSheets.MaterialItemSheet, hourglassRow.Id), hourglassCount); Assert.True(inventoryState.TryGetFungibleItems(hourglassRow.ItemId, out var hourglasses)); Assert.Equal(hourglassCount, hourglasses.Sum(e => e.count)); nextState = nextState.SetState(_inventoryAddress, inventoryState.Serialize()); var rapidCombinationAction = new RapidCombination { avatarAddress = _avatarAddress, slotIndex = 0, }; nextState = rapidCombinationAction.Execute(new ActionContext { PreviousStates = nextState, BlockIndex = 1, Random = random, Signer = _agentAddress, }); inventoryValue = nextState.GetState(_inventoryAddress); Assert.NotNull(inventoryValue); inventoryState = new Inventory((List)inventoryValue); Assert.False(inventoryState.TryGetFungibleItems(hourglassRow.ItemId, out _)); }
public PlayingState(Alex alex, GraphicsDevice graphics, WorldProvider worldProvider, NetworkProvider networkProvider) : base(alex) { NetworkProvider = networkProvider; World = new World(alex.Services, graphics, Options, networkProvider); World.Player.IsFirstPersonMode = true; WorldProvider = worldProvider; if (worldProvider is SPWorldProvider) { World.DoDaylightcycle = false; //World.Player.SetInventory(new BedrockInventory(46)); if (ItemFactory.TryGetItem("minecraft:diamond_sword", out var sword)) { World.Player.Inventory.MainHand = sword; World.Player.Inventory[World.Player.Inventory.HotbarOffset] = sword; } if (ItemFactory.TryGetItem("minecraft:dirt", out var dirt)) { World.Player.Inventory[World.Player.Inventory.HotbarOffset + 1] = dirt; } if (ItemFactory.TryGetItem("minecraft:diamond", out var compass)) { World.Player.Inventory[World.Player.Inventory.HotbarOffset + 2] = compass; } } var title = new TitleComponent(); WorldProvider = worldProvider; WorldProvider.Init(World); WorldProvider.TitleComponent = title; _playingHud = new PlayingHud(Alex, World.Player, title); _playingHud.Chat.Network = networkProvider; WorldProvider.ScoreboardView = _playingHud.Scoreboard; WorldProvider.ChatRecipient = _playingHud; //WorldProvider.ScoreboardView _debugInfo = new GuiDebugInfo(); InitDebugInfo(); MiniMap = new GuiMiniMap(World.ChunkManager) { Anchor = Alignment.TopRight }; var settings = GetService <IOptionsProvider>(); settings.AlexOptions.VideoOptions.Minimap.Bind(OnMinimapSettingChange); RenderMinimap = settings.AlexOptions.VideoOptions.Minimap.Value; if (RenderMinimap) { _playingHud.AddChild(MiniMap); } _networkDebugHud = new NetworkDebugHud(NetworkProvider); }
private static ItemUsable GetFood(ConsumableItemSheet.Row equipmentItemRow, Guid itemId, long ctxBlockIndex) { return(ItemFactory.CreateItemUsable(equipmentItemRow, itemId, ctxBlockIndex)); }
public static Item AlternativeReadItem(this Packet packet, bool readNetworkId) { Item stack; int networkId = -1; if (readNetworkId) { networkId = packet.ReadSignedVarInt(); if (networkId == 0) { return(new ItemAir()); } } return(packet.ReadItem()); int id = packet.ReadSignedVarInt(); if (id == 0) { return(new ItemAir()); } int tmp = packet.ReadSignedVarInt(); short metadata = (short)(tmp >> 8); if (metadata == short.MaxValue) { metadata = 0; } byte count = (byte)(tmp & 0xff); stack = ItemFactory.GetItem((short)id, metadata, count); stack.UniqueId = networkId; ushort dataMarker = packet.ReadUshort(); // NbtLen if (dataMarker == 0xffff) { var version = packet.ReadByte(); switch (version) { case 1: var nbt = packet.ReadNbt(); if (nbt != null) { stack.ExtraData = (NbtCompound)nbt.NbtFile.RootTag; } break; } } else if (dataMarker > 0) { var nbtData = packet.ReadBytes(dataMarker); // var stream = (Stream)ReflectionHelper.GetPrivateFieldValue<MemoryStreamReader>(typeof(Packet), packet, "_reader"); using (MemoryStream ms = new MemoryStream(nbtData)) { stack.ExtraData = ReadNbtCompound(ms); /*var nbt = ReadNbt(ms); * * if (nbt != null) * { * stack.ExtraData = (NbtCompound) nbt.NbtFile.RootTag; * }*/ //stack.ExtraData = ReadNbt(ms); } } var canPlace = packet.ReadVarInt(); for (int i = 0; i < canPlace; ++i) { packet.ReadString(); } var canBreak = packet.ReadVarInt(); for (int i = 0; i < canBreak; ++i) { packet.ReadString(); } if (id == 513) // shield { packet.ReadVarLong(); // something about tick, crap code } return(stack); }
public override Item[] GetDrops() { return(new[] { ItemFactory.GetItem(338, 0, 1) }); }
public void CorrectDirectTemplateForContext() { using (ShimsContext.Create()) { var templateId = new Guid("{02F5002C-325E-4E5A-9C93-A97724ED3400}"); var testItem = CreateTestItem(templateId: templateId); var contextProvider = new Mock<IContextProvider>(); contextProvider.Setup(c => c.PageContextItem).Returns(testItem); var itemFactory = new ItemFactory(contextProvider.Object); var wrappedItem = itemFactory.GetContextItem<IScTemplate>(); Assert.IsNotNull(wrappedItem); } }