Ejemplo n.º 1
0
    public static void RegisterPlayer(string _netID, SoldierController _player)
    {
        string _playerID = PLAYER_ID_PREFIX + _netID;

        playerDict.Add(_playerID, _player);
        _player.transform.name = _playerID;
    }
Ejemplo n.º 2
0
    private void OnCollisionWithSoldier(GameObject soldier)
    {
        SoldierController sc = soldier.GetComponent <SoldierController>();

        sc.OnHit(damage);
        Destroy(gameObject);
    }
Ejemplo n.º 3
0
    private void Update()
    {
        if (isFind)
        {
            float             oldDistance   = 1000f;
            SoldierController _targetContrl = null;
            foreach (Collider col in Physics.OverlapSphere(transform.position, SoldierInterface.DetectionRadius))
            {
                if (col.tag == enemyTeamTag.ToString() && col.transform.GetChild(0).GetComponent <SoldierController>().IsAlive)
                {
                    var currentDistance = Vector3.Distance(col.transform.position, GetPositions());
                    if (oldDistance > currentDistance)
                    {
                        oldDistance = currentDistance; _targetContrl = col.transform.GetChild(0).GetComponent <SoldierController>();
                    }
                }
            }
            if (_targetContrl != null)
            {
                isFind       = false;
                targetContrl = _targetContrl;
                AttackInterface.AttackTarget(targetContrl);
            }
        }

        if (isMove && isMoveToTarget && targetContrl != null)
        {
            if (Vector3.Distance(GetPositions(), TargetContr.GetPositions()) <= SoldierInterface.AttackRange)
            {
                isMove         = false;
                isMoveToTarget = false;
                agent.Stop();
                agent.ResetPath();
                AttackInterface.AttackTarget(targetContrl);
            }
            else
            {
                MoveInterface.MoveTo(TargetContr.GetPositions());
            }
        }

        if (isMove && !isMoveToTarget)
        {
            if (agent.remainingDistance <= agent.stoppingDistance)
            {
                isMove = false;
                isFind = true;
            }
        }

        if (targetContrl != null)
        {
            Vector3 lookPos = targetContrl.GetPositions() - GetPositions();
            if (lookPos != Vector3.zero)
            {
                Quaternion rotation = Quaternion.LookRotation(lookPos);
                myTransform.rotation = Quaternion.Slerp(myTransform.rotation, rotation, Time.deltaTime * SoldierInterface.RotationSpeed);
            }
        }
    }
Ejemplo n.º 4
0
 ////////////
 protected virtual void OnTriggerEnter2D(Collider2D collision)
 {
     if (collision.gameObject.tag.Equals("Soldier"))
     {
         SoldierController comCollision = collision.gameObject.GetComponent <SoldierController>();
         if (comCollision.team == Team)
         {
             if (comCollision.endTarget.Equals(this.transform.position))// nếu chạm vào nhà mình là đích
             {
                 this.AddSoidier();
                 Destroy(comCollision.gameObject);
             }
             else // nếu chạm vào nhà mình kp đích
             {
                 // print("đi qua");
             }
         }
         else// nếu chạm vào nhà địch
         {
             if (CurHealth <= 0)
             {
                 ChangeTeam(comCollision.team);
             }
             else
             {
                 ReceiveDamege(comCollision.damege);
             }
             Destroy(comCollision.gameObject);
         }
     }
 }
