diff --git a/lib/src/Grid.dart b/lib/src/Grid.dart index 540e9e7..e6bf335 100644 --- a/lib/src/Grid.dart +++ b/lib/src/Grid.dart @@ -1,4 +1,5 @@ import 'dart:core'; +import 'dart:math'; import 'package:collection/collection.dart'; @@ -19,4 +20,24 @@ class Grid extends DelegatingList { width = w, height = h, super(l); + + E elementAtPos(int x, int y) { + int i = toIndex(x, y); + if (i >= length) throw RangeError.index(i, this); + _internal[i]; + } + + void setElement(int x, int y, E value) { + int i = toIndex(x, y); + if (i >= length) throw RangeError.index(i, this); + _internal[i] = value; + } + + E get(int x, int y) => elementAtPos(x, y); + + void set(int x, int y, E value) => setElement(x, y, value); + + int toIndex(int x, int y) => y * width + x; + + Point toCoords(int index) => Point(index % width, index ~/ width); }