/// <summary>
        /// The to attack function.
        /// </summary>
        /// <param name="hit">
        /// The hit.
        /// </param>
        private void CommandToAttack(RaycastHit hit)
        {
            if (hit.transform.GetComponent <Enemy>())
            {
                if (this.theUnit != null)
                {
                    // Attack with a single unit
                    switch (this.theUnit.GetType().ToString())
                    {
                    case "Assets.Scripts.Extractor":
                        Extractor extractor = this.theUnit as Extractor;
                        extractor.Target = (IDamageable)hit.transform.GetComponent(typeof(IDamageable));
                        extractor.TheExtractorFsm.Feed("IdleToBattle");
                        break;

                    case "Assets.Scripts.Miner":
                        Miner miner = this.theUnit as Miner;
                        miner.Target = (IDamageable)hit.transform.GetComponent(typeof(IDamageable));
                        miner.TheMinerFsm.Feed("IdleToBattle");
                        break;
                    }
                }

                // Attack with multiple units
                if (this.Units.Count > 0)
                {
                    foreach (GameObject go in this.Units)
                    {
                        IGather unit = (IGather)go.GetComponent(typeof(IGather));

                        switch (unit.GetType().ToString())
                        {
                        case "Assets.Scripts.Extractor":
                            Extractor extractor = unit as Extractor;
                            extractor.Target = (IDamageable)hit.transform.GetComponent(typeof(IDamageable));
                            extractor.TheExtractorFsm.Feed("IdleToBattle");
                            break;

                        case "Assets.Scripts.Miner":
                            Miner miner = unit as Miner;
                            miner.Target = (IDamageable)hit.transform.GetComponent(typeof(IDamageable));
                            miner.TheMinerFsm.Feed("IdleToBattle");
                            break;
                        }
                    }
                }
            }
            else
            {
                this.CommandToIdle();
            }
        }
        /// <summary>
        /// The command to move function.
        /// </summary>
        private void CommandToMove()
        {
            if (this.theUnit != null & this.theclickedobject != null)
            {
                this.theUnit.SetTheTargetPosition(this.clickdestination);
            }

            if (this.Units.Count > 0)
            {
                foreach (GameObject p in this.Units)
                {
                    IGather g = (IGather)p.GetComponent(typeof(IGather));
                    g.SetTheTargetPosition(this.clickdestination);
                }
            }
        }
        /// <summary>
        /// The command to idle function.
        /// </summary>
        private void CommandToIdle()
        {
            // Send unit back to idle
            if (this.theUnit != null)
            {
                switch (this.theUnit.GetType().ToString())
                {
                case "Assets.Scripts.Extractor":
                    Extractor extractor = this.theUnit as Extractor;
                    extractor.Target = null;
                    extractor.TheExtractorFsm.Feed("BattleToIdle");
                    break;

                case "Assets.Scripts.Miner":
                    Miner miner = this.theUnit as Miner;
                    miner.Target = null;
                    miner.TheMinerFsm.Feed("BattleToIdle");
                    break;
                }
            }

            // Send multiple units back to idle
            if (this.Units.Count > 0)
            {
                foreach (GameObject go in this.Units)
                {
                    IGather unit = (IGather)go.GetComponent(typeof(IGather));

                    switch (unit.GetType().ToString())
                    {
                    case "Assets.Scripts.Extractor":
                        Extractor extractor = unit as Extractor;
                        extractor.Target = null;
                        extractor.TheExtractorFsm.Feed("BattleToIdle");
                        break;

                    case "Assets.Scripts.Miner":
                        Miner miner = unit as Miner;
                        miner.Target = null;
                        miner.TheMinerFsm.Feed("BattleToIdle");
                        break;
                    }
                }
            }
        }
