Архитектурный шаблон "Мрак в моделях" на нескольких языках и платформах
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

48 lines
930B

  1. interface Context {
  2. itemsCount: number
  3. }
  4. interface Position {
  5. x: number
  6. y: number
  7. }
  8. function memoryGap(): number {
  9. return memorySide() + memorySpace()
  10. }
  11. function memoryGroups(c: Context): Record<number, number> {
  12. var items: Record<number, number> = {};
  13. // @ts-ignore
  14. let ids = utsIndexArray(c.itemsCount);
  15. ids.forEach(i => {
  16. // @ts-ignore
  17. items[Number(i)] = utsFloor(Number(i) / 2)
  18. })
  19. return items;
  20. }
  21. function memorySide(): number {
  22. return 50
  23. }
  24. function memorySpace(): number {
  25. return 20
  26. }
  27. function memoryItemPositions(c: Context): Position[] {
  28. var pos: Position[] = []
  29. // @ts-ignore
  30. let ids = utsIndexArray(c.itemsCount);
  31. ids.forEach(i => {
  32. // @ts-ignore
  33. let row = utsFloor(Number(i) / 4)
  34. let x = memoryGap() + (Number(i) - row * 4) * memoryGap()
  35. let y = memoryGap() + row * memoryGap()
  36. // @ts-ignore
  37. pos.push(memoryCreatePosition(x, y))
  38. })
  39. return pos
  40. }