public bool Update(int nDeltaTime) // usec { lock (lockObj) { long lTime = DX.GetNowHiPerformanceCount(); int fontsize = DX.GetFontSizeToHandle(nFontHandle); for (int i = list.Count - 1; i >= 0; i--) { TickerElement te = (TickerElement)list[i]; // 新規追加か? if (te.lStartTime < 0) { te.lStartTime = lTime; te.xe = xInitPos - DX.GetDrawStringWidthToHandle(te.sMessage, te.sMessage.Length, nFontHandle) - nXOffset; } float fDelta = (float)nDeltaTime / 16666.6F; DX.DrawStringToHandle(te.x, te.y, te.sMessage, te.uiColor, nFontHandle); switch (te.nDirection) { case -1: if (te.x > te.xe) { te.x -= (int)(fDelta * fSpeed); if (te.x <= te.xe) { te.x = te.xe; te.nDirection = 0; } } if (te.y + fontsize < 0) { te.nDirection = 1; } break; case 0: if ((lTime - te.lStartTime > nExpireTime) || (te.y + fontsize < 0)) { te.nDirection = 1; } break; case 1: if (te.x < xInitPos) { te.x += (int)(fDelta * fSpeed) * 2; } if ((te.x >= xInitPos) || (te.y + fontsize < 0)) { list.RemoveAt(i); } break; } } } return(true); }
public void DeleteAll(bool bDeleteJustNow = false) { lock (lockObj) { if (bDeleteJustNow == true) { list.Clear(); } else { for (int i = 0; i < list.Count; i++) { TickerElement te = (TickerElement)list[i]; te.nDirection = 1; } } } }
public bool Add(string sMessage, uint uiColor) { lock (lockObj) { TickerElement te = new TickerElement(); te.x = xInitPos; te.y = yInitPos; te.sMessage = sMessage; te.uiColor = uiColor; te.nDirection = -1; te.lStartTime = -1; te.xe = -999; list.Add(te); for (int j = 0; j < list.Count - 1; j++) { TickerElement te2 = (TickerElement)list[j]; te2.y -= nFontSize; } } return(true); }