public void Update(ResolutionRenderer irr, Vector2? newOffset = null, Vector2? newSize = null) { bool changed = false; if (newOffset != null) { positionOffset.X = newOffset.Value.X; positionOffset.Y = newOffset.Value.Y; changed = true; } if (newSize != null) { size.X = newSize.Value.X; size.Y = newSize.Value.Y; changed = true; } if (displayString != null && displayString != string.Empty && changed) { displayString = Text.WrapText(font, displayString, size.X); } // Get the position of the DisplayRect. If it's not relative to the screen it's absolute position will be good now if (screenRelative != ScreenPositions.None) position = GetAbsolutePosition(irr); else position = positionOffset; }
Vector2 GetAbsolutePosition(ResolutionRenderer irr) { Vector2 ret = Vector2.Zero; switch (screenRelative) { case ScreenPositions.TopLeft: ret += positionOffset; break; case ScreenPositions.TopCenter: ret.X += irr.ScreenWidth / 2; ret.X -= size.X / 2; ret += positionOffset; break; case ScreenPositions.TopRight: ret.X += irr.ScreenWidth; ret.X -= size.X; ret += positionOffset; break; case ScreenPositions.RightCenter: ret.X += irr.ScreenWidth; ret.X -= size.X; ret.Y += irr.ScreenHeight / 2; ret.X += positionOffset.X; ret.Y -= size.Y / 2; ret.Y -= positionOffset.Y; break; case ScreenPositions.BottomRight: ret.X += irr.ScreenWidth; ret.X -= size.X; ret.X -= positionOffset.X; ret.Y += irr.ScreenHeight; ret.Y -= size.Y; ret.Y -= positionOffset.Y; break; case ScreenPositions.BottomCenter: ret.X += irr.ScreenWidth / 2; ret.X -= size.X / 2; ret.X += positionOffset.X; ret.Y += irr.ScreenHeight; ret.Y -= size.Y; ret.Y -= positionOffset.Y; break; case ScreenPositions.BottomLeft: ret.X += positionOffset.X; ret.Y += irr.ScreenHeight; ret.Y -= size.Y; ret.Y -= positionOffset.Y; break; case ScreenPositions.LeftCenter: ret.X += positionOffset.X; ret.Y += irr.ScreenHeight / 2; ret.Y -= size.Y / 2; ret.Y += positionOffset.Y; break; }; return ret; }
public void Update(ResolutionRenderer irr) { // Get the position of the DisplayRect. If it's not relative to the screen it's absolute position will be good now if(screenRelative != ScreenPositions.None) position = GetAbsolutePosition(irr); Vector2 newPos = position; int count = 0; // Start at the top item to be displayed. When drawing, that's where Draw will start. for(int i = topItemDisplayed; i < mainList.Count; ++i) { newPos.Y = position.Y + (itemSize.Y * count); ++count; mainList[i].Update(irr, newPos); } }