Example #4
0
        void handleOperation4(IList <MPI.Request> reqList_complete)
        {
            int[] arg1_values = new int[channel.RemoteSize];
            int[] arg2_values = new int[channel.RemoteSize];
            int[] arg3_values = new int[channel.RemoteSize];
            int[] arg4_values = new int[channel.RemoteSize];
            int[] arg5_values = new int[channel.RemoteSize];
            int[] arg6_values = new int[channel.RemoteSize];

            foreach (MPI.Request req in reqList_complete)
            {
                MPI.ReceiveRequest  recv_req = (MPI.ReceiveRequest)req;
                MPI.CompletedStatus status   = recv_req.Test();
                Tuple <int, int, int, int, int, int> value = (Tuple <int, int, int, int, int, int>)recv_req.GetValue();
                arg1_values [status.Source] = value.Item1;
                arg2_values [status.Source] = value.Item2;
                arg3_values [status.Source] = value.Item3;
                arg4_values [status.Source] = value.Item4;
                arg5_values [status.Source] = value.Item5;
                arg6_values [status.Source] = value.Item6;
            }

            IGather <int> arg1 = Gather <int> .create(channel, arg1_values);

            IReduce <int> arg2 = Reduce <int> .create(channel, arg2_values, sum, 0);

            IScan <int> arg3 = Scan <int> .create(channel, arg3_values, sum, 0);

            IGather <int> arg4 = Gather <int> .create(channel, arg4_values);

            IReduce <int> arg5 = Reduce <int> .create(channel, arg5_values, sum, 0);

            IScan <int> arg6 = Scan <int> .create(channel, arg6_values, sum, 0);

            int result = service.some_method_4(arg1, arg2, arg3, arg4, arg5, arg6);

            int[] broadcast_result = new int[channel.RemoteSize];
            for (int i = 0; i < broadcast_result.Length; i++)
            {
                broadcast_result [i] = result;
            }

            returnResult(broadcast_result, OPERATION_4);
        }
        /// <summary>
        /// The select units function.
        /// This function is used for unit selection
        /// </summary>
        private void SelectUnits()
        {
            if (Input.GetKeyDown(KeyCode.Mouse0))
            {
                this.ClearSelectedUnits();

                Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

                RaycastHit hit = new RaycastHit();

                if (Physics.Raycast(ray.origin, ray.direction, out hit))
                {
                    if (hit.transform.GetComponent(typeof(IGather)))
                    {
                        this.theUnit = (IGather)hit.transform.GetComponent(typeof(IGather));
                    }
                }
            }
        }
Example #6
0
        void handleOperation1(IList <MPI.Request> reqList_complete)
        {
            int[] arg1_values = new int[channel.RemoteSize];
            int[] arg2_values = new int[channel.RemoteSize];
            int[] arg3_values = new int[channel.RemoteSize];
            int[] arg4_values = new int[channel.RemoteSize];
            int[] arg5_values = new int[channel.RemoteSize];
            int[] arg6_values = new int[channel.RemoteSize];

            foreach (MPI.Request req in reqList_complete)
            {
                MPI.ReceiveRequest  recv_req = (MPI.ReceiveRequest)req;
                MPI.CompletedStatus status   = recv_req.Test();
                Tuple <int, int, int, int, int, int> value = (Tuple <int, int, int, int, int, int>)recv_req.GetValue();
                arg1_values [status.Source] = value.Item1;
                arg2_values [status.Source] = value.Item2;
                arg3_values [status.Source] = value.Item3;
                arg4_values [status.Source] = value.Item4;
                arg5_values [status.Source] = value.Item5;
                arg6_values [status.Source] = value.Item6;
            }

            IGather <int> arg1 = Gather <int> .create(channel, arg1_values);

            IReduce <int> arg2 = Reduce <int> .create(channel, arg2_values, sum, 0);

            IScan <int> arg3 = Scan <int> .create(channel, arg3_values, sum, 0);

            IGather <int> arg4 = Gather <int> .create(channel, arg4_values);

            IReduce <int> arg5 = Reduce <int> .create(channel, arg5_values, sum, 0);

            IScan <int> arg6 = Scan <int> .create(channel, arg6_values, sum, 0);

            service.some_method_1(arg1, arg2, arg3, arg4, arg5, arg6);
        }
 /// <summary>
 /// The clear selected units function.
 /// This clears the list of selected units and the current selected unit
 /// </summary>
 private void ClearSelectedUnits()
 {
     this.Units.Clear();
     this.theUnit          = null;
     this.theclickedobject = null;
 }
Example #8
0
 public IScatter <int> some_method_7(IGather <int> arg1, IReduce <int> arg2, IScan <int> arg3, IGather <int> arg4, IReduce <int> arg5, IScan <int> arg6)
 {
     throw new NotImplementedException();
 }