/*internal void OnRegisterItemType() * { * Console.WriteLine("========================= Registering Item Master"); * itemMaster = GetItemMaster(); * ItemRegister.AddItemMaster(itemMaster); * }*/ public virtual void RegisterSprite() { if (string.IsNullOrEmpty(SpriteKey) || string.IsNullOrEmpty(SpriteFilePath)) { return; } if (!SpriteRegister.IsInRegister(SpriteKey)) { var sprite = new Texture2D(32, 32).LoadFromFile(SpriteFilePath).CreateSpriteFromTexture(1); SpriteRegister.AddToRegister(SpriteKey, sprite); } }
internal static bool Prefix(ItemMaster master, out Sprite __state) { __state = SpriteRegister.GetFromRegister(master.worldSpriteName, ignoreWarnings: true); return(__state ? false : true); }
internal static bool Prefix(string name, out Sprite __state) { __state = SpriteRegister.GetFromRegister(name, ignoreWarnings: true); return(__state ? false : true); }
protected override void OnLoad(EventArgs e) { base.OnLoad(e); SimpleShader = new SimpleShader("Shaders\\SimpleVertexShader.glsl", "Shaders\\SimpleFragmentShader.glsl"); TextureShader = new TextureShader("Shaders\\TexturedVertexShader.glsl", "Shaders\\TexturedFragmentShader.glsl"); TextureShader.UniformSampler2D.Value = 0; MyTexture2D = new Texture2D(); MyTexture2D.Generate(new Bitmap("Resources\\bitmap.png")); var spriteRenderer = new SpriteRenderer(); Random r = new Random(); for (int i = 0; i < 50; i++) { for (int j = 0; j < 50; j++) { var mySprite = new SpriteRegister(MyTexture2D, spriteRenderer, TextureShader); mySprite.Position = new Vector2(50 * i, 50 * j); mySprite.UpdateModelMatrix(); mySprite.Color = new Color4((float)r.NextDouble(), (float)r.NextDouble(), (float)r.NextDouble(), 1f); MySprites.Add(mySprite); } } InseparableCode = new InseparableCode(new[] { true, true, true, false, true }, SimpleShader); //LinearMachine =new MatrixToVisual(new[,] //{ // {true, true, true, }, // {true, true, true,}, // {false, true, true, }, // {true, true, false, }, // {true, true, true, } //}, SimpleShader); //menu = new RadialMenu(SimpleShader); Field = new Field(Width, Height, SimpleShader); menu = new RadialMenu(Field, SimpleShader); var delta = 10; GL.ClearColor(Color.Beige); GL.Enable(EnableCap.Blend); GL.Enable(EnableCap.AlphaTest); GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha); // GL.PointSize(2); SimpleShader.UniformModelMatrix.Value = new Matrix3x2(1, 0, 0, 1, 0, 0); Vector2 coordMouseDown = new Vector2(0, 0); bool mouseScrollClicked = false; Vector2 oldTranslate = Translate; MouseDown += (s, a) => { Vector2 mousePos = PointToMouseCoord(a.Position); Vector2 mouseFieldPos = PositionToFieldCoord(mousePos); if (a.Button == MouseButton.Middle) { coordMouseDown = mousePos; mouseScrollClicked = true; oldTranslate = Translate; } if (a.Button == MouseButton.Left) { InseparableCode.MouseDown(mouseFieldPos); Field.MouseDown(mouseFieldPos); } if (a.Button == MouseButton.Right) { menu.Translate = mouseFieldPos; menu.Visible = true; } }; MouseMove += (s, a) => { Vector2 mousePos = PointToMouseCoord(a.Position); Vector2 mouseFieldPos = PositionToFieldCoord(mousePos); if (mouseScrollClicked) { Translate = oldTranslate + coordMouseDown - mousePos; } InseparableCode.MouseMove(mouseFieldPos); Field.MouseMove(mouseFieldPos); if (menu.Visible) { menu.MouseMove(mouseFieldPos); } }; MouseUp += (s, a) => { Vector2 mousePos = PointToMouseCoord(a.Position); Vector2 mouseFieldPos = PositionToFieldCoord(mousePos); if (a.Button == MouseButton.Left) { Field.MouseUp(mouseFieldPos); } if (a.Button == MouseButton.Middle) { mouseScrollClicked = false; } if (a.Button == MouseButton.Right) { menu.MouseUp(mouseFieldPos); menu.Visible = false; } }; MouseWheel += (s, a) => { Vector2 mousePos = new Vector2(a.Position.X, Height - a.Position.Y); var max = 4.0f; var min = 0.25f; float newScale = Scale + 0.25f * a.Delta / 2; if (newScale > max) { newScale = max; } if (newScale < min) { newScale = min; } var newTranslate = (mousePos + Translate) * newScale / Scale - mousePos; Translate = new Vector2((int)newTranslate.X, (int)newTranslate.Y); Scale = newScale; //this.Animation("Scale", newScale, 100); }; KeyDown += (s, a) => { if (a.Key == Key.Space) { Field.KeyPressSpace(); } else if (a.Key == Key.Delete || a.Key == Key.BackSpace) { Field.KeyDownRemove(); } }; Timer timer = new Timer(1000); timer.Elapsed += (s, a) => { Console.WriteLine($"FPS: {RenderFrequency:F2}, grad = {grad:F2}"); }; timer.AutoReset = true; //timer.Start(); }