public Menu() { Shader plainShader = new Shader.Plain(new Color8(0, 0, 0), new Color8(0, 0, 0), ' '); Image plainImage = new Image.Rectangle(plainShader, new Vector2d16(600, 300), 0); Shader logoShader = new Shader.TextureSymbol(ResourceLoader.LoadResource <Atlas16>(@"Textures\mainMenu.bms"), new Vector2d16(0, 0), new Vector2d16(51, 5)); Image logo = new Image.Rectangle(logoShader, new Vector2d16(51, 5), 1); //Image mainMenuImage = new Image.Rectangle(mainMenu, new Vector2d16(30, 15), 126); Image team = new Image.Rectangle(new Shader.RichText("Made by Code0", new Color8(60, 60, 60)), new Vector2d16(14, 1), 200); Shader cursorShader = new Shader.Plain(new Color8(0, 0, 255), Color8.GetNull(), '>'); Image cursor = new Image.Rectangle(cursorShader, new Vector2d16(1, 1), 127); Shape circle = new Shape.Circle(1); var tmp = new GameObject[] { new VisualObject(new Vector2d16(-100, -50), plainImage), new VisualObject(new Vector2d16(Config.screenWidth / 2 - 25, Config.screenHeight / 5), logo), new VisualObject(new Vector2d16(Config.screenWidth / 2 - 8, Config.screenHeight / 5 + 8), newGame), new VisualObject(new Vector2d16(Config.screenWidth / 2 - 4, Config.screenHeight / 5 + 10), loadGame), new VisualObject(new Vector2d16(Config.screenWidth / 2 - 4, Config.screenHeight / 5 + 12), test), new VisualObject(new Vector2d16(Config.screenWidth / 2 - 5, Config.screenHeight / 5 + 14), mapEditor), new VisualObject(new Vector2d16(Config.screenWidth / 2 - 4, Config.screenHeight / 5 + 16), settings), new VisualObject(new Vector2d16(Config.screenWidth / 2 - 3, Config.screenHeight / 5 + 18), credits), new VisualObject(new Vector2d16(Config.screenWidth / 2 - 2, Config.screenHeight / 5 + 20), exit), new VisualObject(new Vector2d16(Config.screenWidth / 2 - 7, Config.screenHeight / 5 * 4), team) }; map = new Map("Test", Renderer.Dimensions, 0, tmp); hero = new KinematicObject(new Vector2d16(Config.screenWidth / 2 - 10, Config.screenHeight / 5 + 8), circle, cursor); }
public Credits() { Shader plainShader = new Shader.Plain(new Color8(0, 0, 0), new Color8(0, 0, 0), ' '); Image plainImage = new Image.Rectangle(plainShader, new Vector2d16(600, 300), 0); Shader logoShader = new Shader.TextureSymbol(ResourceLoader.LoadResource <Atlas16>(@"Textures\mainMenu.bms"), new Vector2d16(0, 12), new Vector2d16(53, 16)); Image logo = new Image.Rectangle(logoShader, new Vector2d16(54, 4), 1); Shader cursorShader = new Shader.Plain(new Color8(0, 0, 255), Color8.GetNull(), ' '); Image cursor = new Image.Rectangle(cursorShader, new Vector2d16(1, 1), 127); Shape circle = new Shape.Circle(1); var tmp = new GameObject[] { new VisualObject(new Vector2d16(-100, -50), plainImage), new VisualObject(new Vector2d16(Config.screenWidth / 2 - 25, Config.screenHeight / 5), logo), new VisualObject(new Vector2d16(Config.screenWidth / 2 - 28, Config.screenHeight / 2.5), credits) }; map = new Map("Test", Renderer.Dimensions, 0, tmp); hero = new KinematicObject(new Vector2d16(0, 0), circle, cursor); }
public override Fragment8 Compute(Vector2d16 current, Vector2d16 start, Vector2d16 end) { if (text.Length <= current._2 || text[current._2].Length <= current._1) { return(Fragment8.GetNull()); } return(new Fragment8(new Color8(255, 255, 255), Color8.GetNull(), text[current._2][current._1])); }
internal Color8 Delinearize(Color8 color) { return(new( Delinearize(color.R), Delinearize(color.G), Delinearize(color.B), color.A )); }
internal Color8 Linearize(Color8 color) { return(new( Linearize(color.R), Linearize(color.G), Linearize(color.B), color.A )); }
public Plain( Color8 foreground, Color8 background, char symbol ) { this.foreground = foreground; this.background = background; this.symbol = symbol; }
public override Fragment8 Compute(Vector2d16 current, Vector2d16 start, Vector2d16 end) { char ch = (char)atlas.GetData(this.start - start + current); if (ch == 0) { return(Fragment8.GetNull()); } return(new Fragment8(new Color8(255, 255, 255), Color8.GetNull(), ch)); }
public Gradient( Color8 foregroundStart, Color8 foregroundEnd, Color8 backgroundStart, Color8 backgroundEnd, char symbol ) { this.foregroundStart = foregroundStart; this.foregroundEnd = foregroundEnd; this.backgroundStart = backgroundStart; this.backgroundEnd = backgroundEnd; this.symbol = symbol; }
/// <summary> /// Extended class for text objects.<br/><br/> /// Alignment can be set by putting /l, /r, /c at the beginning of the string.<br/><br/> /// Styles can be added by encapsulating text with tags.<br/> /// # - bold*<br/> /// | - faint*<br/> /// / - italic*<br/> /// _ - underlined<br/> /// ^ - blink*<br/> /// % - cross-out*<br/> /// ~ - video inverse<br/> /// @ - fraktur*<br/><br/> /// /// <i>*Not supported in windows 10 console.</i> /// </summary> public RichText(string text, Color8 foreground) { int max = text.Length; if (text[0] == '/') { switch (text[1]) { case 'c': case 'r': case 'l': this.text = new string[] { text.Substring(2).Trim() }; break; } } else { this.text = new string[] { text }; } this.foreground = foreground; }
/// <summary> /// Extended class for text objects.<br/><br/> /// Alignment can be set by putting /l, /r, /c at the beginning of the string.<br/><br/> /// Styles can be added by encapsulating text with tags.<br/> /// # - bold*<br/> /// | - faint*<br/> /// / - italic*<br/> /// _ - underlined<br/> /// ^ - blink*<br/> /// % - cross-out*<br/> /// ~ - video inverse<br/> /// @ - fraktur*<br/><br/> /// /// <i>*Not supported in windows 10 console.</i> /// </summary> public RichText(string[] text, Color8 foreground) { int max = 0; foreach (string str in text) { if (str.Length > max) { max = str.Length; } } for (int i = 0; i < text.Length; ++i) { if (text[i][0] == '/') { switch (text[i][1]) { case 'c': text[i] = text[i].Substring(2).Trim(); text[i] = text[i].PadLeft((max - text[i].Length) / 2 + text[i].Length).PadRight((max - text[i].Length) / 2 + text[i].Length); break; case 'r': text[i] = text[i].Substring(2).Trim(); text[i] = text[i].PadLeft(max); break; case 'l': text[i] = text[i].Substring(2).Trim(); text[i] = text[i].PadRight(max); break; } } } this.text = text; this.foreground = foreground; }
public override Fragment8 Compute(Vector2d16 current, Vector2d16 start, Vector2d16 end) { if (text.Length <= current._2 || text[current._2].Length <= current._1) { return(Fragment8.GetNull()); } switch (text[current._2][current._1]) { case '#': //Bold return(new Fragment8(foreground, Color8.GetNull(), (char)0xDB80)); case '|': //Faint return(new Fragment8(foreground, Color8.GetNull(), (char)0xDB81)); case '/': //Italic return(new Fragment8(foreground, Color8.GetNull(), (char)0xDB82)); case '_': //Underlined return(new Fragment8(foreground, Color8.GetNull(), (char)0xDB83)); case '^': //Blink return(new Fragment8(foreground, Color8.GetNull(), (char)0xDB84)); case '%': //Crossed-out return(new Fragment8(foreground, Color8.GetNull(), (char)0xDB85)); case '~': //Video inverse return(new Fragment8(foreground, Color8.GetNull(), (char)0xDB86)); case '@': //Fraktur return(new Fragment8(foreground, Color8.GetNull(), (char)0xDB87)); default: return(new Fragment8(foreground, Color8.GetNull(), text[current._2][current._1])); } }
private static unsafe void ProcessSprite() { uint scale = Scale; var spriteSize = SpriteSize; var scaledSize = spriteSize * scale; var spriteDataArray = SpriteData !.Clone() as Color16[]; var spriteData = spriteDataArray.AsSpan(); if (GammaCorrection) { SpriteMaster.Resample.Passes.GammaCorrection.Linearize(spriteData, spriteSize); } if (AlphaPremultiplication) { SpriteMaster.Resample.Passes.PremultipliedAlpha.Reverse(spriteData, spriteSize); } if (scale != 1) { var xBRZInterface = new SpriteMaster.Resample.Scalers.xBRZ.Scaler.ScalerInterface(); spriteData = xBRZInterface.Apply( new SpriteMaster.Resample.Scalers.xBRZ.Config( wrapped: Vector2B.False, luminanceWeight: LuminanceWeight, gammaCorrected: !GammaCorrection, equalColorTolerance: EqualColorTolerance, dominantDirectionThreshold: DominantDirectionThreshold, steepDirectionThreshold: SteepDirectionThreshold, centerDirectionBias: CenterDirectionBias ), scaleMultiplier: scale, sourceData: spriteData, sourceSize: spriteSize, targetData: null, targetSize: scaledSize ); spriteSize = scaledSize; } if (AlphaPremultiplication) { SpriteMaster.Resample.Passes.PremultipliedAlpha.Apply(spriteData, spriteSize); } if (GammaCorrection) { SpriteMaster.Resample.Passes.GammaCorrection.Delinearize(spriteData, spriteSize); } var resampledData = Color8.Convert(spriteData); Bitmap resampledBitmap; fixed(Color8 *ptr = resampledData) { int stride = spriteSize.Width * sizeof(Color8); resampledBitmap = new Bitmap(spriteSize.Width, spriteSize.Height, stride, PixelFormat.Format32bppPArgb, (IntPtr)ptr); } var oldBitmap = PreviewBitmap; PreviewBitmap = resampledBitmap; oldBitmap?.Dispose(); }
public Fragment8(Color8 foreground, Color8 background, char symbol) { this.foreground = foreground; this.background = background; this.symbol = symbol; }