Example #1
0
        private void UpdateBlock(int x, int y)
        {
            BitmapData data         = BackBuffer.LockBits(new Rectangle(x * 16, y * 16, 16, 16), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);
            int        tileValue    = CurrentWorld.LevelData[x, y];
            int        PaletteIndex = tileValue / 0x40;
            Block      b            = CurrentDefiniton[tileValue];

            RenderTile(_CurrentTable[b[0, 0]], 0, 0, PaletteIndex, data);
            RenderTile(_CurrentTable[b[0, 1]], 0, 8, PaletteIndex, data);
            RenderTile(_CurrentTable[b[1, 0]], 8, 0, PaletteIndex, data);
            RenderTile(_CurrentTable[b[1, 1]], 8, 8, PaletteIndex, data);

            WorldPointer p = CurrentWorld.Pointers.Find(pt => pt.X == x && pt.Y == y);

            if (p != null)
            {
                RenderSpecialTileAlpha(_SpecialTable[0xA2], 0, 0, 5, data, 1.0);
                RenderSpecialTileAlpha(_SpecialTable[0xB2], 0, 8, 5, data, 1.0);
                RenderSpecialTileAlpha(_SpecialTable[0xA3], 8, 0, 5, data, 1.0);
                RenderSpecialTileAlpha(_SpecialTable[0xB3], 8, 8, 5, data, 1.0);
            }

            BackBuffer.UnlockBits(data);

            if (!DelayDrawing)
            {
                Redraw(new Rectangle(x * 16, y * 16, 16, 16));
            }
        }
Example #2
0
        private void HandlePointerClick(MouseButtonEventArgs e)
        {
            Point       tilePoint    = e.GetPosition(WorldRenderSource);
            List <Rect> updatedRects = new List <Rect>();

            if (e.LeftButton == MouseButtonState.Pressed || e.RightButton == MouseButtonState.Pressed)
            {
                if (e.RightButton == MouseButtonState.Pressed)
                {
                    if (_world.Pointers.Count < 10)
                    {
                        _selectedPointer = new WorldPointer()
                        {
                            X = (int)tilePoint.X / 16,
                            Y = (int)tilePoint.Y / 16
                        };

                        _world.Pointers.Add(_selectedPointer);
                        updatedRects.Add(_selectedPointer.BoundRectangle);
                    }
                }
                else
                {
                    _selectedPointer = _world.Pointers.Where(o => o.BoundRectangle.Contains(tilePoint.X, tilePoint.Y)).FirstOrDefault();
                }

                if (_selectedPointer != null)
                {
                    _dragStartPoint = tilePoint;
                    SetSelectionRectangle(_selectedPointer.BoundRectangle);
                    originalPointerPoint = new Point(_selectedPointer.X * 16, _selectedPointer.Y * 16);
                    _isDragging          = true;

                    PointerEditor.Visibility = Visibility.Visible;
                    PointerEditor.SetPointer(_selectedPointer);
                }
                else
                {
                    PointerEditor.Visibility = Visibility.Collapsed;
                    ClearSelectionRectangle();
                }

                Update(updatedRects);
            }
        }
Example #3
0
        private void FullRender()
        {
            if (BackBuffer == null)
            {
                return;
            }

            if (_CurrentTable == null || _CurrentPalette == null || _CurrentDefiniton == null)
            {
                Graphics.FromImage(BackBuffer).Clear(Color.Black);
                return;
            }

            BitmapData data = BackBuffer.LockBits(new Rectangle(0, 0, BackBuffer.Width, BackBuffer.Height), ImageLockMode.WriteOnly, PixelFormat.Format32bppArgb);

            for (int i = 0; i < _CurrentWorld.Height; i++)
            {
                for (int j = 0; j < _CurrentWorld.Width; j++)
                {
                    int   tileValue    = CurrentWorld.LevelData[j, i];
                    int   PaletteIndex = tileValue / 0x40;
                    Block b            = CurrentDefiniton[tileValue];
                    RenderTile(_CurrentTable[b[0, 0]], j * 16, i * 16, PaletteIndex, data);
                    RenderTile(_CurrentTable[b[0, 1]], j * 16, i * 16 + 8, PaletteIndex, data);
                    RenderTile(_CurrentTable[b[1, 0]], j * 16 + 8, i * 16, PaletteIndex, data);
                    RenderTile(_CurrentTable[b[1, 1]], j * 16 + 8, i * 16 + 8, PaletteIndex, data);

                    if (_ShowPointers)
                    {
                        WorldPointer p = CurrentWorld.Pointers.Find(pt => (pt.X == j && pt.Y == i));
                        if (p != null)
                        {
                            RenderSpecialTileAlpha(_SpecialTable[0xA2], j * 16, i * 16, 5, data, 1.0);
                            RenderSpecialTileAlpha(_SpecialTable[0xB2], j * 16, i * 16 + 8, 5, data, 1.0);
                            RenderSpecialTileAlpha(_SpecialTable[0xA3], j * 16 + 8, i * 16, 5, data, 1.0);
                            RenderSpecialTileAlpha(_SpecialTable[0xB3], j * 16 + 8, i * 16 + 8, 5, data, 1.0);
                        }
                    }
                }
            }
            BackBuffer.UnlockBits(data);
        }
Example #4
0
    private void Awake()
    {
        if (Instance == null)
        {
            Instance = this;
        }
        else
        {
            gameObject.SetActive(false);
            Debug.LogWarning("More than one Player Input instance. Script disabled on " + gameObject.name);
        };
        playerCamera = Camera.main;
        if (playerPointer == null)
        {
            playerPointer = FindObjectOfType <WorldPointer>();
        }

        if (cursorLocked)
        {
            Cursor.lockState = CursorLockMode.Locked;
        }
    }
Example #5
0
 public void SetPointer(WorldPointer pointer)
 {
     _pointer = pointer;
     LevelList.SelectedValue = pointer.LevelId;
 }
Example #6
0
 private void Awake()
 {
     activePointer  = FindObjectOfType <WorldPointer>();
     essenceFactory = new EssenceFactory(essenceSets, transform);
 }