181 {
182 if (
WorldGen.BiomeTileCheck(origin.
X, origin.
Y))
183 {
184 return false;
185 }
187 {
188 _slabs =
new Slab[56, 26];
189 }
193 origin.X -= num * 3 / 2;
194 origin.Y -= num2 * 3 / 2;
195 for (
int i = -1;
i < num + 1;
i++)
196 {
197 double num4 = (double)(i - num / 2) / (double)num + 0.5;
198 int num5 = (int)((0.5 -
Math.
Abs(num4 - 0.5)) * 5.0) - 2;
199 for (int j = -1; j < num2 + 1; j++)
200 {
201 bool hasWall = true;
202 bool flag = false;
204 int num6 =
Math.
Abs(j - num2 / 2) - num3 / 4 + num5;
205 if (num6 > 3)
206 {
207 flag = flag2;
208 hasWall = false;
209 }
210 else if (num6 > 0)
211 {
212 flag = j - num2 / 2 > 0 || flag2;
213 hasWall = j - num2 / 2 < 0 || num6 <= 2;
214 }
215 else if (num6 == 0)
216 {
217 flag =
GenBase.
_random.Next(2) == 0 && (j - num2 / 2 > 0 || flag2);
218 }
220 {
221 hasWall = false;
222 flag = false;
223 }
225 }
226 }
227 for (int k = 0; k < num; k++)
228 {
229 for (int l = 0; l < num2; l++)
230 {
232 }
233 }
234 int num7 = num / 2;
235 int num8 = num2 / 2;
236 int num9 = (num8 + 1) * (num8 + 1);
240 double num11 = 0.0;
241 for (int m = 0; m <= num; m++)
242 {
243 double num12 = (double)num8 / (double)num7 * (double)(m - num7);
245 num11 = ((m >= num / 2) ? (num11 + Utils.Lerp(num10, value2, (
double)m / (
double)(num / 2) - 1.0)) : (num11 + Utils.Lerp(
value, num10, (double)m / (double)(num / 2))));
246 for (int n = num8 - num13; n <= num8 + num13; n++)
247 {
248 PlaceSlab(
_slabs[m + 1, n + 1], m * 3 + origin.
X, n * 3 + origin.
Y + (
int)num11, 3);
249 }
250 }
252 return true;
253 }
static byte Min(byte val1, byte val2)
static double Sqrt(double d)
static double Abs(double value)
static byte Max(byte val1, byte val2)
static bool IsGroupSolid(int x, int y, int scale)
delegate bool SlabState(int x, int y, int scale)
void SmoothSlope(int x, int y)
void PlaceSlab(Slab slab, int originX, int originY, int scale)
static UnifiedRandom _random
void AddStructure(Rectangle area, int padding=0)
static Slab Create(SlabState state, bool hasWall)