Files
SlaveMatrix-SDL/SlaveMatrix/SlaveMatrix/BodyPartClasses/TextBubble.cs
2026-06-14 00:55:31 +02:00

220 lines
7.2 KiB
C#

using System;
using System.Drawing;
using System.Threading;
using System.Threading.Tasks;
using _2DGAMELIB;
namespace SlaveMatrix
{
public class TextBubble
{
public bool = true;
public ;
public TextBlock TextBlock;
public bool Dis;
public Motion ;
public Color GetHitColor => TextBlock.ShapePartT.HitColor;
public string Text
{
get
{
return TextBlock.Text;
}
set
{
= true;
if (Dis)
{
TextBlock.Done = delegate
{
.Max = TextBlock.Text.Length * 0.125 + 1.0;
.Start();
};
}
TextBlock.Text = value;
}
}
public TextBubble(RenderArea Are, bool , Font Font, double TextSize, string Text, Color TextColor, Color ShadColor, Color BackColor, double Speed, bool Dis, Color FeedColor, Action<TextBlock> Action)
{
= new (Are.DisplayUnitScale);
.SetHitFalse();
. = ;
.CD. = new Color2(ref BackColor, ref ColorHelper.Empty);
.X0Y0_吹出しCP.Setting();
double num = 1.35;
double num2 = 0.75;
.C = DataConsts.Vec2DUnitY * 0.005;
.B = num * 1.1;
.YB = num2;
TextBlock = new TextBlock("TextBlock", DataConsts.Vec2DZero, 0.1, .B, 0.63 * num * num2, Font, TextSize, 25, Text, TextColor, ShadColor, Color.Transparent, Speed, FeedColor, Action);
TextBlock.Feed.OP.OutlineFalse();
TextBlock.ShapePartT.BasePointBase = TextBlock.ShapePartT.OP.GetCenter().AddY(0.04);
this.Dis = Dis;
if (Dis)
{
= false;
int pa = .X0Y0_吹出し.PenColor.A;
int ba = .X0Y0_吹出し.BrushColor.A;
int ta = TextColor.A;
int sa = ShadColor.A;
double v;
= new Motion(0.0, 1.0)
{
BaseSpeed = 1.0,
OnStart = delegate
{
},
OnUpdate = delegate(Motion m)
{
if (m.Value < m.Max - 1)
return;
v = (1 + m.Value - m.Max).Inverse();
.X0Y0_吹出し.PenColor = Color.FromArgb((int)((double)pa * v), .X0Y0_吹出し.PenColor);
.X0Y0_吹出し.BrushColor = Color.FromArgb((int)((double)ba * v), .X0Y0_吹出し.BrushColor);
TextBlock.ShapePartT.TextColor = Color.FromArgb((int)((double)ta * v), TextBlock.ShapePartT.TextColor);
TextBlock.ShapePartT.ShadColor = Color.FromArgb((int)((double)sa * v), TextBlock.ShapePartT.ShadColor);
},
OnReach = delegate(Motion m)
{
m.End();
},
OnLoop = delegate
{
},
OnEnd = delegate
{
= false;
.X0Y0_吹出し.PenColor = Color.FromArgb(pa, .X0Y0_吹出し.PenColor);
.X0Y0_吹出し.BrushColor = Color.FromArgb(ba, .X0Y0_吹出し.BrushColor);
TextBlock.ShapePartT.TextColor = Color.FromArgb(ta, TextBlock.ShapePartT.TextColor);
TextBlock.ShapePartT.ShadColor = Color.FromArgb(sa, TextBlock.ShapePartT.ShadColor);
}
};
}
}
public TextBubble(RenderArea Are, bool , Font Font, double TextSize, string Text, Color TextColor, Color ShadColor, Color BackColor, double Speed, bool Dis)
{
= new (Are.DisplayUnitScale);
.SetHitFalse();
. = ;
.CD. = new Color2(ref BackColor, ref ColorHelper.Empty);
.X0Y0_吹出しCP.Setting();
double num = 1.35;
double num2 = 0.75;
.C = DataConsts.Vec2DUnitY * 0.005;
.B = num * 1.1;
.YB = num2;
TextBlock = new TextBlock("TextBlock", DataConsts.Vec2DZero, 0.1, .B, 0.63 * num * num2, Font, TextSize, 25, Text, TextColor, ShadColor, Color.Transparent, Speed);
TextBlock.ShapePartT.BasePointBase = TextBlock.ShapePartT.OP.GetCenter().AddY(0.04);
this.Dis = Dis;
if (Dis)
{
= false;
int pa = .X0Y0_吹出し.PenColor.A;
int ba = .X0Y0_吹出し.BrushColor.A;
int ta = TextColor.A;
int sa = ShadColor.A;
double v;
= new Motion(0.0, 1.0)
{
BaseSpeed = 1.0,
OnStart = delegate
{
},
OnUpdate = delegate(Motion m)
{
//After full training slave if i tried to train again game crahes here :3
v = (m.Value >= 0) ? m.Value : m.Value.Inverse();
var penAlpha = (int)((double)pa * v);
var brushAlpha = (int)((double)ba * v);
var textAlpha = (int)((double)ta * v);
var shadeAlpha = (int)((double)sa * v);
var correctPenAlpha = (penAlpha > 255) ? 255 : penAlpha;
var correctBrushAlpha = (brushAlpha > 255) ? 255 : brushAlpha;
var correctTextAlpha = (textAlpha > 255) ? 255 : textAlpha;
var correctShadeAlpha = (shadeAlpha > 255) ? 255 : shadeAlpha;
.X0Y0_吹出し.PenColor = Color.FromArgb(correctPenAlpha, .X0Y0_吹出し.PenColor);
.X0Y0_吹出し.BrushColor = Color.FromArgb(correctBrushAlpha, .X0Y0_吹出し.BrushColor);
TextBlock.ShapePartT.TextColor = Color.FromArgb(correctTextAlpha, TextBlock.ShapePartT.TextColor);
TextBlock.ShapePartT.ShadColor = Color.FromArgb(correctShadeAlpha, TextBlock.ShapePartT.ShadColor);
},
OnReach = delegate(Motion m)
{
m.End();
},
OnLoop = delegate
{
},
OnEnd = delegate
{
= false;
.X0Y0_吹出し.PenColor = Color.FromArgb(pa, .X0Y0_吹出し.PenColor);
.X0Y0_吹出し.BrushColor = Color.FromArgb(ba, .X0Y0_吹出し.BrushColor);
TextBlock.ShapePartT.TextColor = Color.FromArgb(ta, TextBlock.ShapePartT.TextColor);
TextBlock.ShapePartT.ShadColor = Color.FromArgb(sa, TextBlock.ShapePartT.ShadColor);
}
};
}
}
public void SetHitColor(ModeEventDispatcher Med)
{
TextBlock.SetHitColor(Med);
}
public void (JointS )
{
.();
();
}
public void Down(Color HitColor)
{
TextBlock.Down(ref HitColor);
}
public void Up(Color HitColor)
{
TextBlock.Up(ref HitColor);
}
public void ()
{
.P();
TextBlock.Position = .X0Y0_吹出し.ToGlobal(.X0Y0_吹出し.JP[0].Joint);
}
public void Draw(RenderArea Are, FPS FPS)
{
TextBlock.Progression(FPS);
if (Dis)
{
.GetValue(FPS);
}
if ()
{
.Body.Draw(Are);
Are.Draw(TextBlock.PartGroup);
}
}
public void Dispose()
{
.Dispose();
TextBlock.Dispose();
}
}
}