void TransferOwnership(Unit babushka, RTSController first, RTSController second) { if (babushka.owner == first) { if (first.enabled) { //Debug.Log("FIRST SERVER TO CLIENT"); ServerToClient(babushka, first, second); } else { //Debug.Log("FIRST CLIENT TO SERVER"); ClientToServer(babushka, second, first); } } else { if (second.enabled) { //Debug.Log("SECOND SERVER TO CLIENT"); ServerToClient(babushka, second, first); } else { //Debug.Log("SECOND CLIENT TO SERVER"); ClientToServer(babushka, first, second); } } }
public void ApplyDamage(Player targetPlayer, RTSController from) { targetPlayer.Hp -= this.damage; targetPlayer.DamageCount += this.damage; if(from != null) this.ApplyKnockBack(targetPlayer, from); this.ApplyCooldown(); }
void ClientToServer(Unit babushka, RTSController serverRts, RTSController clientRts) { // Take it from the client clientRts.ownedUnits.Remove(babushka); clientRts.RpcTakeUnit(babushka.name); // Give it to the server serverRts.ownedUnits.Add(babushka); babushka.owner = serverRts; }
// Use this for initialization void Start() { var rtsController = GetComponent <RTSController>(); if (isLocalPlayer) { // Setting up my own rts controller as a both server and a client rtsController.enabled = true; rtsController.selectionBox = GameObject.Find("SelectionBox").GetComponent <RectTransform>(); rtsController.team1Score = GameObject.Find("Team1 Score").GetComponent <Text>(); rtsController.team2Score = GameObject.Find("Team2 Score").GetComponent <Text>(); var team = GameObject.FindGameObjectsWithTag(isServer ? "Team1" : "Team2"); foreach (var unitGo in team) { var unit = unitGo.GetComponent <Unit>(); rtsController.ownedUnits.Add(unit); unit.owner = rtsController; } if (isServer) { player1 = rtsController; } } else { if (isServer) { player2 = rtsController; //Setting up other rts controller as a server var team2 = GameObject.FindGameObjectsWithTag("Team2"); foreach (var unitGo in team2) { var unit = unitGo.GetComponent <Unit>(); rtsController.ownedUnits.Add(unit); unit.owner = rtsController; } } else { // Setting up other rts controller as a client player1 = rtsController; var team1 = GameObject.FindGameObjectsWithTag("Team1"); foreach (var unitGo in team1) { var unit = unitGo.GetComponent <Unit>(); player1.ownedUnits.Add(unit); unit.owner = rtsController; } } } }
void ServerToClient(Unit babushka, RTSController serverRts, RTSController clientRts) { // Take it from teh server serverRts.ownedUnits.Remove(babushka); serverRts.selectedUnits.Remove(babushka); babushka.Deselect(); // Give it to the client clientRts.ownedUnits.Add(babushka); clientRts.RpcGrantUnit(babushka.name); babushka.owner = clientRts; }
// Use this for initialization void Start() { var rtsController = GetComponent<RTSController>(); if (isLocalPlayer) { // Setting up my own rts controller as a both server and a client rtsController.enabled = true; rtsController.selectionBox = GameObject.Find("SelectionBox").GetComponent<RectTransform>(); rtsController.team1Score = GameObject.Find("Team1 Score").GetComponent<Text>(); rtsController.team2Score = GameObject.Find("Team2 Score").GetComponent<Text>(); var team = GameObject.FindGameObjectsWithTag(isServer ? "Team1" : "Team2"); foreach (var unitGo in team) { var unit = unitGo.GetComponent<Unit>(); rtsController.ownedUnits.Add(unit); unit.owner = rtsController; } if (isServer) player1 = rtsController; } else { if (isServer) { player2 = rtsController; //Setting up other rts controller as a server var team2 = GameObject.FindGameObjectsWithTag("Team2"); foreach (var unitGo in team2) { var unit = unitGo.GetComponent<Unit>(); rtsController.ownedUnits.Add(unit); unit.owner = rtsController; } } else { // Setting up other rts controller as a client player1 = rtsController; var team1 = GameObject.FindGameObjectsWithTag("Team1"); foreach (var unitGo in team1) { var unit = unitGo.GetComponent<Unit>(); player1.ownedUnits.Add(unit); unit.owner = rtsController; } } } }
public virtual void ApplySkillEffect(Player targetPlayer, RTSController from) { switch (type) { case SkillType.BUFF: this.ApplyBuff(from.GetPlayer); break; case SkillType.DEBUFF: this.ApplyDebuff(targetPlayer, from); break; case SkillType.ATTACK: this.ApplyDamage(targetPlayer, from); break; case SkillType.ULTIMATE: this.ApplyDamage(targetPlayer, from); this.ApplyDebuff(targetPlayer, from); break; } }
public override bool CastSkill(RTSController controller) { if (!base.Ready) return false; this.LastActivation = Time.time; Ray ray = controller.myCamera.ScreenPointToRay(controller.myMousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { Vector3 look = hit.point; look.y = controller.transform.position.y; controller.transform.LookAt(look); } ApplyCooldown(); return true; }
public void ApplyKnockBack(Player targetPlayer, RTSController from) { if (!targetPlayer.Controller) throw new SkillException("Controller was not found."); Debug.Log("DmgCount" + targetPlayer.DamageCount); Debug.Log("Knockback factory" + this.KnockBackFactory); Debug.Log((targetPlayer.DamageCount / this.KnockBackFactory)); Ray ray = new Ray(from.transform.position, targetPlayer.Controller.transform.position); // TODO: Verificar como será feito o KNOCKBACK. Vector3 knockback = ray.direction * ((targetPlayer.DamageCount / 100) / this.KnockBackFactory); Debug.Log(knockback); targetPlayer.Controller.transform.Translate(knockback); }
public override bool CastSkill(RTSController controller) { if (!base.Ready) return false; this.LastActivation = Time.time; Ray ray = controller.myCamera.ScreenPointToRay(controller.myMousePosition); RaycastHit[] raycastHits = Physics.RaycastAll(ray); RaycastHit hit; Vector3 look = Vector3.zero; Vector3 position = Vector3.zero; try { raycastHits = raycastHits.Where(linq => linq.transform.gameObject.tag == "Terrain").ToArray(); hit = raycastHits.Last(); position = hit.point; position.y += 3.5f; look = hit.point; look.y = controller.transform.position.y; controller.transform.LookAt(look); } catch (Exception) { return false; } ApplyCooldown(); //Debug.Log(controller.transform.position.y - hit.point.y); //if (controller.transform.position.y - hit.point.y > 3.48f && controller.transform.position.y - hit.point.y < 3.52f) { // look.y = controller.transform.position.y; //} else if (controller.transform.position.y < hit.point.y) { // look.y = controller.transform.position.y + hit.point.y - 2; //} else if (controller.transform.position.y > hit.point.y) { // look.y = controller.transform.position.y - hit.point.y - 2; //} Vector3 direction = position - controller.transform.position; Vector3 newPos = controller.transform.position + (direction.normalized * 15); controller.MoveToPosition(1f, newPos, .5f); return true; }
public override bool CastSkill(RTSController controller) { if (!base.CastSkill(controller)) return false; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit[] raycastHits = Physics.RaycastAll(ray); RaycastHit hit; try { hit = raycastHits.Where(linq => linq.transform.gameObject.tag == "Terrain").Last(); Vector3 position = hit.point; position.y += 3.5f; controller.transform.position = position; controller.targetPosition = position; ApplyCooldown(); } catch (Exception) { return false; } return true; }
public Vector3 rtsOffset; //distance the camera moves back and up when going back to rts camera private void Start() { rtsController = this.GetComponent <RTSController>(); this.transform.position = spawnPoint.transform.position; }
public override bool CastSkill(RTSController controller) { return base.CastSkill(controller); }
public override bool CastSkill(RTSController controller) { if(!base.CastSkill(controller)) return false; this.LastActivation = Time.time; Ray ray = /*Camera.main.ScreenPointToRay*/controller.myCamera.ScreenPointToRay(controller.myMousePosition); if (Effect) { GameObject obj; InitialPosition = controller.skillsInitialPositions[SkillIndex]; if (!controller.isOffline) { obj = Network.Instantiate(Effect, InitialPosition.transform.position, Quaternion.identity, 0) as GameObject; } else { obj = GameObject.Instantiate(Effect, InitialPosition.transform.position, Quaternion.identity) as GameObject; } //obj.transform.parent = controller.transform; SkillBehaviour skillBehaviour = obj.GetComponent<SkillBehaviour>(); if (skillBehaviour) { skillBehaviour.from = controller; skillBehaviour.fromPlayer = controller.GetPlayer; skillBehaviour.skill = this; skillBehaviour.skillName = this.Name; skillBehaviour.WaitAnimationTime = WaitAnimationTime; skillBehaviour.StartPosition = InitialPosition; skillBehaviour.DestroyTime = DestroyEffectTime; } RaycastHit hit; if (Physics.Raycast(ray, out hit)) { Vector3 look = hit.point; look.y = look.y + 3.5f; obj.transform.LookAt(look); look.y = controller.transform.position.y; controller.transform.LookAt(look); } } ApplyCooldown(); return true; }
public override void ApplySkillEffect(Player targetPlayer, RTSController from) { base.ApplySkillEffect(targetPlayer, from); this.ApplyDamage(targetPlayer, from); }
public void AddPlayerOnQueue(RTSController control) { this.controllers.Add(control); control.shopIndex = this.controllers.Count - 1; }
public void ShowShop(RTSController control) { canShowShop = true; actualController = control; }
/// <summary> /// Cast the skill. /// </summary> /// <returns>False if the skill can't be casted</returns> public virtual bool CastSkill(RTSController controller) { return Ready; }
public virtual void ApplySkillEffect(Player targetPlayer, RTSController from) { }
/// <summary> /// Cast the skill. /// </summary> /// <returns>False if the skill can't be casted</returns> public virtual bool CastSkill(RTSController controller) { if (!this.CanCastSkill()) return false; this.lastActivation = Time.time; if (this.type == SkillType.BLINK) { return this.CastBlink(controller); } GameObject skill = Resources.Load(string.Format("Skills/Objects/{0}", this.particleName)) as GameObject; Ray ray = /*Camera.main.ScreenPointToRay*/controller.myCamera.ScreenPointToRay(controller.myMousePosition); if (skill) { GameObject obj; if (!controller.isOffline) { obj = Network.Instantiate(skill, controller.transform.position, skill.transform.rotation, 0) as GameObject; } else { obj = GameObject.Instantiate(skill, controller.transform.position, skill.transform.rotation) as GameObject; } //obj.transform.parent = controller.transform; SkillBehaviour skillBehaviour = obj.GetComponent<SkillBehaviour>(); if (skillBehaviour) { skillBehaviour.from = controller; skillBehaviour.fromPlayer = controller.GetPlayer; //skillBehaviour.skill = this; skillBehaviour.skillName = this.name; } RaycastHit hit; if (Physics.Raycast(ray, out hit) && !this.stayRotate) { Vector3 look = hit.point; look.y = look.y + 3.5f; obj.transform.LookAt(look); look.y = controller.transform.position.y; controller.transform.LookAt(look); } } ApplyCooldown(); return true; }
protected virtual bool CastBlink(RTSController controller) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit[] raycastHits = Physics.RaycastAll(ray); RaycastHit hit; try { hit = raycastHits.Where(linq => linq.transform.gameObject.tag == "Terrain").First(); Vector3 position = hit.point; position.y += 3.5f; controller.transform.position = position; controller.targetPosition = position; ApplyCooldown(); } catch (Exception) { return false; } return true; }
/// <summary> /// Apply a debuff to target player, that skill need to be a debuff skill. /// </summary> /// <param name="targetPlayer"></param> protected virtual void ApplyDebuff(Player targetPlayer, RTSController from) { if (type != SkillType.DEBUFF) throw new SkillException("This isn't a Buff Skill."); if (this.damage > 0) this.SkillDamage(targetPlayer); targetPlayer.setSlowed(3); this.ApplyKnockBack(targetPlayer, from); }
/// <summary> /// Apply the skill damage to target player, that skill need to be an attack skill. /// </summary> /// <param name="targetPlayer"></param> protected virtual void ApplyDamage(Player targetPlayer, RTSController from) { if (type != SkillType.ATTACK) throw new SkillException("This isn't an Attack Skill."); this.SkillDamage(targetPlayer); this.ApplyKnockBack(targetPlayer, from); this.ApplyCooldown(); }