public GameField(FieldData fieldData, Pivot parentPivot, float x, float y) : base(bounds, parentPivot, x, y) { this.fieldData = fieldData; points = new GamePoint[fieldData.pointsCnt]; for (int i = 0; i < fieldData.pointsCnt; ++i) { int xc = (int)(fieldData.points[i].x * GameView.scaleFactor); int yc = (int)(fieldData.points[i].y * GameView.scaleFactor); points[i] = new GamePoint(pivot, xc, yc); pointsAlive.Add(i); } for (int i = 0; i < fieldData.segmentsCnt; ++i) { availableSegments.Add(i); } }
void AddSegment(int point1, int point2, int colorID) { pointsAlive.Remove(point1); pointsAlive.Remove(point2); GamePoint a = points[point1], b = points[point2]; GameSegment cur = new GameSegment(colorID, (int)(b.pivot.X - a.pivot.X), (int)(b.pivot.Y - a.pivot.Y), pivot, (int)a.pivot.X, (int)a.pivot.Y); cur.AnimateAppearance(); segments.Add(cur); int segID = fieldData.segmentID[point1, point2]; foreach (int segProhibitID in fieldData.intersectedWith[segID]) { availableSegments.Remove(segProhibitID); } }