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

◆ DrawFlower()

void Terraria.GameContent.UI.WiresUI.WiresRadial.DrawFlower ( SpriteBatch spriteBatch)
inlineprivate

Definition at line 324 of file WiresUI.cs.

325 {
326 if (!active)
327 {
328 return;
329 }
330 Vector2 vector = Main.MouseScreen;
331 Vector2 vector2 = position;
332 if (PlayerInput.UsingGamepad && Main.SmartCursorWanted)
333 {
334 vector = ((PlayerInput.GamepadThumbstickRight != Vector2.Zero) ? (position + PlayerInput.GamepadThumbstickRight * 40f) : ((!(PlayerInput.GamepadThumbstickLeft != Vector2.Zero)) ? position : (position + PlayerInput.GamepadThumbstickLeft * 40f)));
335 }
336 Vector2 vector3 = vector - vector2;
339 float num = vector3.ToRotation();
340 float num2 = vector3.Length();
341 bool flag = false;
342 bool drawToolAllowActuators = Settings.DrawToolAllowActuators;
343 float num3 = 4 + drawToolAllowActuators.ToInt();
344 float num4 = (drawToolAllowActuators ? 11f : (-0.5f));
345 for (int i = 0; i < 6; i++)
346 {
347 if (!drawToolAllowActuators && i == 5)
348 {
349 continue;
350 }
351 bool flag2 = Settings.ToolMode.HasFlag((Settings.MultiToolMode)(1 << i));
352 if (i == 5)
353 {
354 flag2 = Settings.ToolMode.HasFlag(Settings.MultiToolMode.Actuator);
355 }
356 Vector2 vector4 = vector2 + Vector2.UnitX * (45f * ((float)i - 1.5f));
357 switch (i)
358 {
359 case 0:
360 case 1:
361 case 2:
362 case 3:
363 {
364 float num5 = i;
365 if (i == 0)
366 {
367 num5 = 3f;
368 }
369 if (i == 3)
370 {
371 num5 = 0f;
372 }
373 vector4 = vector2 + Vector2.UnitX.RotatedBy(num5 * ((float)Math.PI * 2f) / num3 - (float)Math.PI / num4) * 45f;
374 break;
375 }
376 case 5:
377 vector4 = vector2 + Vector2.UnitX.RotatedBy((float)(i - 1) * ((float)Math.PI * 2f) / num3 - (float)Math.PI / num4) * 45f;
378 break;
379 case 4:
380 flag2 = false;
381 vector4 = vector2;
382 break;
383 }
384 bool flag3 = false;
385 if (i == 4)
386 {
387 flag3 = num2 < 20f;
388 }
389 switch (i)
390 {
391 case 4:
392 flag3 = num2 < 20f;
393 break;
394 case 0:
395 case 1:
396 case 2:
397 case 3:
398 case 5:
399 {
400 float value = (vector4 - vector2).ToRotation().AngleTowards(num, (float)Math.PI * 2f / (num3 * 2f)) - num;
401 if (num2 >= 20f && Math.Abs(value) < 0.01f)
402 {
403 flag3 = true;
404 }
405 break;
406 }
407 }
409 {
410 flag3 = Vector2.Distance(vector4, vector) < 19f;
411 }
412 if (flag)
413 {
414 flag3 = false;
415 }
416 if (flag3)
417 {
418 flag = true;
419 }
420 Texture2D value2 = TextureAssets.WireUi[(Settings.ToolMode.HasFlag(Settings.MultiToolMode.Cutter) ? 8 : 0) + (flag3 ? 1 : 0)].Value;
421 Texture2D texture2D = null;
422 switch (i)
423 {
424 case 0:
425 case 1:
426 case 2:
427 case 3:
428 texture2D = TextureAssets.WireUi[2 + i].Value;
429 break;
430 case 4:
431 texture2D = TextureAssets.WireUi[Settings.ToolMode.HasFlag(Settings.MultiToolMode.Cutter) ? 7 : 6].Value;
432 break;
433 case 5:
434 texture2D = TextureAssets.WireUi[10].Value;
435 break;
436 }
437 Color color = Color.White;
438 Color color2 = Color.White;
439 if (!flag2 && i != 4)
440 {
441 if (flag3)
442 {
443 color2 = new Color(100, 100, 100);
444 color2 = new Color(120, 120, 120);
445 color = new Color(200, 200, 200);
446 }
447 else
448 {
449 color2 = new Color(150, 150, 150);
450 color2 = new Color(80, 80, 80);
451 color = new Color(100, 100, 100);
452 }
453 }
454 Utils.CenteredRectangle(vector4, new Vector2(40f));
455 if (flag3)
456 {
457 if (Main.mouseLeft && Main.mouseLeftRelease)
458 {
459 switch (i)
460 {
461 case 0:
462 Settings.ToolMode ^= Settings.MultiToolMode.Red;
463 break;
464 case 1:
465 Settings.ToolMode ^= Settings.MultiToolMode.Green;
466 break;
467 case 2:
468 Settings.ToolMode ^= Settings.MultiToolMode.Blue;
469 break;
470 case 3:
471 Settings.ToolMode ^= Settings.MultiToolMode.Yellow;
472 break;
473 case 4:
474 Settings.ToolMode ^= Settings.MultiToolMode.Cutter;
475 break;
476 case 5:
477 Settings.ToolMode ^= Settings.MultiToolMode.Actuator;
478 break;
479 }
480 }
481 Main.player[Main.myPlayer].mouseInterface = true;
482 OnWiresMenu = true;
483 }
484 spriteBatch.Draw(value2, vector4, null, color, 0f, value2.Size() / 2f, 1f, SpriteEffects.None, 0f);
485 spriteBatch.Draw(texture2D, vector4, null, color2, 0f, texture2D.Size() / 2f, 1f, SpriteEffects.None, 0f);
486 }
487 if (Main.mouseLeft && Main.mouseLeftRelease && !flag)
488 {
489 active = false;
490 }
491 }
void Draw(Texture2D texture, Vector2 position, Color color)
static double Abs(double value)
static Vector2 GamepadThumbstickRight
static float Dot(Vector2 value1, Vector2 value2)
Definition Vector2.cs:121
static float Distance(Vector2 value1, Vector2 value2)
Definition Vector2.cs:91