Ejemplo n.º 5
0
    IEnumerator SimulateProjectile(SoldierController soldierContr)
    {
        Vector3 TargetPos = soldierContr.GetPositions();

        TargetPos.y = 0f;
        GameObject newPlane           = Instantiate(planePrefab, airstrip.position, airstrip.rotation);
        float      targetDistance     = Vector3.Distance(airstrip.position, TargetPos);
        float      projectileVelocity = targetDistance / (Mathf.Sin(2f * angle * Mathf.Deg2Rad) / gravity);

        newPlane.GetComponent <Plane>().AttackPower      = myContrl.SoldierInterface.AttackPower;
        newPlane.GetComponent <Plane>().EnemyTeamTag     = myContrl.EnemyTeamTag;
        newPlane.GetComponent <Plane>().DestinationPoint = TargetPos;
        float Vx             = Mathf.Sqrt(projectileVelocity) * Mathf.Cos(angle * Mathf.Deg2Rad);
        float Vy             = Mathf.Sqrt(projectileVelocity) * Mathf.Sin(angle * Mathf.Deg2Rad);
        float flightDuration = targetDistance / Vx;

        newPlane.transform.rotation = Quaternion.LookRotation(TargetPos - newPlane.transform.position);
        float elapseTime = 0;

        while (elapseTime < flightDuration)
        {
            newPlane.transform.Translate(0, (Vy - (gravity * elapseTime)) * Time.deltaTime, Vx * Time.deltaTime);
            elapseTime += Time.deltaTime;
            yield return(null);
        }
    }
Ejemplo n.º 6
0
 public void AttackSoldier(SoldierController target)
 {
     // Swap again for the attack animation to create more unique soldiers
     SwapAnimationController();
     transform.LookAt(target.gameObject.transform);
     animator.SetTrigger(ATTACK_TRIGGER);
 }
Ejemplo n.º 7
0
 /**
  * If the gun is shootable, shoot
  *
  * @param soldierController: The soldier that is holding a representation of this gun
  */
 public void Shoot(SoldierController soldierController)
 {
     if (currentAmmo != 0 && !IsBusy())
     {
         StartCoroutine(ShootCR(soldierController));
     }
 }
Ejemplo n.º 8
0
    /**
     * This should be called when the gun is shot. This will determine what hit the gun and call the appropriate reaction
     * function for the object that was hit. The logic for this function is based on the raycasting code from Lab 4.
     */
    public static void PhysicsRaycasts(Quaternion shooterRotation)
    {
        Vector3    centreOfScreen    = new Vector3(Screen.width * 0.5f, Screen.height * 0.5f, 0);
        Ray        centreOfScreenRay = Camera.main.ScreenPointToRay(centreOfScreen);
        RaycastHit hit;

        if (Physics.Raycast(centreOfScreenRay, out hit))
        {
            hit.transform.GetComponent <ObjectManagerBase>().photonView.RPC("Hit", PhotonTargets.All, new object[] { hit.point, shooterRotation });

            GameObject hitGameObject = hit.transform.root.gameObject;
            if (hitGameObject.tag == "BlueSoldier" || hitGameObject.tag == "RedSoldier") // i.e. another player
            {
                SoldierController hitSoldierController = hitGameObject.GetComponent <SoldierController>();
                if (!hitSoldierController.GetIsDead()) // Decrease health if not dead
                {
                    hitSoldierController.photonView.RPC("DecreaseHealth", PhotonTargets.AllBuffered, new object[] { 10 });
                    if (hitSoldierController.GetIsDead()) // If they died, increment your kills
                    {
                        GameManager.Instance.IncrementKills();
                    }
                }
                else
                {
                    // Make the ragdoll move in the direction it was shot at
                    hit.transform.GetComponent <ObjectManagerBase>().photonView.RPC("HitRigidbody", PhotonTargets.All, new object[] { hit.point });
                }
            }
            else if (hitGameObject.tag == "Grenade")
            {
                hit.transform.GetComponent <ObjectManagerBase>().photonView.RPC("HitRigidbody", PhotonTargets.All, new object[] { hit.point });
            }
        }
    }
