Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ oldDrawWater()

void Terraria.Main.oldDrawWater ( bool bg = false,
int Style = 0,
float Alpha = 1f )
inline

Definition at line 54333 of file Main.cs.

54334 {
54335 float num = 0f;
54336 float num2 = 99999f;
54337 float num3 = 99999f;
54338 int num4 = -1;
54339 int num5 = -1;
54341 if (drawToScreen)
54342 {
54344 }
54345 _ = new Microsoft.Xna.Framework.Color[4];
54346 int num6 = (int)(255f * (1f - gfxQuality) + 40f * gfxQuality);
54347 _ = gfxQuality;
54348 _ = gfxQuality;
54349 int num7 = (int)((screenPosition.X - vector.X) / 16f - 1f);
54350 int num8 = (int)((screenPosition.X + (float)screenWidth + vector.X) / 16f) + 2;
54351 int num9 = (int)((screenPosition.Y - vector.Y) / 16f - 1f);
54352 int num10 = (int)((screenPosition.Y + (float)screenHeight + vector.Y) / 16f) + 5;
54353 if (num7 < 5)
54354 {
54355 num7 = 5;
54356 }
54357 if (num8 > maxTilesX - 5)
54358 {
54359 num8 = maxTilesX - 5;
54360 }
54361 if (num9 < 5)
54362 {
54363 num9 = 5;
54364 }
54365 if (num10 > maxTilesY - 5)
54366 {
54367 num10 = maxTilesY - 5;
54368 }
54369 for (int i = num9; i < num10 + 4; i++)
54370 {
54371 for (int j = num7 - 2; j < num8 + 2; j++)
54372 {
54373 if (tile[j, i] == null)
54374 {
54375 tile[j, i] = new Tile();
54376 }
54377 if (tile[j, i].liquid <= 0 || (tile[j, i].nactive() && tileSolid[tile[j, i].type] && !tileSolidTop[tile[j, i].type]) || !(Lighting.Brightness(j, i) > 0f || bg))
54378 {
54379 continue;
54380 }
54381 Microsoft.Xna.Framework.Color color = Lighting.GetColor(j, i);
54382 float num11 = 256 - tile[j, i].liquid;
54383 num11 /= 32f;
54384 bool flag = false;
54385 int num12 = 0;
54386 if (tile[j, i].lava())
54387 {
54388 if (drewLava)
54389 {
54390 continue;
54391 }
54392 float num13 = Math.Abs((float)(j * 16 + 8) - (screenPosition.X + (float)(screenWidth / 2)));
54393 float num14 = Math.Abs((float)(i * 16 + 8) - (screenPosition.Y + (float)(screenHeight / 2)));
54394 if (num13 < (float)(screenWidth * 2) && num14 < (float)(screenHeight * 2))
54395 {
54396 float num15 = (float)Math.Sqrt(num13 * num13 + num14 * num14);
54397 float num16 = 1f - num15 / ((float)screenWidth * 0.75f);
54398 if (num16 > 0f)
54399 {
54400 num += num16;
54401 }
54402 }
54403 if (num13 < num2)
54404 {
54405 num2 = num13;
54406 num4 = j * 16 + 8;
54407 }
54408 if (num14 < num3)
54409 {
54410 num3 = num13;
54411 num5 = i * 16 + 8;
54412 }
54413 num12 = 1;
54414 }
54415 else if (tile[j, i].honey())
54416 {
54417 num12 = 11;
54418 }
54419 else if (tile[j, i].shimmer())
54420 {
54421 num12 = 14;
54422 flag = true;
54423 }
54424 if (num12 == 0)
54425 {
54426 num12 = Style;
54427 }
54428 if ((num12 == 1 || num12 == 11) && drewLava)
54429 {
54430 continue;
54431 }
54432 float num17 = 0.5f;
54433 if (bg)
54434 {
54435 num17 = 1f;
54436 }
54437 if (num12 != 1 && num12 != 11)
54438 {
54439 num17 *= Alpha;
54440 }
54442 Vector2 vector2 = new Vector2(j * 16, i * 16 + (int)num11 * 2);
54444 bool flag2 = true;
54445 if (tile[j, i + 1].liquid < 245 && (!tile[j, i + 1].nactive() || !tileSolid[tile[j, i + 1].type] || tileSolidTop[tile[j, i + 1].type]))
54446 {
54447 float num18 = 256 - tile[j, i + 1].liquid;
54448 num18 /= 32f;
54449 num17 = 0.5f * (8f - num11) / 4f;
54450 if ((double)num17 > 0.55)
54451 {
54452 num17 = 0.55f;
54453 }
54454 if ((double)num17 < 0.35)
54455 {
54456 num17 = 0.35f;
54457 }
54458 float num19 = num11 / 2f;
54459 if (tile[j, i + 1].liquid < 200)
54460 {
54461 if (bg)
54462 {
54463 continue;
54464 }
54465 if (tile[j, i - 1].liquid > 0 && tile[j, i - 1].liquid > 0)
54466 {
54467 value = new Microsoft.Xna.Framework.Rectangle(0, 4, 16, 16);
54468 num17 = 0.5f;
54469 }
54470 else if (tile[j, i - 1].liquid > 0)
54471 {
54472 vector2 = new Vector2(j * 16, i * 16 + 4);
54473 value = new Microsoft.Xna.Framework.Rectangle(0, 4, 16, 12);
54474 num17 = 0.5f;
54475 }
54476 else if (tile[j, i + 1].liquid > 0)
54477 {
54478 vector2 = new Vector2(j * 16, i * 16 + (int)num11 * 2 + (int)num18 * 2);
54479 value = new Microsoft.Xna.Framework.Rectangle(0, 4, 16, 16 - (int)num11 * 2);
54480 }
54481 else
54482 {
54483 vector2 = new Vector2(j * 16 + (int)num19, i * 16 + (int)num19 * 2 + (int)num18 * 2);
54484 value = new Microsoft.Xna.Framework.Rectangle(0, 4, 16 - (int)num19 * 2, 16 - (int)num19 * 2);
54485 }
54486 }
54487 else
54488 {
54489 num17 = 0.5f;
54490 value = new Microsoft.Xna.Framework.Rectangle(0, 4, 16, 16 - (int)num11 * 2 + (int)num18 * 2);
54491 }
54492 }
54493 else if (tile[j, i - 1].liquid > 32)
54494 {
54495 value = new Microsoft.Xna.Framework.Rectangle(0, 4, value.Width, value.Height);
54496 }
54497 else if (num11 < 1f && tile[j, i - 1].nactive() && tileSolid[tile[j, i - 1].type] && !tileSolidTop[tile[j, i - 1].type])
54498 {
54499 vector2 = new Vector2(j * 16, i * 16);
54500 value = new Microsoft.Xna.Framework.Rectangle(0, 4, 16, 16);
54501 }
54502 else
54503 {
54504 for (int k = i + 1; k < i + 6 && (!tile[j, k].nactive() || !tileSolid[tile[j, k].type] || tileSolidTop[tile[j, k].type]); k++)
54505 {
54506 if (tile[j, k].liquid < 200)
54507 {
54508 flag2 = false;
54509 break;
54510 }
54511 }
54512 if (!flag2)
54513 {
54514 num17 = 0.5f;
54515 value = new Microsoft.Xna.Framework.Rectangle(0, 4, 16, 16);
54516 }
54517 else if (tile[j, i - 1].liquid > 0)
54518 {
54519 value = new Microsoft.Xna.Framework.Rectangle(0, 2, value.Width, value.Height);
54520 }
54521 }
54522 if ((color.R > 20 || color.B > 20 || color.G > 20) && value.Y < 4)
54523 {
54524 int num20 = color.R;
54525 if (color.G > num20)
54526 {
54527 num20 = color.G;
54528 }
54529 if (color.B > num20)
54530 {
54531 num20 = color.B;
54532 }
54533 num20 /= 30;
54534 if (rand.Next(20000) < num20)
54535 {
54537 if (tile[j, i].honey())
54538 {
54539 newColor = new Microsoft.Xna.Framework.Color(255, 255, 50);
54540 }
54541 int num21 = Dust.NewDust(new Vector2(j * 16, vector2.Y - 2f), 16, 8, 43, 0f, 0f, 254, newColor, 0.75f);
54542 dust[num21].velocity *= 0f;
54543 }
54544 }
54545 if (tile[j, i].honey())
54546 {
54547 num17 *= 1.6f;
54548 if (num17 > 1f)
54549 {
54550 num17 = 1f;
54551 }
54552 }
54553 if (tile[j, i].lava())
54554 {
54555 num17 *= 1.8f;
54556 if (num17 > 1f)
54557 {
54558 num17 = 1f;
54559 }
54560 if (base.IsActive && !gamePaused && Dust.lavaBubbles < 200)
54561 {
54562 if (tile[j, i].liquid > 200 && rand.Next(700) == 0)
54563 {
54564 Dust.NewDust(new Vector2(j * 16, i * 16), 16, 16, 35);
54565 }
54566 if (value.Y == 0 && rand.Next(350) == 0)
54567 {
54568 int num22 = Dust.NewDust(new Vector2(j * 16, (float)(i * 16) + num11 * 2f - 8f), 16, 8, 35, 0f, 0f, 50, default(Microsoft.Xna.Framework.Color), 1.5f);
54569 dust[num22].velocity *= 0.8f;
54570 dust[num22].velocity.X *= 2f;
54571 dust[num22].velocity.Y -= (float)rand.Next(1, 7) * 0.1f;
54572 if (rand.Next(10) == 0)
54573 {
54574 dust[num22].velocity.Y *= rand.Next(2, 5);
54575 }
54576 dust[num22].noGravity = true;
54577 }
54578 }
54579 }
54580 float num23 = (float)(int)color.R * num17;
54581 float num24 = (float)(int)color.G * num17;
54582 float num25 = (float)(int)color.B * num17;
54583 float num26 = (float)(int)color.A * num17;
54584 color = new Microsoft.Xna.Framework.Color((byte)num23, (byte)num24, (byte)num25, (byte)num26);
54585 if (flag)
54586 {
54588 }
54589 if (Lighting.NotRetro && !bg)
54590 {
54592 if (num12 != 1 && ((double)(int)color2.R > (double)num6 * 0.6 || (double)(int)color2.G > (double)num6 * 0.65 || (double)(int)color2.B > (double)num6 * 0.7))
54593 {
54594 for (int l = 0; l < 4; l++)
54595 {
54596 int num27 = 0;
54597 int num28 = 0;
54598 int width = 8;
54599 int height = 8;
54601 Microsoft.Xna.Framework.Color color4 = Lighting.GetColor(j, i);
54602 if (l == 0)
54603 {
54604 color4 = Lighting.GetColor(j - 1, i - 1);
54605 if (value.Height < 8)
54606 {
54607 height = value.Height;
54608 }
54609 }
54610 if (l == 1)
54611 {
54612 color4 = Lighting.GetColor(j + 1, i - 1);
54613 num27 = 8;
54614 if (value.Height < 8)
54615 {
54616 height = value.Height;
54617 }
54618 }
54619 if (l == 2)
54620 {
54621 color4 = Lighting.GetColor(j - 1, i + 1);
54622 num28 = 8;
54623 height = 8 - (16 - value.Height);
54624 }
54625 if (l == 3)
54626 {
54627 color4 = Lighting.GetColor(j + 1, i + 1);
54628 num27 = 8;
54629 num28 = 8;
54630 height = 8 - (16 - value.Height);
54631 }
54632 num23 = (float)(int)color4.R * num17;
54633 num24 = (float)(int)color4.G * num17;
54634 num25 = (float)(int)color4.B * num17;
54635 num26 = (float)(int)color4.A * num17;
54636 color4 = new Microsoft.Xna.Framework.Color((byte)num23, (byte)num24, (byte)num25, (byte)num26);
54637 color3.R = (byte)((color2.R * 3 + color4.R * 2) / 5);
54638 color3.G = (byte)((color2.G * 3 + color4.G * 2) / 5);
54639 color3.B = (byte)((color2.B * 3 + color4.B * 2) / 5);
54640 color3.A = (byte)((color2.A * 3 + color4.A * 2) / 5);
54641 if (flag)
54642 {
54644 }
54645 spriteBatch.Draw(TextureAssets.Liquid[num12].Value, vector2 - screenPosition + new Vector2(num27, num28) + vector, new Microsoft.Xna.Framework.Rectangle(value.X + num27, value.Y + num28, width, height), color3, 0f, default(Vector2), 1f, SpriteEffects.None, 0f);
54646 if (flag)
54647 {
54649 }
54650 }
54651 }
54652 else
54653 {
54654 spriteBatch.Draw(TextureAssets.Liquid[num12].Value, vector2 - screenPosition + vector, value, color, 0f, default(Vector2), 1f, SpriteEffects.None, 0f);
54655 if (flag)
54656 {
54657 value.Y += 36;
54659 }
54660 }
54661 }
54662 else
54663 {
54664 if (value.Y < 4)
54665 {
54666 value.X += (int)(wFrame * 18f);
54667 }
54668 spriteBatch.Draw(TextureAssets.Liquid[num12].Value, vector2 - screenPosition + vector, value, color, 0f, default(Vector2), 1f, SpriteEffects.None, 0f);
54669 if (flag)
54670 {
54671 value.Y += 36;
54673 }
54674 }
54675 if (!tile[j, i + 1].halfBrick())
54676 {
54677 continue;
54678 }
54679 color = Lighting.GetColor(j, i + 1);
54680 num23 = (float)(int)color.R * num17;
54681 num24 = (float)(int)color.G * num17;
54682 num25 = (float)(int)color.B * num17;
54683 num26 = (float)(int)color.A * num17;
54684 color = new Microsoft.Xna.Framework.Color((byte)num23, (byte)num24, (byte)num25, (byte)num26);
54685 if (flag)
54686 {
54688 }
54689 vector2 = new Vector2(j * 16, i * 16 + 16);
54690 spriteBatch.Draw(TextureAssets.Liquid[num12].Value, vector2 - screenPosition + vector, new Microsoft.Xna.Framework.Rectangle(0, 4, 16, 8), color, 0f, default(Vector2), 1f, SpriteEffects.None, 0f);
54691 if (flag)
54692 {
54694 }
54695 float num29 = 6f;
54696 float num30 = 0.75f;
54697 if (num12 == 1 || num12 == 11)
54698 {
54699 num29 = 4f;
54700 num30 = 0.5f;
54701 }
54702 for (int m = 0; (float)m < num29; m++)
54703 {
54704 int num31 = i + 2 + m;
54705 if (WorldGen.SolidTile(j, num31))
54706 {
54707 break;
54708 }
54709 float num32 = 1f - (float)m / num29;
54710 num32 *= num30;
54711 vector2 = new Vector2(j * 16, num31 * 16 - 2);
54712 spriteBatch.Draw(TextureAssets.Liquid[num12].Value, vector2 - screenPosition + vector, new Microsoft.Xna.Framework.Rectangle(0, 18, 16, 16), color * num32, 0f, default(Vector2), 1f, SpriteEffects.None, 0f);
54713 if (flag)
54714 {
54716 }
54717 }
54718 }
54719 }
54720 if (!drewLava)
54721 {
54724 ambientLavaStrength = num;
54725 }
54726 drewLava = true;
54727 }
static double Sqrt(double d)
static double Abs(double value)
static Vector4 GetShimmerBaseColor(float worldPositionX, float worldPositionY)
static Color GetShimmerGlitterColor(bool top, float worldPositionX, float worldPositionY)
static Asset< Texture2D >[] Liquid
static int maxTilesY
Definition Main.cs:1116
static bool[] tileSolidTop
Definition Main.cs:1469
static float ambientLavaStrength
Definition Main.cs:2331
static SpriteBatch spriteBatch
Definition Main.cs:974
static float gfxQuality
Definition Main.cs:1056
static bool drawToScreen
Definition Main.cs:600
static float ambientLavaY
Definition Main.cs:2329
static int screenHeight
Definition Main.cs:1721
static Vector2 screenPosition
Definition Main.cs:1715
static int maxTilesX
Definition Main.cs:1114
static int offScreenRange
Definition Main.cs:836
static bool[] tileSolid
Definition Main.cs:1471
static float ambientLavaX
Definition Main.cs:2327
static Tile[,] tile
Definition Main.cs:1675
static bool drewLava
Definition Main.cs:1204
static UnifiedRandom rand
Definition Main.cs:1387
static void DrawTileInWater(Vector2 drawOffset, int x, int y)
Definition Main.cs:54316
static int screenWidth
Definition Main.cs:1719
static Liquid[] liquid
Definition Main.cs:1222
static bool gamePaused
Definition Main.cs:1072
static float wFrame
Definition Main.cs:582
static Dust[] dust
Definition Main.cs:1677