References System.Math.Abs(), Terraria.GameContent.UI.WiresUI.WiresRadial.active, Terraria.Utils.CenteredRectangle(), Microsoft.Xna.Framework.Graphics.Color, Microsoft.Xna.Framework.Vector2.Distance(), Microsoft.Xna.Framework.Vector2.Dot(), Microsoft.Xna.Framework.Graphics.SpriteBatch.Draw(), Terraria.GameContent.UI.WiresUI.Settings.DrawToolAllowActuators, Terraria.GameInput.PlayerInput.GamepadThumbstickRight, Microsoft.Xna.Framework.Vector2.Length(), Terraria.Main.mouseLeft, Terraria.Main.mouseLeftRelease, Terraria.Main.MouseScreen, Terraria.Main.myPlayer, Microsoft.Xna.Framework.Vector2.Normalize(), Terraria.GameContent.UI.WiresUI.WiresRadial.OnWiresMenu, Terraria.Main.player, Terraria.GameContent.UI.WiresUI.WiresRadial.position, Terraria.Main.SmartCursorWanted, Terraria.GameContent.UI.WiresUI.Settings.ToolMode, Microsoft.Xna.Framework.Vector2.UnitX, Microsoft.Xna.Framework.Vector2.UnitY, Terraria.GameInput.PlayerInput.UsingGamepad, System.value, Microsoft.Xna.Framework.Graphics.Vector2, Microsoft.Xna.Framework.Color.White, Terraria.GameContent.TextureAssets.WireUi, and Microsoft.Xna.Framework.Vector2.Zero.

Referenced by Terraria.GameContent.UI.WiresUI.WiresRadial.Draw().