Ejemplo n.º 9
0
        public void Execute()
        {
            var target = TargetSelector.GetTarget(1100, DamageType.Magical);

            if (target == null || !target.IsValidTarget())
            {
                return;
            }

            var predictionR = R.GetPrediction(target);

            if (DmgLib.R(target) > target.Health && R.IsReady() && R.IsInRange(target) && predictionR.HitChance >= HitChance.Medium && Misc.isChecked(ComboMenu, "finisherR"))
            {
                R.Cast(predictionR.CastPosition);
            }

            if (DmgLib.E(target) > target.Health && E.IsReady() && Misc.isChecked(ComboMenu, "finisherE"))
            {
                foreach (var validAzirSoldier in Azir.AzirSoldiers)
                {
                    if (target.Position.Between(_Player.Position, validAzirSoldier.ServerPosition))
                    {
                        E.Cast();
                    }
                }
            }

            if (Misc.isChecked(ComboMenu, "comboSoldiers"))
            {
                SoldierController.AutoPilot(Azir.AzirSoldiers, target);
            }
        }
Ejemplo n.º 10
0
    // Update is called once per frame
    void UpdateSelection()
    {
        if (selectedUnit != null && !selectedUnit.gameObject.activeInHierarchy)
        {
            selectedUnit = null;
        }

        var hoverUnit = FindHoverUnit();

        if (hoverUnit == selectedUnit)
        {
            hoverUnit = null;
        }
        hoverIndicator.gameObject.SetActive(hoverUnit != null);
        if (hoverUnit != null)
        {
            hoverIndicator.position = hoverUnit.transform.position;
        }

        if (Input.GetMouseButtonDown(0))
        {
            selectedUnit = hoverUnit;
            if (selectedUnit != null)
            {
                GameManager.instance.audioSource.PlayOneShot(GameManager.instance.selection);
                IntroManager.instance.OnSelectionMade();
            }
        }

        selectionIndicator.gameObject.SetActive(selectedUnit != null);
        if (selectedUnit != null)
        {
            selectionIndicator.position = selectedUnit.transform.position;
        }
    }
Ejemplo n.º 11
0
    public void SelectedUnit(SelectableUnit selectedUnit)
    {
        if (!this.IsValidCommand(this.nextCommand))
        {
            Debug.LogWarningFormat(this, "{0} wont move. cause {1} has invalid command {2}", selectedUnit.name, this.name, nextCommand);
            return;
        }
        SoldierController soldier = selectedUnit.GetComponent <SoldierController> ();

        if (soldier != null)
        {
            if (soldier.Team != this.playerId)
            {
                return;
            }

            if (this.selectedUnit != null)
            {
                this.selectedUnit.Deselect();
            }

            this.selectedUnit = selectedUnit;
            this.selectedUnit.Select();


            this.gameManager.IssueCommandTo(this.playerId, soldier, this.nextCommand);
            if (this.isNetworkedScene && messanger != null)
            {
                messanger.SendMessage(this.playerId.ToString() + "-" + soldier.id + "-" + this.nextCommand.ToString());
            }
            this.gameManager.EndTurn(this.playerId);
        }
    }
Ejemplo n.º 12
0
    public void Run()
    {
        var input = reader.ReadLine();

        ISoldierController soldierController = new SoldierController();
        AmmunitionFactory  ammunitionFactory = new AmmunitionFactory();
        IOutputGiver       outputGiver       = new Output();
        Army              army              = new Army();
        IWareHouse        wareHouse         = new WareHouse();
        SoldierFactory    soldiersFactory   = new SoldierFactory();
        MissionFactory    missionFactory    = new MissionFactory();
        MissionController missionController = new MissionController(army, wareHouse);

        var gameController = new GameController(soldierController, soldiersFactory, ammunitionFactory, outputGiver, army, wareHouse, missionController, missionFactory);
        var result         = new StringBuilder();

        while (!input.Equals("Enough! Pull back!"))
        {
            try
            {
                gameController.GiveInputToGameController(input);
            }
            catch (ArgumentException arg)
            {
                result.AppendLine(arg.Message);
            }
            input = reader.ReadLine();
        }

        gameController.RequestResult(result);
        writer.WriteLine(result.ToString());
    }