References System.Math.Abs(), Microsoft.Xna.Framework.Graphics.Alpha, Terraria.Main.ambientLavaStrength, Terraria.Main.ambientLavaX, Terraria.Main.ambientLavaY, Microsoft.Xna.Framework.Color.B, Terraria.Lighting.Brightness(), Terraria.Main.DrawTileInWater(), Terraria.Main.drawToScreen, Terraria.Main.drewLava, Terraria.Main.dust, Microsoft.Xna.Framework.Color.G, Terraria.Main.gamePaused, Terraria.Lighting.GetColor(), Terraria.GameContent.Liquid.LiquidRenderer.GetShimmerBaseColor(), Terraria.GameContent.Liquid.LiquidRenderer.GetShimmerGlitterColor(), Terraria.Main.gfxQuality, System.Text.RegularExpressions.i, Terraria.Dust.lavaBubbles, Terraria.GameContent.TextureAssets.Liquid, Terraria.Main.liquid, Terraria.Main.maxTilesX, Terraria.Main.maxTilesY, Terraria.Dust.NewDust(), Terraria.Lighting.NotRetro, Terraria.Main.offScreenRange, Microsoft.Xna.Framework.Color.R, Terraria.Main.rand, Terraria.Main.screenHeight, Terraria.Main.screenPosition, Terraria.Main.screenWidth, Terraria.WorldGen.SolidTile(), Terraria.Main.spriteBatch, System.Math.Sqrt(), Terraria.DataStructures.Tile, Terraria.Main.tile, Terraria.Main.tileSolid, Terraria.Main.tileSolidTop, Microsoft.Xna.Framework.Color.ToVector4(), System.type, System.value, Microsoft.Xna.Framework.Graphics.Vector2, Terraria.Main.wFrame, and Microsoft.Xna.Framework.Vector2.Zero.

Referenced by Terraria.Main.DrawLiquid().