public RecipeBookWindow(Vector2 pos, ItemInstance tool) : base(pos, "Recipe Book") { _usesWithFocus = Locator.Get <ContentManager>().GetUses(tool) .GroupBy(use => use.Focus) .Select(usesWithFocus => usesWithFocus.ToList()) .ToList(); _rect.width = 150; var toolRenderable = new ItemRenderable(Vector2.zero, tool); AddChild(toolRenderable); if (_usesWithFocus.Count > NumToShow) { var prevButton = new Button(new Vector2(32, 0), "<") { OnClick = PreviousSelection }; var nextButton = new Button(new Vector2(100, 0), ">") { OnClick = NextSelection }; AddChild(prevButton); AddChild(nextButton); } _toolFocusGrid = new RenderableContainer(new Vector2(0, 32)); AddChild(_toolFocusGrid); DisplayCurrentSelection(); }
protected virtual void ViewItems(List <ItemInstance> items) { ItemRenderables = new List <ItemRenderable>(); Slots.RemoveAllChildren(); ShowSelected = false; for (var i = 0; i < items.Count; i++) { var itemRend = new ItemRenderable(Vector2.zero, items[i]); var slotIndex = i; itemRend.OnRightClick = () => { Locator.Get <GridiaDriver>().OpenRecipeBook(itemRend.Item); }; itemRend.OnMouseDown = () => MouseDownSlot = slotIndex; itemRend.OnClick = () => { MouseUpSlot = slotIndex; SlotSelected = slotIndex; }; itemRend.OnMouseOver = () => MouseOverSlot = slotIndex; itemRend.OnDoubleClick = () => { EquipItemAt(slotIndex); }; ItemRenderables.Add(itemRend); Slots.AddChild(itemRend); } SetWindowNameToCurrentSelection(); }
private void DisplayCurrentSelection() { if (_products != null) { _products.ForEach(RemoveChild); _products.Clear(); } else { _products = new List <ItemRenderable>(); } var cm = Locator.Get <ContentManager>(); var use = _uses[_currentSelection]; use.Products.ForEach(product => { var item = cm.GetItem(product).GetInstance(); float x; if (_products.Count == 0) { x = _nextButton != null ? (_nextButton.Width + _nextButton.X + 60) : (_equalsLabel.Width + _equalsLabel.X + 10); } else { x = LastChildRight() + 5; } var renderable = new ItemRenderable(Vector2.zero, item); AddChild(renderable); renderable.X = x; _products.Add(renderable); }); }
protected override void ViewItems(List <ItemInstance> items) { ItemRenderables = new List <ItemRenderable>(); Slots.RemoveAllChildren(); for (var i = 0; i < items.Count; i++) { var pos = new Vector2(0, i * 32); var itemRend = new ItemRenderable(pos, items[i]); var slotIndex = i; itemRend.OnDoubleClick = () => { Locator.Get <ConnectionToGridiaServerHandler>().UnequipItem(slotIndex); }; ItemRenderables.Add(itemRend); Slots.AddChild(itemRend); } }
// :( delete public void DrawCreature(Rect rect, Creature creature, float scale) { // :( if (creature.IsOnRaft()) { var cm = Locator.Get <ContentManager>(); var raft = new ItemRenderable(Vector2.zero, cm.GetItem(1211).GetInstance()) { Rect = rect }; raft.Render(); } var image = creature.Image; if (image is DefaultCreatureImage) { var defaultImage = (DefaultCreatureImage)image; var spriteId = defaultImage.SpriteIndex; var textureX = (spriteId % GridiaConstants.SpritesInSheet) % GridiaConstants.NumTilesInSpritesheetRow; var textureY = 10 - (spriteId % GridiaConstants.SpritesInSheet) / GridiaConstants.NumTilesInSpritesheetRow - defaultImage.Height; // ? var texCoords = new Rect(textureX / 10.0f, textureY / 10.0f, defaultImage.Width / 10.0f, defaultImage.Height / 10.0f); // :( don't hardcode 10 rect.width *= defaultImage.Width; rect.height *= defaultImage.Height; rect.y -= (defaultImage.Height - 1) * GridiaConstants.SpriteSize * scale; GUI.DrawTextureWithTexCoords(rect, Creatures.GetTextureForSprite(spriteId), texCoords); } else if (image is CustomPlayerImage) { var customImage = (CustomPlayerImage)image; DrawCreaturePart(rect, Heads, customImage.Head); DrawCreaturePart(rect, Chests, customImage.Chest); DrawCreaturePart(rect, Legs, customImage.Legs); DrawCreaturePart(rect, Arms, customImage.Arms); DrawCreaturePart(rect, Weapons, customImage.Weapon); DrawCreaturePart(rect, Shields, customImage.Shield); } }