Exemplo n.º 1
0
        public override void Pickup()
        {
            base.Pickup();
            pickupPosition = transform.position;

            if (indicator != null && indicator.id == 50)
            {
                indicator.Delinker();
            }
            indicator           = RequestLineMarker(1, false, new Vector3[] { Vector3.zero, Vector3.forward * Battle.main.defender.board.tiles.GetLength(0) * 2.05f }, new int[][] { new int[] { 1 }, new int[0] }, 0, linesMaterial);
            indicator.Delinker += () => { indicator = null; };
            indicator.transform.SetParent(transform, false);


            int[][]   areaMarkerConnections = new int[][] { new int[] { 1 }, new int[] { 2 }, new int[] { 3 }, new int[] { 4 }, new int[0] };
            Vector3[] areaMarkerNodes       = new Vector3[5];
            areaMarkerNodes[0]    = -Battle.main.defender.board.tiles.GetLength(0) / 2.0f * new Vector3(1, 0, 1);
            areaMarkerNodes[1]    = areaMarkerNodes[0];
            areaMarkerNodes[1].x *= -1;
            areaMarkerNodes[2]    = areaMarkerNodes[1] + Vector3.back;
            areaMarkerNodes[3]    = areaMarkerNodes[0] + Vector3.back;
            areaMarkerNodes[4]    = areaMarkerNodes[0];

            for (int i = 0; i < 2; i++)
            {
                Vector3[] finalNodes = new Vector3[5];
                System.Array.Copy(areaMarkerNodes, finalNodes, finalNodes.Length);

                if (i == 1)
                {
                    for (int x = 0; x < areaMarkerNodes.Length; x++)
                    {
                        Vector3 initialPosition = finalNodes[x];
                        finalNodes[x] = new Vector3(initialPosition.z, 0, initialPosition.x);
                    }
                }

                for (int x = 0; x < finalNodes.Length; x++)
                {
                    finalNodes[x] += Battle.main.defender.transform.position + Vector3.up * MiscellaneousVariables.it.boardUIRenderHeight;
                }

                Highlighterline areaMarker = RequestLineMarker(2 + i, false, finalNodes, areaMarkerConnections, 0, linesMaterial);
                usageHighlighters.Add(areaMarker);
            }
        }
Exemplo n.º 2
0
        protected override void RefreshEffectRepresentation()
        {
            base.RefreshEffectRepresentation();
            TorpedoAttack attack = effect as TorpedoAttack;

            if (indicator == null)
            {
                indicator           = RequestLineMarker(1, false, new Vector3[] { Vector3.zero, Vector3.forward * Battle.main.defender.board.tiles.GetLength(0) * 2.05f }, new int[][] { new int[] { 1 }, new int[0] }, 0, linesMaterial);
                indicator.Delinker += () => { indicator = null; };
                indicator.transform.SetParent(transform, false);
            }

            bool horizontal        = attack.target.torpedoHeading.x != 0;
            bool directionPositive = attack.target.torpedoHeading.x + attack.target.torpedoHeading.y > 0;

            indicator.transform.rotation = Quaternion.Euler(0, horizontal ? (directionPositive ? 90 : 270) : (directionPositive ? 0 : 180), 0);
            hookedPosition = attack.target.torpedoDropPoint.transform.position + new Vector3(-attack.target.torpedoHeading.x, MiscellaneousVariables.it.boardUIRenderHeight + height, -attack.target.torpedoHeading.y);
        }
Exemplo n.º 3
0
        protected override void RefreshEffectRepresentation()
        {
            base.RefreshEffectRepresentation();
            AircraftRecon recon          = effect as AircraftRecon;
            int           actualPosition = recon.target % (Battle.main.defender.board.tiles.GetLength(0) - 1);
            bool          lineVertical   = recon.target == actualPosition;

            if (indicator == null)
            {
                indicator           = RequestLineMarker(50, true, new Vector3[] { Vector3.zero, Vector3.forward * 0.925f * Battle.main.defender.board.tiles.GetLength(0), Vector3.forward * 1.025f * Battle.main.defender.board.tiles.GetLength(0) + Vector3.right * (lineVertical ? recon.result : -recon.result) * 2, Vector3.forward * 1.125f * Battle.main.defender.board.tiles.GetLength(0), Vector3.forward * 2.05f * Battle.main.defender.board.tiles.GetLength(0) }, new int[][] { new int[] { 1 }, new int[] { 2 }, new int[] { 3 }, new int[] { 4 }, new int[0] }, 0, linesMaterial);
                indicator.Delinker += () => { indicator = null; };
                indicator.transform.SetParent(transform, false);
            }

            indicator.transform.rotation = Quaternion.Euler(0, lineVertical ? 0 : 90, 0);


            Vector3 startingPosition = Battle.main.defender.board.tiles[0, 0].transform.position - new Vector3(1, 0, 1) * 1f + Vector3.up * (MiscellaneousVariables.it.boardUIRenderHeight + 0.005f);

            hookedPosition = startingPosition + new Vector3(lineVertical ? 1 : 0, 0, lineVertical ? 0 : 1) * (actualPosition + 1.5f);
        }
Exemplo n.º 4
0
        protected Highlighterline RequestLineMarker(int id, bool overrideSettingsOfExisting, Vector3[] nodes, int[][] connections, int startingNode, Material material)
        {
            Highlighterline line = FindAgent(x =>
            {
                Highlighterline l = x as Highlighterline;
                return(l.owner == this && l.id == id);
            }, typeof(Highlighterline)) as Highlighterline;

            if (line)
            {
                LinkAgent(line, true);
                if (overrideSettingsOfExisting)
                {
                    line.lineWidth         = 1.00f - MiscellaneousVariables.it.boardTileSideLength;
                    line.lineMaterial      = material;
                    line.extensionMaxSpeed = 20f;
                    line.extensionTime     = 0.18f;

                    line.Set(nodes, connections, startingNode);
                }
            }
            else
            {
                line = new GameObject("Highlighterline").AddComponent <Highlighterline>();
                LinkAgent(line, true);

                line.lineWidth         = 1.00f - MiscellaneousVariables.it.boardTileSideLength;
                line.lineMaterial      = material;
                line.extensionMaxSpeed = 20f;
                line.extensionTime     = 0.18f;
                line.id    = id;
                line.owner = this;

                line.Set(nodes, connections, startingNode);
            }

            line.Delinker += () => { line.Invoke("DestroyAgent", 3 * line.extensionTime); };

            return(line);
        }