Example #1
0
        /*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);
            }
        }
Example #2
0
 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);
 }
Example #4
0
        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();
        }