public bool isValidStartPoint(Ldpoint pt) { return(GlobalFunctions.canBeHarvested(pt) && (BoundedPocketStandHarvester.visitationMap[(uint)pt.y, (uint)pt.x] != BoundedPocketStandHarvester.currentHarvestEventId)); }
public int harvest_EVENT_GROUP_SELECTION_REGIME_70(Ldpoint pt) { //int i, k; int k = 0; int[] r = new int[4]; int siteCut = 0; int sumCut = 0; int c = 0; visitationMap[(uint)itsStartPoint.y, (uint)itsStartPoint.x] = currentHarvestEventId; itsNeighborList.Add(itsStartPoint); while (sumCut < itsTargetCut && itsNeighborList.Count > 0) { c = itsNeighborList.Count; pt = itsNeighborList[0]; itsNeighborList.RemoveAt(0); if (GlobalFunctions.canBeHarvested(pt)) { siteCut = EVENT_GROUP_SELECTION_REGIME_70_clear_cut(pt.y, pt.x); sumCut += siteCut; if (siteCut > 0) { for (int i = 0; i < 4; i++) { r[i] = i; } for (int i = 4; i > 0; i--) { k = (int)(i * system1.frand()); //orignal no control over k, potential out of bound err //<Add By Qia on Nov 1 2012> if (k < 0) { k = 0; } if (k > 3) { k = 3; } //</Add By Qia on Nov 1 2012> switch (r[k]) { case 0: addSiteNeighbor(pt.y, pt.x - 1); break; case 1: addSiteNeighbor(pt.y, pt.x + 1); break; case 2: addSiteNeighbor(pt.y - 1, pt.x); break; case 3: addSiteNeighbor(pt.y + 1, pt.x); break; } r[k] = r[i - 1]; if (k < 0 || k > 3 || (i - 1) < 0 || (i - 1) > 3) { Console.Write("group selection index error\n"); } } } } } return(sumCut); }