Ejemplo n.º 13
0
    void Update()
    {
        // Only attempt to spawn when the user touches the screen
        if (Input.touchCount <= 0)
        {
            return;
        }

        Touch touch = Input.GetTouch(0);

        // Only attempt to spawn at the start of the touch
        if (touch.phase == TouchPhase.Began)
        {
            // Determine the position of the touch on the plane
            if (raycastManager.Raycast(touch.position, hits, UnityEngine.XR.ARSubsystems.TrackableType.PlaneWithinPolygon))
            {
                // Use the first hit's Pose
                Pose pose = hits[0].pose;

                // Instantiate a new soldier
                int soldierIndex             = Random.Range(0, soldierPrefabs.Length);
                SoldierController newSoldier = Instantiate(soldierPrefabs[soldierIndex], pose.position, pose.rotation);
                newSoldier.transform.Rotate(new Vector3(0, 180, 0));
                soldiers.Add(newSoldier);

                // If this soldier completes a pair, start the attack sequence
                if (soldiers.Count % 2 == 0)
                {
                    BeginAttack();
                }
            }
        }
    }
    void Initialize()
    {
        actions    = character.GetComponent <Actions> ();
        controller = character.GetComponent <SoldierController> ();

        foreach (SoldierController.Arsenal a in controller.arsenal)
        {
            CreateWeaponButton(a.name);
        }

        CreateActionButton("Stay");
        CreateActionButton("Walk");
        CreateActionButton("Run");
        CreateActionButton("Sitting");
        CreateActionButton("Jump");
        CreateActionButton("Aiming");
        CreateActionButton("Attack");
        CreateActionButton("Damage");
        CreateActionButton("Death Reset", "Death");

        cameras = GameObject.FindObjectsOfType <Camera> ();
        var sort = from s in cameras orderby s.name select s;

        foreach (Camera c in sort)
        {
            CreateCameraButton(c);
        }

        camerasPanel.GetChild(0).GetComponent <Button>().onClick.Invoke();
    }
Ejemplo n.º 15
0
 // Use this for initialization
 void Start()
 {
     controller  = GetComponent <SoldierController>();
     weapon      = GetComponentInChildren <Weapon>();
     agentState  = controller.GetState();
     targetState = agentState.enemyState;
 }
Ejemplo n.º 16
0
            void Start()
            {
                controller = GetComponent <SoldierController>();
                InitTree();

                Dispatcher.GetInstance().SendEvent(new ControllerInited(aiTools.agentState.side, GameDefines.ControllerType.BehaviorTree));
            }
Ejemplo n.º 17
0
    public bool CanMakeMove(SoldierController soldier, Direction movementDirection)
    {
        Vector2 soldierPos = soldier.Position;
        Vector2 targetPos  = GetTargetPos(soldierPos, movementDirection);
        var     targetTile = GetTile(targetPos);

        return(targetTile != null && (targetTile.OccupiedBy == null || targetTile.OccupiedBy.Team != soldier.Team));
    }
 public void EndTurn(PlayerController pl)
 {
     foreach (var soldier in pl.Data.Soldiers)
     {
         SoldierController ctrl = soldier.GetComponent <SoldierController>();
         ctrl.Data.ActionsRemaining = ctrl.Data.MaxActionsPerTurn;
     }
 }
Ejemplo n.º 19
0
 public void SetTeam(TeamTag tag)
 {
     SoldierInterface.Tag            = tag;
     transform.parent.gameObject.tag = tag.ToString();
     SelectInterface.ChangeColor(SoldierInterface.Tag);
     targetContrl = null;
     enemyTeamTag = SoldierInterface.Tag == TeamTag.BadGuy ? TeamTag.GoodGuy : TeamTag.BadGuy;
 }
