Exemplo n.º 1
0
        protected override void Initialize()
        {
            // TODO: Add your initialization logic here

            base.Initialize();

            this.CopyFromOriginalLevelData();
            tileInHand = TileData.Type.FloorDirtMediumPlain;
        }
 public GameObject GetObject(TileData.Type _type)
 {
     if (_type == type)
     {
         return(this.gameObject);
     }
     else
     {
         return(null);
     }
 }
 public bool ValidateTaype(TileData.Type _type)
 {
     if (_type == type)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Exemplo n.º 4
0
 static public void DrawTileAt(SpriteBatch batch, TileData.Type type, Point tilePos)
 {
     batch.Draw
     (
         tileSheet,
         new Vector2(tilePos.X * TileData.ScaledTileSize.X, tilePos.Y * TileData.ScaledTileSize.Y),
         new Rectangle(typeSourceRect[type].ToPoint(), TileData.TileSize.ToPoint()),
         Color.White,
         0.0f,
         Vector2.Zero,
         Minijam32.Scale,
         SpriteEffects.None,
         0.0f
     );
 }
Exemplo n.º 5
0
        private void JumpToNextAppropriateTile(MouseState mouse, MouseState oldMouse, int jumping)
        {
            TileData.Type oldType = this.tileInHand;

            if (jumping > 0 && (int)oldType + 1 <= (int)TileData.Type.ColorWallRemainderBlue)
            {
                tileInHand = oldType + 1;
            }
            else if (jumping < 0 && (int)oldType - 1 >= 0)
            {
                tileInHand = oldType - 1;
            }
            else
            {
                tileInHand = oldType;
            }
        }
Exemplo n.º 6
0
    public void Tick()
    {
        if (Input.anyKey)
        {
            //On click
            if (Input.GetMouseButtonDown(0) == true)
            {
                mousePositionX = Input.mousePosition.x;
                mousePositionZ = Input.mousePosition.y;

                mouseSpecialX = (mousePositionX - screenWidth * 0.5f) / cameraToScreen * cameraCircuitOffset.y + cameraCircuitOffset.x;
                mouseSpecialZ = (mousePositionZ - screenHeight * 0.5f) / cameraToScreen * cameraCircuitOffset.y + cameraCircuitOffset.z;

                mouseCircuitPositionX = Mathf.RoundToInt(mouseSpecialX * circuitScale + circuitWidth * 0.5f - 0.5f);
                mouseCircuitPositionY = Mathf.RoundToInt(mouseSpecialZ * circuitScale + circuitHeight * 0.5f - 0.5f);

                circuitArray[mouseCircuitPositionX, mouseCircuitPositionY] = new TileData(tileType, tileRotation);

                circuitTexture.Reset(circuitWidth, circuitHeight, circuitArray);

                //compiling logicarrays
                circuitLogicCompiler.Reset(circuitWidth, circuitHeight, circuitArray);

                wireGroupCoordinates  = circuitLogicCompiler.wireGroupCoordinates;
                notGateCoordinates    = circuitLogicCompiler.notGateCoordinates;
                bufferGateCoordinates = circuitLogicCompiler.bufferGateCoordinates;

                wireGroupInputs  = circuitLogicCompiler.wireGroupInputs;
                notGateInputs    = circuitLogicCompiler.notGateInputs;
                bufferGateInputs = circuitLogicCompiler.bufferGateInputs;

                wireGroupLength  = circuitLogicCompiler.wireGroupLength;
                notGateLength    = circuitLogicCompiler.notGateLength;
                bufferGateLength = circuitLogicCompiler.bufferGateLength;

                //resetting outputArray
                outputArrayReset(circuitWidth, circuitHeight);
            }



            //Camera movemet
            if (Input.GetKey(KeyCode.W))
            {
                cameraPos = new Vector3(cameraPos.x, cameraPos.y, (cameraPos.z + cameraSpeed * Time.deltaTime));
                cameraTransform.position = cameraPos;
                cameraCircuitOffset      = cameraPos - circuitPos;
            }
            if (Input.GetKey("s"))
            {
                Camera.main.transform.position = new Vector3(cameraPos.x, cameraPos.y, (cameraPos.z - cameraSpeed * Time.deltaTime));
                cameraPos           = Camera.main.transform.position;
                cameraCircuitOffset = cameraPos - circuitPos;
            }
            if (Input.GetKey("a"))
            {
                Camera.main.transform.position = new Vector3((cameraPos.x - cameraSpeed * Time.deltaTime), cameraPos.y, cameraPos.z);
                cameraPos           = Camera.main.transform.position;
                cameraCircuitOffset = cameraPos - circuitPos;
            }
            if (Input.GetKey("d"))
            {
                Camera.main.transform.position = new Vector3((cameraPos.x + cameraSpeed * Time.deltaTime), cameraPos.y, cameraPos.z);
                cameraPos           = Camera.main.transform.position;
                cameraCircuitOffset = cameraPos - circuitPos;
            }

            //Circuit scaler
            if (Input.GetKeyDown(KeyCode.UpArrow))
            {
                circuitHeight += 1;
                CircuitScaler();
                circuitArray = new TileData[circuitWidth, circuitHeight];

                circuitReset();
            }
            if (Input.GetKeyDown(KeyCode.DownArrow))
            {
                if (circuitHeight > 1)
                {
                    circuitHeight -= 1;
                    CircuitScaler();
                    circuitArray = new TileData[circuitWidth, circuitHeight];
                    circuitReset();
                }
            }
            if (Input.GetKeyDown(KeyCode.LeftArrow))
            {
                if (circuitWidth > 1)
                {
                    circuitWidth -= 1;
                    CircuitScaler();
                    circuitArray = new TileData[circuitWidth, circuitHeight];
                    circuitReset();
                }
            }
            if (Input.GetKeyDown(KeyCode.RightArrow))
            {
                circuitWidth += 1;
                CircuitScaler();
                circuitArray = new TileData[circuitWidth, circuitHeight];
                circuitReset();
            }

            //PlacementType/Rotation
            if (Input.GetKeyDown(KeyCode.Alpha1))
            {
                tileType = TileData.Type.Wire;
            }

            if (Input.GetKeyDown(KeyCode.Alpha2))
            {
                tileType = TileData.Type.NotGate;
            }

            if (Input.GetKeyDown(KeyCode.Alpha3))
            {
                tileType = TileData.Type.BufferGate;
            }

            if (Input.GetKeyDown(KeyCode.Alpha4))
            {
                tileType = TileData.Type.Empty;
            }

            if (Input.GetKeyDown(KeyCode.R))
            {
                if (tileRotation < 3)
                {
                    tileRotation += 1;
                }
                else
                {
                    tileRotation = 0;
                }
            }
        }
        Profiler.BeginSample("logicLoops");
        //logic outputs
        for (int iX = 0; iX < circuitWidth + 1; iX++)
        {
            for (int iY = 0; iY < circuitHeight; iY++)
            {
                inputArray[iX, iY] = outputArray[iX, iY];
            }
        }
        //inputArray = (int[,])outputArray.Clone();
        Profiler.EndSample();
        //wire outputs
        for (int i = 0; i < wireGroupLength; i++)
        {
            int output = 1;
            foreach (TileCoordinates pos in wireGroupInputs[i])
            {
                output *= inputArray[pos.xCoordinate, pos.yCoordinate];
            }
            foreach (TileCoordinates pos in wireGroupCoordinates[i])
            {
                outputArray[pos.xCoordinate, pos.yCoordinate] = output;
            }
        }

        //notGate outputs
        for (int i = 0; i < notGateLength; i++)
        {
            outputArray[notGateCoordinates[i].xCoordinate, notGateCoordinates[i].yCoordinate] = 1 - inputArray[notGateInputs[i].xCoordinate, notGateInputs[i].yCoordinate];
        }

        //bufferGate outputs
        for (int i = 0; i < bufferGateLength; i++)
        {
            outputArray[bufferGateCoordinates[i].xCoordinate, bufferGateCoordinates[i].yCoordinate] = inputArray[bufferGateInputs[i].xCoordinate, bufferGateInputs[i].yCoordinate];
        }

        //outputMesh colors
        for (int iX = 0; iX < circuitWidth; iX++)
        {
            for (int iY = 0; iY < circuitHeight; iY++)
            {
                int outputValue = outputArray[iX, iY];
                outputMeshColors[(iX * circuitHeight + iY) * 4]     = new Color(0, 0, 0, outputValue * 0.5f);
                outputMeshColors[(iX * circuitHeight + iY) * 4 + 1] = new Color(0, 0, 0, outputValue * 0.5f);
                outputMeshColors[(iX * circuitHeight + iY) * 4 + 2] = new Color(0, 0, 0, outputValue * 0.5f);
                outputMeshColors[(iX * circuitHeight + iY) * 4 + 3] = new Color(0, 0, 0, outputValue * 0.5f);
            }
        }
        outputPlane.GetComponent <MeshFilter>().sharedMesh.colors = outputMeshColors;
    }
 public void SetType(TileData.Type _type)
 {
     type = _type;
 }