Архитектурный шаблон "Мрак в моделях" на нескольких языках и платформах
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
975B

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