Ejemplo n.º 20
0
    public bool Reset(bool isForce, bool smoothblend = true)
    {
        if (isForce)
        {
            isInit = false;
        }
        if (isInit)
        {
            return(true);
        }
        if (target == null)
        {
            return(false);
        }

        if (CurCameraProperty == null || CurCameraProperty.configType == 0)
        {
            CurCameraProperty = gameObject.GetComponent <CameraProperty>();
            if (CurCameraProperty == null)// || soldierController == null || mouseCtrl==null)
            {
                Trace.LogError("摄像机获取CameraProperty组件");
                return(false);
            }
            CurCameraProperty.SpeedScale = ASpeedGame.Data.GameSettingConfig.GameSettingConfig.Instance.GetGameSettingFloatValue(ASpeedGame.Data.GameSettingConfig.GameSettingIndex.CameraSpeed);
        }

        if (soldier == null || !soldier.gameObject || EntityFactory.MainHero == null)
        {
            return(false);
        }
        target.parent = null;

        soldierController = EntityFactory.MainHero.GetComponent <SoldierController>();
        mouseCtrl         = EntityFactory.MainHero.GetComponent <MouseCtrl>();
        if (!m_Camera)
        {
            m_Camera = Initialize.mainCam;
        }
        camTransform = m_Camera.transform;

        if (camCtrl != null)
        {
            camCtrl.Reset(CurCameraProperty, smoothblend);
            if (!smoothblend)
            {
                apprTran     = m_userCurTran;
                apprFov      = m_userCurFov;
                apprDistance = m_userCurDistance;
            }
        }

        if (EntityFactory.MainHeroView != null && EntityFactory.MainHeroView.Property != null)
        {
            isInit = true;
            return(true);
        }
        return(false);
    }
 public GameController(MissionController missionController, Output output)
 {
     this.Army      = new Dictionary <string, List <Soldier> >();
     this.WearHouse = new Dictionary <string, List <Ammunition> >();
     this.MissionControllerField = missionController;
     this.result            = new StringBuilder();
     this.output            = output;
     this.soldierController = new SoldierController();
 }
Ejemplo n.º 22
0
 public void DeleateSoldier(SoldierController soldier)
 {
     foreach (SoldierController sc in soldiers.ToArray())
     {
         if (soldier == sc)
         {
             soldiers.Remove(sc);
         }
     }
 }
Ejemplo n.º 23
0
    private void BeginAttack()
    {
        // Grab the two most recently created soldiers
        SoldierController first  = soldiers[soldiers.Count - 1];
        SoldierController second = soldiers[soldiers.Count - 2];

        // Tell them to attack each other
        first.AttackSoldier(second);
        second.AttackSoldier(first);
    }
            void Start()
            {
                aiTools    = GetComponent <AiTools>();
                controller = GetComponent <SoldierController>();
                aiTools.Init();
                aiTools.terrain.SetWeightsNormalizationEnabled(true);
                Init();

                Dispatcher.GetInstance().SendEvent(new ControllerInited(aiTools.agentState.side, GameDefines.ControllerType.FuzzyLogic));
            }
Ejemplo n.º 25
0
        public void Execute()
        {
            if (!Misc.isChecked(HarassMenu, "hsSoldiers"))
            {
                return;
            }
            var target = TargetSelector.GetTarget(1100, DamageType.Magical);

            SoldierController.AutoPilot(Azir.AzirSoldiers, target);
        }
Ejemplo n.º 26
0
        // Use this for initialization
        void Start()
        {
            controller   = GetComponent <SoldierController>();
            state        = controller.GetState();
            navMeshAgent = GetComponent <NavMeshAgent>();
            floorMask    = LayerMask.GetMask("Floor");
            path         = new NavMeshPath();

            movementDestinationMarker = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
            movementDestinationMarker.GetComponent <Collider>().enabled = false;
            movementDestinationMarker.transform.localScale = new Vector3(0.4f, 2.0f, 0.4f);
        }
 public GameController()
 {
     this.army      = new Dictionary <string, List <ISoldier> >();
     this.wearHouse = new Dictionary <string, List <IAmmunition> >();
     this.armyClass = new Army();
     this.wareHouse = new WareHouse();
     this.missionControllerField = new MissionController(armyClass, wareHouse);
     this.ammoFactory            = new AmmunitionFactory();
     this.soldiersFactory        = new SoldierFactory();
     this.soldierController      = new SoldierController();
     this.missionFactory         = new MissionFactory();
 }
