private void Awake() { if (!tooltip && tooltipPrefab) { tooltip = Instantiate(tooltipPrefab, transform).GetComponent <InventoryItemTooltip>(); } }
public void OnRequestAddTooltip(InventoryItemTooltip tooltip) { if (RequestAddTooltipEvent != null) { RequestAddTooltipEvent(this, tooltip); } }
protected virtual void Start() { if (!tooltip && tooltipPrefab) { tooltip = Instantiate(tooltipPrefab, transform).GetComponent <InventoryItemTooltip>(); } DrawItem(); }
public void OnRequestRemoveTooltip(InventoryItemTooltip tooltip) { if (_tooltip != null) { //remove tooltip from ui if (RequestRemoveTooltipEvent != null) { RequestRemoveTooltipEvent(tooltip); } _tooltip = null; } }
// public virtual void HandleInput(GameTime gameTime, InputState input) { } //Handles user input. This is separate to Update, as a screen can still be updated even if it cannot handle input public override void HandleInput(GameTime gameTime, InputState input, GameState state) { if (_boundingBox.Contains(new Point(input.CurrentMouseState.X, input.CurrentMouseState.Y)) && input.IsMouseVisible) { if (_isDraggable && input.CurrentMouseState.LeftButton == ButtonState.Pressed && input.PreviousMouseState.LeftButton == ButtonState.Released) { isBeingDragged = true; } if (!isBeingDragged) { _mouseHoverCounter++; if (_mouseHoverCounter > 30 && _tooltip == null) { _tooltip = new InventoryItemTooltip(_inventoryItem, Position); OnRequestAddTooltip(_tooltip); } } else { _mouseHoverCounter = 0; } } else { _mouseHoverCounter = 0; OnRequestRemoveTooltip(_tooltip); } if (_isDraggable) { if (input.CurrentMouseState.LeftButton == ButtonState.Released) { if (isBeingDragged && TEMPMouseOver != null) { ((InventoryView)TEMPMouseOver.Owner).RequestAddAt(this, TEMPMouseOver); } isBeingDragged = false; _releasedPosition = new Vector2(_positionAbsolute.X, _positionAbsolute.Y); differenceX = (int)_releasedPosition.X - (int)_owner.PositionAbsolute.X; differenceY = (int)_releasedPosition.Y - (int)_owner.PositionAbsolute.Y; } if (isBeingDragged) { OnRequestRemoveTooltip(_tooltip); Vector2 currentPoint = new Vector2(input.CurrentMouseState.X, input.CurrentMouseState.Y); Vector2 previousPoint = new Vector2(input.PreviousMouseState.X, input.PreviousMouseState.Y); _positionAbsolute.X = _positionAbsolute.X + (currentPoint.X - previousPoint.X); _positionAbsolute.Y = _positionAbsolute.Y + (currentPoint.Y - previousPoint.Y); _boundingBox = new Rectangle((int)_positionAbsolute.X, (int)_positionAbsolute.Y, 40, 40); } else { _positionAbsolute.X -= (int)(differenceX); _positionAbsolute.Y -= (int)(differenceY); _boundingBox = new Rectangle((int)_positionAbsolute.X, (int)_positionAbsolute.Y, 40, 40); if (_positionAbsolute == _owner.PositionAbsolute) { differenceX = 0; differenceY = 0; } } } }
void Awake() { instance = this; }