public override void Enter(StateMachine stateMachine, EventMessage eventResponse, ActiveLinking activeLinking) { activeLinking.linkingProperties.Add("push_position", eventResponse.pos); }
public override void Enter(StateMachine stateMachine, EventMessage eventResponse, ActiveLinking activeLinking) { //set time before stunnedState leaves activeLinking.linkingProperties.Add("time", duration); activeLinking.linkingProperties.Add("lastFireDamageTime", activeLinking.timeStarted); var c = stateMachine.GetComponent <Character>(); c.effectIndicators.fireEffect.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear); var main = c.effectIndicators.fireEffect.main; main.duration = duration; c.effectIndicators.fireEffect.Play(); }
override public void Enter(StateMachine stateMachine, EventMessage eventResponse, ActiveLinking activeLinking) { NonPlayerCharacter npc = stateMachine.GetComponent <NonPlayerCharacter>(); MagicTargetCircleController target = eventResponse.target.GetComponent <MagicTargetCircleController>(); npc.character.currentSpeed = CharacterSpeed.FAST; var moveVec = target.transform.position + ((npc.transform.position - target.transform.position).normalized * (target.radius + runDistanceFromOuterRadius)); Debug.DrawLine(target.transform.position, moveVec, Color.green, 10); npc.MoveToOrFollow(moveVec); activeLinking.linkingProperties.Add("target_position", moveVec); }
public override void Enter(StateMachine stateMachine, EventMessage eventResponse, ActiveLinking activeLinking) { }
override public void Enter(StateMachine stateMachine, EventMessage eventResponse, ActiveLinking activeLinking) { var follower = stateMachine.GetComponent <Follower>(); follower.enabled = true; }
public override void Init(ActiveLinking activeLinking) { start = Time.time; childImage.fillAmount = 0; suspiciousTime = activeLinking.GetValueOrDefault <float>("time"); }
override public void Enter(StateMachine stateMachine, EventMessage eventResponse, ActiveLinking activeLinking) { NonPlayerCharacter npc = stateMachine.GetComponent <NonPlayerCharacter>(); npc.VisionAngleModifier = 1f; npc.VisionRadiusModifier = 1f; }
override public void Enter(StateMachine stateMachine, EventMessage eventResponse, ActiveLinking activeLinking) { NonPlayerCharacter npc = stateMachine.GetComponent <NonPlayerCharacter>(); activeLinking.linkingProperties.Add("target_position", npc.characterTarget.transform); }
override public void Enter(StateMachine stateMachine, EventMessage eventResponse, ActiveLinking activeLinking) { NonPlayerCharacter npc = stateMachine.GetComponent <NonPlayerCharacter>(); npc.nav2DAgent.addSeparationIgnored(eventResponse.target); //clear any character target; npc.characterTarget = null; npc.searchingPosition = eventResponse.target != null ? eventResponse.target.transform.position : ( npc.characterTarget == null ? npc.transform.position : npc.characterTarget.transform.position ); }
public override void Enter(StateMachine stateMachine, EventMessage eventResponse, ActiveLinking activeLinking) { stateMachine.GetComponent <Animator>()?.SetBool("dead", true); //temporary //Destroy(stateMachine.gameObject); var sceneManager = GameObject .FindGameObjectWithTag("SceneManager") .GetComponent <FortressSceneManager>(); var nonPlayerCharacter = stateMachine.GetComponent <NonPlayerCharacter>(); if (nonPlayerCharacter != null) { // disable agent2d for pushing around var agent = stateMachine.GetComponent <Nav2DAgent>(); if (agent != null) { agent.enabled = false; } } else { var playerCharacter = stateMachine.GetComponent <PlayerCharacter>(); if (playerCharacter != null) { sceneManager.GameOver(GameOverType.playerDied); } } }
void HandleDone(ActiveLinking linking) { done.Value = true; }
public abstract void Init(ActiveLinking activeLinking);
public abstract bool Check(GameObject gameObject, ActiveLinking activeLinking, out EventMessage message);
// stateMachine and activeLinking always null public override void Enter(StateMachine stateMachine, EventMessage eventResponse, ActiveLinking activeLinking) { var spellTarget = eventResponse.target.GetComponent <MagicTargetBase>(); switch (spellTarget.spell.spellTarget) { case SpellTarget.CIRCLE: var circleTarget = eventResponse.target.GetComponent <MagicTargetCircleController>(); var radius = circleTarget.radius; for (var i = 0; i < radius; i++) { var angle = Random.Range(0, 2 * Mathf.PI); var distance = Random.Range(0, radius); Instantiate( summonedPrefab, eventResponse.target.transform.position + new Vector3(Mathf.Cos(angle) * distance, Mathf.Sin(angle) * distance), Quaternion.identity ); } break; default: var rDir = Random.Range(0, 2 * Mathf.PI); var rDis = Random.Range(0.5f, 1); Instantiate( summonedPrefab, eventResponse.target.transform.position + new Vector3(Mathf.Cos(rDir) * rDis, Mathf.Sin(rDir) * rDis), Quaternion.identity ); break; } //temporary //Destroy(stateMachine.gameObject); }
public override bool Check(GameObject character, ActiveLinking activeLinking, out EventMessage message) { message = EventMessage.EmptyMessage; return(true); }
public override void Enter(StateMachine stateMachine, EventMessage eventResponse, ActiveLinking activeLinking) { //set time before stunnedState leaves activeLinking.linkingProperties.Add("time", duration); var c = stateMachine.GetComponent <Character>(); c.effectIndicators.stunnedEffect.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear); var main = c.effectIndicators.stunnedEffect.main; main.duration = duration; c.effectIndicators.stunnedEffect.Play(); // disable agent2d for pushing around var agent = stateMachine.GetComponent <Nav2DAgent>(); agent.enabled = false; //Debug.Log("disabled agent"); }
override public void Enter(StateMachine stateMachine, EventMessage eventResponse, ActiveLinking activeLinking) { NonPlayerCharacter npc = stateMachine.GetComponent <NonPlayerCharacter>(); npc.VisionAngleModifier = 1f; npc.VisionRadiusModifier = 1f; activeLinking.linkingProperties.Add("corners", new Queue <Vector2>()); activeLinking.linkingProperties.Add("buildings", new Queue <Queue <Vector2> >()); }
override public void Enter(StateMachine stateMachine, EventMessage eventMessage, ActiveLinking activeLinking) { activeLinking.linkingProperties.Add("start_rotation", stateMachine.GetComponent <Character>().lookDirection); }
override public void StateUpdate(StateMachine stateMachine, ActiveLinking activeLinking) { NonPlayerCharacter npc = stateMachine.GetComponent <NonPlayerCharacter>(); Character character = stateMachine.GetComponent <Character>(); Nav2DAgent navAgent = stateMachine.GetComponent <Nav2DAgent>(); character.currentSpeed = CharacterSpeed.SLOW; if (!npc.nav2DAgent.isMoving && !npc.nav2DAgent.isWaitingForPath) { //Debug.Log("moving is false"); var colliders = Physics2D.OverlapCircleAll(stateMachine.transform.position, findClosestBuildingRadius, LayerMask.GetMask(buildingFindLayers)); if (colliders.Count() <= 0) { return; } var buildingQueue = activeLinking.GetValueOrDefault <Queue <Queue <Vector2> > >("buildings"); var cornerQueue = activeLinking.GetValueOrDefault <Queue <Vector2> >("corners"); if (cornerQueue.Count < 1) { if (buildingQueue.Count < 1) { var closestColliders = colliders.OrderBy( x => (x.transform.position - stateMachine.transform.position).magnitude ); foreach (var collider in closestColliders) { var c = collider.GetComponentInParent <BuildingController>(); // if has building component and parent building is on building layer (walls are building that cannot be patrolled) if (c == null || c.gameObject.layer != LayerMask.NameToLayer("Building")) { var l = LayerMask.GetMask("Building"); continue; } buildingQueue.Enqueue(new Queue <Vector2>(c.WorldSpaceCorners)); } } if (buildingQueue.Count < 1) { return; } var corners = new List <Vector2>(buildingQueue.Dequeue()) .Where(x => { // only take corners that are not inside a active spell var c = Physics2D.OverlapPointAll(x, LayerMask.GetMask(spellTargetLayers)); foreach (var collider in c) { var target = collider.GetComponent <MagicTargetBase>(); if (!target.spellDone) { return(false); } } // and the corner is accessable; return(navAgent.navGrid.CanBeReached(x)); }).ToList(); // patrolling around building can be clockwise or anticlockwise if (Random.value > 0.5) { corners.Reverse(); } var closesCornerIndex = corners.FindIndex(x => x == corners.MinBy(c => (c - (Vector2)stateMachine.transform.position).magnitude).First() ); // shift the values so that the closest corner is first for (var i = 0; i < corners.Count; i++) { cornerQueue.Enqueue(corners[(closesCornerIndex + i) % corners.Count]); } } else { npc.MoveToOrFollow( cornerQueue.Dequeue() ); } } }
override public void StateUpdate(StateMachine stateMachine, ActiveLinking activeLinking) { }
public override void Enter(StateMachine stateMachine, EventMessage eventResponse, ActiveLinking activeLinking) { //temporary //Destroy(stateMachine.gameObject); }
public override void Init(ActiveLinking activeLinking) { }
public override void Enter(StateMachine stateMachine, EventMessage eventResponse, ActiveLinking activeLinking) { var c = stateMachine.GetComponent <Character>(); c.AddDamage(dmg); }