Ejemplo n.º 28
0
    public bool SoldierUpdate(PlayerId team, SoldierController soldier, Vector2 nextPosition)
    {
        bool soldierOk = true;

        var soldierPos = soldier.Position;
        var enemy      = this.logicalGrid.EncounterEnemy(team, nextPosition);

        if (enemy != null)
        {
            int rnd    = Random.Range(0, 10);
            int winner = rnd % 2;
            if (PlayerIdToInt(team) == winner)
            {
                enemy.Kill();
            }
            else
            {
                soldier.Kill();
                soldierOk = false;
            }
        }

        if (soldierPos.y == gridCreator.gridHeight && PlayerIdToInt(team) == 0)
        {
            teamBFinished = true;
        }
        else if (soldierPos.y == 0 && PlayerIdToInt(team) == 1)
        {
            teamAFinished = true;
        }

        // update game state
        if (teamAFinished && teamBFinished)
        {
            currentGameState = GameState.Draw;
        }
        else if (teamAFinished)
        {
            currentGameState = GameState.TeamAWon;
        }
        else if (teamBFinished)
        {
            currentGameState = GameState.TeamBWon;
        }

        if (currentGameState != GameState.InProgress)
        {
            this.Finish();
        }

        return(soldierOk);
    }
Ejemplo n.º 29
0
    private bool CheckUnit(SoldierController unit)
    {
        bool result = false;

        foreach (SoldierController soldier in unitSelected)
        {
            if (soldier == unit)
            {
                result = true;
            }
        }
        return(result);
    }
Ejemplo n.º 30
0
 void Spawn()
 {
     for (int i = 0; i < number; i++)
     {
         float   num = Random.Range(0, 125);
         Vector3 pos = RandomCircle(this.transform.localPosition, num);
         soldierList.Add(Instantiate(prefab, pos, this.transform.localRotation) as GameObject);
     }
     foreach (GameObject obj in soldierList)
     {
         SoldierController s = obj.GetComponent <SoldierController>();
         soldierComponentList.Add(s);
     }
 }
Ejemplo n.º 31
0
 public SoldierPathManager(SoldierController Soldier, ja2.TerrainTile[] Tiles)
 {
     ja2.TerrainTile previous = null;
     // Move distance
     ushort move_distance = 0;
     // Last direction
     ja2.Map.Direction last_direction = ja2.Map.Direction.NONE;
     // Create action controller
     soldierActions = new ja2.SoldierActionController(Soldier);
     // Actual vertex
     foreach (var tile in Tiles)
     {
         // Not first tile
         if (previous != null)
         {
             // Get actual direction
             ja2.Map.Direction dir = ja2.Map.GetDirection(previous, tile);
             // Direction change
             if (last_direction != dir)
             {
                 // Queue move first if needed
                 if (move_distance > 0)
                 {
                     var action = new ja2.SoldierActionMove(move_distance);
                     soldierActions.Add(action);
                     move_distance = 0;
                 }
                 // Set rotation
                 soldierActions.Add(new ja2.SoldierActionRotate(ja2.LookDirectionConverter.Convert(dir)));
             }
     //				byte rot = (byte)ja2.LookDirectionConverter.Convert(dir);
             // Must be move
             ++move_distance;
             // Update last direction
             last_direction = dir;
         }
         // Update previous tile
         previous = tile;
     }
     // Queue move if was any
     if (move_distance != 0)
     {
         var action = new ja2.SoldierActionMove(move_distance);
         soldierActions.Add(action);
     }
 }