private machine[] getNextState; //array of function pointers #endregion Fields #region Constructors public PlayerStateMachine() { currState = Enums.PlayerState.Idle; //fill array with functions getNextState = new machine[] { Idle, MoveBegining, MoveEnding, Hit, Dead, BasicAttack, HoriSwingMid, VertiSwingHeavy, ThrowLight, ThrowMid, Shoot, ChiAttack, ChiStaionary, TauntGokuStretch, TauntPointPoint, TauntThumbsDown, TauntWrasslemania, TauntYaMoves }; }
public Enums.PlayerState update(bool hit, bool animDone, Enums.Direction direction, Enums.CardTypes type, bool handEmpty, int playerNumber) { switch (currState) { case Enums.PlayerState.Idle: currState = Idle(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.MoveBegining: currState = MoveBegining(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.MoveEnding: currState = MoveEnding(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.Hit: currState = Hit(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.Dead: currState = Dead(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.BasicAttack: currState = BasicAttack(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.HoriSwingMid: currState = HoriSwingMid(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.VertiSwingHeavy: currState = VertiSwingHeavy(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.ThrowLight: currState = ThrowLight(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.ThrowMid: currState = ThrowMid(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.Shoot: currState = Shoot(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.ChiAttack: currState = ChiAttack(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.ChiStationary: currState = ChiStationary(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.TauntGokuStretch: currState = TauntGokuStretch(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.TauntPointPoint: currState = TauntPointPoint(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.TauntThumbsDown: currState = TauntThumbsDown(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.TauntWrasslemania: currState = TauntWrasslemania(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.TauntYaMoves: currState = TauntYaMoves(hit, animDone, direction, type, handEmpty, playerNumber); break; } return currState; }
public PlayerStateMachine() { currState = Enums.PlayerState.Idle; //fill array with functions getNextState = new machine[] { Idle, MoveBegining, MoveEnding, Hit, Dead, BasicAttack, HoriSwingMid, VertiSwingHeavy, ThrowLight, ThrowMid, Shoot, ChiAttack, ChiStaionary, TauntGokuStretch, TauntPointPoint, TauntThumbsDown, TauntWrasslemania, TauntYaMoves }; }
void ChangeState(Enums.PlayerState newState) { currentState = newState; if (OnPlayerStateChange != null) { OnPlayerStateChange(playerId, newState); } }
void OnPlayerStateChange(Enums.Players player, Enums.PlayerState targetState) { foreach (Enums.PlayerState state in playerUIs[player].panels.Keys) { playerUIs[player].panels[state].SetActive(false); } playerUIs[player].panels[targetState].SetActive(true); if (targetState != Enums.PlayerState.Disaster) { DisasterUIInfo info = disasterUIInfos.Where(d => d.playerName == player).ToList()[0]; info.disasterUI.SetActive(false); } }
void Awake() { myCollider = GetComponent <BoxCollider2D>(); resourceCounters = new Dictionary <Enums.Resources, int>(); resourceCounters[Enums.Resources.Wine] = 0; resourceCounters[Enums.Resources.Food] = 0; resourceCounters[Enums.Resources.Fleece] = 0; currentState = Enums.PlayerState.Movement; timeProgressed = 0f; nextDisasterNum = 0; randomDisasterTimes = new List <float>(); foreach (List <float> timeRange in GlobalNums.DISASTER_TIMES) { randomDisasterTimes.Add(Random.Range(timeRange[0], timeRange[1])); } }
public Enums.PlayerState update(bool hit, bool animDone, Enums.Direction direction, Enums.CardTypes type, bool handEmpty, int playerNumber) { switch (currState) { case Enums.PlayerState.Idle: currState = Idle(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.MoveBegining: currState = MoveBegining(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.MoveEnding: currState = MoveEnding(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.Hit: currState = Hit(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.Dead: currState = Dead(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.BasicAttack: currState = BasicAttack(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.HoriSwingMid: currState = HoriSwingMid(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.VertiSwingHeavy: currState = VertiSwingHeavy(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.ThrowLight: currState = ThrowLight(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.ThrowMid: currState = ThrowMid(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.Shoot: currState = Shoot(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.ChiAttack: currState = ChiAttack(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.ChiStationary: currState = ChiStationary(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.TauntGokuStretch: currState = TauntGokuStretch(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.TauntPointPoint: currState = TauntPointPoint(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.TauntThumbsDown: currState = TauntThumbsDown(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.TauntWrasslemania: currState = TauntWrasslemania(hit, animDone, direction, type, handEmpty, playerNumber); break; case Enums.PlayerState.TauntYaMoves: currState = TauntYaMoves(hit, animDone, direction, type, handEmpty, playerNumber); break; } return(currState); }
void Update() { if (Managers.GameManager.State == Enums.GameStates.Battle && !stun) { if (paused) { paused = false; anim.speed = animSpeed; } if (CustomInput.BoolFreshPress(CustomInput.UserInput.Up, playerNumber)) { if (currentNode.panelAllowed(Enums.Direction.Up, Type)) { directionToMove = Enums.Direction.Up; nextNode = currentNode.Up; } } else if (CustomInput.BoolFreshPress(CustomInput.UserInput.Down, playerNumber)) { if (currentNode.panelAllowed(Enums.Direction.Down, Type)) { directionToMove = Enums.Direction.Down; nextNode = currentNode.Down; } } else if (CustomInput.BoolFreshPress(CustomInput.UserInput.Left, playerNumber)) { if (currentNode.panelAllowed(Enums.Direction.Left, Type)) { directionToMove = Enums.Direction.Left; nextNode = currentNode.Left; } } else if (CustomInput.BoolFreshPress(CustomInput.UserInput.Right, playerNumber)) { if (currentNode.panelAllowed(Enums.Direction.Right, Type)) { directionToMove = Enums.Direction.Right; nextNode = currentNode.Right; } } else directionToMove = Enums.Direction.None; //get next state currState = machine.update(hit, animDone, directionToMove, hand.GetCurrentType(), hand.Empty(), playerNumber); //state clean up if (prevState != currState) { doOnce = false; animDone = false; attack = false; basicAttack = false; move = false; hit = false; if (weapon != null) Destroy(weapon); anim.SetInteger("state", (int)currState); } if (invunTimer > 0) { if (renderTimer > renderTime) { render = !render; renderTimer = 0; //GetComponent<Renderer>().enabled = render; } hit = false; renderTimer += Time.deltaTime; invunTimer -= Time.deltaTime; } else { //GetComponent<Renderer>().enabled = true; invun = false; } //run state switch (currState) { case Enums.PlayerState.Idle:Idle(); break; case Enums.PlayerState.MoveBegining: MoveBegining(); break; case Enums.PlayerState.MoveEnding: MoveEnding(); break; case Enums.PlayerState.Hit: Hit(); break; case Enums.PlayerState.Dead: Dead(); break; case Enums.PlayerState.BasicAttack: BasicAttack(); break; case Enums.PlayerState.HoriSwingMid: CardAnim(); break; case Enums.PlayerState.VertiSwingHeavy: CardAnim(); break; case Enums.PlayerState.ThrowLight: CardAnim(); break; case Enums.PlayerState.ThrowMid: CardAnim(); break; case Enums.PlayerState.Shoot: CardAnim(); break; case Enums.PlayerState.ChiAttack: CardAnim(); break; case Enums.PlayerState.ChiStationary: CardAnim(); break; case Enums.PlayerState.TauntGokuStretch: Taunt(); break; case Enums.PlayerState.TauntPointPoint: Taunt(); break; case Enums.PlayerState.TauntThumbsDown: Taunt(); break; case Enums.PlayerState.TauntWrasslemania: Taunt(); break; case Enums.PlayerState.TauntYaMoves: Taunt(); break; } if (move) { move = false; currentNode.clearOccupied(); currentNode = nextNode; currentNode.Owner = (this); transform.position = currentNode.transform.position; } if (useCard) { if (!hand.Empty()) { Enums.CardTypes type = hand.GetCurrentType(); if (type == Enums.CardTypes.SwordHori || type == Enums.CardTypes.SwordVert) { weapon = Instantiate(Katana); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0,0,0); } else if (type == Enums.CardTypes.NaginataHori || type == Enums.CardTypes.NaginataVert) { weapon = Instantiate(Naginata); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.HammerHori || type == Enums.CardTypes.HammerVert) { weapon = Instantiate(Hammer); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0,0,0); } else if (type == Enums.CardTypes.Fan) { weapon = Instantiate(Fan); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.Kanobo) { weapon = Instantiate(Kanobo); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.Tanto) { weapon = Instantiate(Tanto); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.Wakizashi) { weapon = Instantiate(Wakizashi); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.Tonfa) { weapon = Instantiate(Tonfa); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.BoStaff) { weapon = Instantiate(BoStaff); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } useCard = false; hand.UseCurrent(this); CardUIEvent(); } } if (basicAttack) { basicAttack = false; Weapons.Hitbox b = Instantiate(bullet); AddElement.AddElementByEnum(b.gameObject,(Enums.Element)Random.Range(0,5),true); b.Owner = this.gameObject; b.transform.position = Direction == Enums.Direction.Left ? currentNode.Left.transform.position : currentNode.Right.transform.position; b.CurrentNode = Direction == Enums.Direction.Left ? currentNode.Left : currentNode.Right; b.Direction = Direction; } if (damage > 0 && takeDamage) { takeDamage = false; TakeDamage(damage, damageElement); damage = 0; damageElement = Enums.Element.None; } prevState = currState; } else { if (!paused) { animSpeed = anim.speed; anim.speed = 0; paused = true; } if (stun) { if ((stunTimer += Time.deltaTime) > stunTime) { stunTimer = 0f; stun = false; } } } }
internal void Revive() { currState = Enums.PlayerState.Idle; die = false; }
private machine[] getNextState; //array of function pointers #endregion Fields #region Constructors public PlayerStateMachine() { currState = Enums.PlayerState.Idle; //fill array with functions getNextState = new machine[] { Idle, MoveBegining, MoveEnding, Hit, Dead, BasicAttack, Sword }; }
public PlayerStateMachine() { currState = Enums.PlayerState.Idle; }
public Enums.PlayerState update(bool inAir, bool blockSuccess, bool hit, bool animDone) { return currState = getNextState[((int)currState)](inAir, blockSuccess, hit, animDone);//gets te next Enums.PlayerState }
public PlayerStateMachine() { currState = Enums.PlayerState.Idle; //fill array with functions }
void Update() { if (Util.GameState.state == Util.GameState.State.Playing && !disable) { if (paused) { paused = false; anim.speed = animSpeed; rgbdy.useGravity = true; rgbdy.velocity = vel; } if (Input.GetKeyUp(KeyCode.U)) { die(); } #region StatusEffects if (sluggish) { anim.speed = 0.6f; } else { anim.speed = 1; } #endregion anim.SetFloat("speed", magnitude); if (health <= 0 || this.transform.position.y < -20) { //Create a ragdoll until we respawn if (respawnTimer > 0) { if (!ragdollIsActive) { die(); //this.GetComponent<Rigidbody>().useGravity = false; } //this.gameObject.transform.position = new Vector3(tempRag.HipN.position.x+1,tempRag.HipN.position.y, tempRag.HipN.position.z + 1); respawnTimer -= Time.deltaTime; } else { Respawn(); FindObjectOfType <GameState>().playerDeaths++; FindObjectOfType <GameState>().lives--; //this.GetComponent<Rigidbody>().useGravity = true; } } move = false; if (CustomInput.Bool(CustomInput.UserInput.Up) || CustomInput.Bool(CustomInput.UserInput.Down) || CustomInput.Bool(CustomInput.UserInput.Left) || CustomInput.Bool(CustomInput.UserInput.Right)) { move = true; } TouchingSomething(); //get next state currState = machine.update(inAir, move, hit, animDone); if (invunTimer > 0) { hit = false; invunTimer -= Time.deltaTime; invun = true; } else { invun = false; } if (dead) { dead = false; } //run state doState[(int)currState](); if (health <= 0) { die(); } if (doAttack) { doAttack = false; attackInstance = Instantiate(attack); attackInstance.transform.position = attackPos.position; } //state clean up if (prevState != currState) { doOnce = false; animDone = false; jump = false; hit = false; anim.SetInteger("state", (int)currState); if (attackInstance != null) { Destroy(attackInstance.gameObject); } } prevState = currState; } else { if (!paused) { animSpeed = anim.speed; anim.speed = 0; rgbdy.useGravity = false; vel = rgbdy.velocity; rgbdy.velocity = new Vector3(); paused = true; } } }
public Enums.PlayerState update(bool hit, bool animDone, Enums.Direction direction, Enums.CardTypes type, bool handEmpty) { currState = getNextState[((int)currState)](hit, animDone, direction, type, handEmpty);//gets te next Enums.PlayerState return currState; }
public Enums.PlayerState update(bool hit, bool animDone, Enums.Direction direction, Enums.CardTypes type, bool handEmpty) { currState = getNextState[((int)currState)](hit, animDone, direction, type, handEmpty);//gets te next Enums.PlayerState return(currState); }
public PlayerStateMachine() { currState = Enums.PlayerState.Idle; //fill array with functions getNextState = new machine[] { Idle, MoveBegining, MoveEnding, Hit, Dead, BasicAttack, Sword }; }
private float hold = 0; //used for delays #endregion Fields #region Constructors public PlayerStateMachine() { currState = Enums.PlayerState.Idle; }
private machine[] getNextState; //array of function pointers #endregion Fields #region Constructors public PlayerStateMachine() { currState = Enums.PlayerState.Idle; //fill array with functions getNextState = new machine[] { Idle, Moving, InAir, Jump, Attack, Hit, Dead }; }
void Update() { if (Managers.GameManager.State == Enums.GameStates.Battle) { if (CustomInput.BoolFreshPress(CustomInput.UserInput.Up)) { if (currentNode.panelAllowed(Enums.Direction.Up, Type)) { direction = Enums.Direction.Up; nextNode = currentNode.Up; } } else if (CustomInput.BoolFreshPress(CustomInput.UserInput.Down)) { if (currentNode.panelAllowed(Enums.Direction.Down, Type)) { direction = Enums.Direction.Down; nextNode = currentNode.Down; } } else if (CustomInput.BoolFreshPress(CustomInput.UserInput.Left)) { if (currentNode.panelAllowed(Enums.Direction.Left, Type)) { direction = Enums.Direction.Left; nextNode = currentNode.Left; } } else if (CustomInput.BoolFreshPress(CustomInput.UserInput.Right)) { if (currentNode.panelAllowed(Enums.Direction.Right, Type)) { direction = Enums.Direction.Right; nextNode = currentNode.Right; } } else direction = Enums.Direction.None; //get next state currState = machine.update(hit, animDone, direction, hand.GetCurrentType(), hand.Empty()); //state clean up if (prevState != currState) { doOnce = false; animDone = false; hit = false; anim.SetInteger("state", (int)currState); } if (invunTimer > 0) { if (renderTimer > renderTime) { render = !render; renderTimer = 0; //GetComponent<Renderer>().enabled = render; } hit = false; renderTimer += Time.deltaTime; invunTimer -= Time.deltaTime; } else { //GetComponent<Renderer>().enabled = true; invun = false; } //run state doState[(int)currState](); if (move) { move = false; currentNode.clearOccupied(); currentNode = nextNode; currentNode.Owner = (this); transform.position = currentNode.transform.position; } if (useCard) { if (!hand.Empty()) { useCard = false; hand.UseCurrent(this); CardUIEvent(); } } if (basicAttack) { basicAttack = false; Weapons.Projectiles.Bullet b = Instantiate(bullet).GetComponent<Weapons.Projectiles.Bullet>(); b.transform.position = barrel.position; b.Direction = Direction; } if (damage > 0 && takeDamage) { takeDamage = false; TakeDamage(damage); damage = 0; } prevState = currState; } }
public Enums.PlayerState update(bool inAir, bool move, bool hit, bool animDone) { currState = getNextState[((int)currState)](inAir, move, hit, animDone);//gets te next Enums.PlayerState return currState; }
private machine[] getNextState; //array of function pointers public PlayerStateMachine() { currState = Enums.PlayerState.idle; //fill array with functions getNextState = new machine[] { Idle, Move, Jump, Jump2, InAirNow, Attack1, Attack2, Attack3, MovingAttack, InAirAttack, Parry, Block, Crouch, Hit, Dead }; }
void Update() { if (Managers.GameManager.State == Enums.GameStates.Battle && !stun) { if (paused) { paused = false; anim.speed = animSpeed; } #region detectMove if (CustomInput.BoolFreshPress(CustomInput.UserInput.Up, playerNumber)) { if (currentNode.panelAllowed(Enums.Direction.Up, Type)) { directionToMove = Enums.Direction.Up; nextNode = currentNode.Up; } } else if (CustomInput.BoolFreshPress(CustomInput.UserInput.Down, playerNumber)) { if (currentNode.panelAllowed(Enums.Direction.Down, Type)) { directionToMove = Enums.Direction.Down; nextNode = currentNode.Down; } } else if (CustomInput.BoolFreshPress(CustomInput.UserInput.Left, playerNumber)) { if (currentNode.panelAllowed(Enums.Direction.Left, Type)) { directionToMove = Enums.Direction.Left; nextNode = currentNode.Left; } } else if (CustomInput.BoolFreshPress(CustomInput.UserInput.Right, playerNumber)) { if (currentNode.panelAllowed(Enums.Direction.Right, Type)) { directionToMove = Enums.Direction.Right; nextNode = currentNode.Right; } } else { directionToMove = Enums.Direction.None; } #endregion //get next state currState = machine.update(hit, animDone, directionToMove, hand.GetCurrentType(), hand.Empty(), playerNumber); //state clean up if (prevState != currState) { doOnce = false; animDone = false; attack = false; basicAttack = false; move = false; hit = false; if (weapon != null) { Destroy(weapon); } anim.SetInteger("state", (int)currState); } if (invunTimer > 0) { if (renderTimer > renderTime) { render = !render; renderTimer = 0; foreach (SkinnedMeshRenderer b in body) { b.enabled = render; } } hit = false; renderTimer += Time.deltaTime; invunTimer -= Time.deltaTime; } else if (!render || invun) { render = true; foreach (SkinnedMeshRenderer b in body) { b.enabled = true; } invun = false; } //run state switch (currState) { case Enums.PlayerState.Idle: Idle(); break; case Enums.PlayerState.MoveBegining: MoveBegining(); break; case Enums.PlayerState.MoveEnding: MoveEnding(); break; case Enums.PlayerState.Hit: Hit(); break; case Enums.PlayerState.Dead: Dead(); break; case Enums.PlayerState.BasicAttack: BasicAttack(); break; case Enums.PlayerState.HoriSwingMid: CardAnim(); break; case Enums.PlayerState.VertiSwingHeavy: CardAnim(); break; case Enums.PlayerState.ThrowLight: CardAnim(); break; case Enums.PlayerState.ThrowMid: CardAnim(); break; case Enums.PlayerState.Shoot: CardAnim(); break; case Enums.PlayerState.ChiAttack: CardAnim(); break; case Enums.PlayerState.ChiStationary: CardAnim(); break; case Enums.PlayerState.TauntGokuStretch: Taunt(); break; case Enums.PlayerState.TauntPointPoint: Taunt(); break; case Enums.PlayerState.TauntThumbsDown: Taunt(); break; case Enums.PlayerState.TauntWrasslemania: Taunt(); break; case Enums.PlayerState.TauntYaMoves: Taunt(); break; } if (move) { move = false; currentNode.clearOccupied(); currentNode = nextNode; currentNode.Owner = (this); transform.position = currentNode.transform.position; } #region useCard if (useCard) { if (!hand.Empty()) { Enums.CardTypes type = hand.GetCurrentType(); if (type == Enums.CardTypes.SwordHori || type == Enums.CardTypes.SwordVert) { weapon = Instantiate(Katana); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } if (type == Enums.CardTypes.WideSword) { weapon = Instantiate(WideSword); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.NaginataHori || type == Enums.CardTypes.NaginataVert) { weapon = Instantiate(Naginata); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.HammerHori || type == Enums.CardTypes.HammerVert) { weapon = Instantiate(Hammer); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.Fan) { weapon = Instantiate(Fan); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.Kanobo) { weapon = Instantiate(Kanobo); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale / .8f; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.Tanto) { weapon = Instantiate(Tanto); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.Wakizashi) { weapon = Instantiate(Wakizashi); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.Tonfa) { weapon = Instantiate(Tonfa); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale / .8f; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } else if (type == Enums.CardTypes.BoStaff) { weapon = Instantiate(BoStaff); weapon.transform.position = weaponPoint.position; weapon.transform.localScale = weaponPoint.localScale / .5f; weapon.transform.parent = weaponPoint; weapon.transform.localEulerAngles = new Vector3(0, 0, 0); } int sfxNumber = 0; switch (type) { case Enums.CardTypes.SwordVert: case Enums.CardTypes.SwordHori: case Enums.CardTypes.WideSword: case Enums.CardTypes.NaginataVert: case Enums.CardTypes.NaginataHori: case Enums.CardTypes.HammerVert: case Enums.CardTypes.HammerHori: case Enums.CardTypes.Fan: case Enums.CardTypes.Kanobo: case Enums.CardTypes.Tanto: case Enums.CardTypes.Wakizashi: case Enums.CardTypes.Tonfa: case Enums.CardTypes.BoStaff: sfxNumber = 0; break; case Enums.CardTypes.ThrowLight: case Enums.CardTypes.ThrowMid: case Enums.CardTypes.Shoot: sfxNumber = 2; break; case Enums.CardTypes.ChiAttack: case Enums.CardTypes.ChiStationary: sfxNumber = 3; break; default: break; } sfx.PlaySong(sfxNumber); useCard = false; hand.UseCurrent(this, deck); CardUIEvent(); } } #endregion if (basicAttack) { basicAttack = false; Weapons.Hitbox b = Instantiate(bullet); AddElement.AddElementByEnum(b.gameObject, element, true); b.Owner = this.gameObject; b.transform.position = Direction == Enums.Direction.Left ? currentNode.Left.transform.position : currentNode.Right.transform.position; b.CurrentNode = Direction == Enums.Direction.Left ? currentNode.Left : currentNode.Right; b.Direction = Direction; if (playerNumber == 2) { Transform model = b.transform.GetChild(0); model.localScale = new Vector3(model.localScale.x, -model.localScale.y, model.localScale.z); } sfx.PlaySong(2); } if (damage > 0 && takeDamage) { takeDamage = false; TakeDamage(damage, damageElement); damage = 0; damageElement = Enums.Element.None; } prevState = currState; } else { if (!paused) { animSpeed = anim.speed; anim.speed = 0; paused = true; } if (stun) { if ((stunTimer += Time.deltaTime) > stunTime) { stunTimer = 0f; stun = false; } } } }
public PlayerStateMachine() { currState = Enums.PlayerState.Idle; //fill array with functions getNextState = new machine[] { Idle, Moving, InAir, Jump, Attack, Hit, Dead }; }
void Update() { if (Managers.GameManager.State == Enums.GameStates.Battle) { if (CustomInput.BoolFreshPress(CustomInput.UserInput.Up)) { if (currentNode.panelAllowed(Enums.Direction.Up, Type)) { direction = Enums.Direction.Up; nextNode = currentNode.Up; } } else if (CustomInput.BoolFreshPress(CustomInput.UserInput.Down)) { if (currentNode.panelAllowed(Enums.Direction.Down, Type)) { direction = Enums.Direction.Down; nextNode = currentNode.Down; } } else if (CustomInput.BoolFreshPress(CustomInput.UserInput.Left)) { if (currentNode.panelAllowed(Enums.Direction.Left, Type)) { direction = Enums.Direction.Left; nextNode = currentNode.Left; } } else if (CustomInput.BoolFreshPress(CustomInput.UserInput.Right)) { if (currentNode.panelAllowed(Enums.Direction.Right, Type)) { direction = Enums.Direction.Right; nextNode = currentNode.Right; } } else { direction = Enums.Direction.None; } //get next state currState = machine.update(hit, animDone, direction, hand.GetCurrentType(), hand.Empty()); //state clean up if (prevState != currState) { doOnce = false; animDone = false; hit = false; anim.SetInteger("state", (int)currState); } if (invunTimer > 0) { if (renderTimer > renderTime) { render = !render; renderTimer = 0; //GetComponent<Renderer>().enabled = render; } hit = false; renderTimer += Time.deltaTime; invunTimer -= Time.deltaTime; } else { //GetComponent<Renderer>().enabled = true; invun = false; } //run state doState[(int)currState](); if (move) { move = false; currentNode.clearOccupied(); currentNode = nextNode; currentNode.Owner = (this); transform.position = currentNode.transform.position; } if (useCard) { if (!hand.Empty()) { useCard = false; hand.UseCurrent(this); CardUIEvent(); } } if (basicAttack) { basicAttack = false; Weapons.Projectiles.Bullet b = Instantiate(bullet).GetComponent <Weapons.Projectiles.Bullet>(); b.transform.position = barrel.position; b.Direction = Direction; } if (damage > 0 && takeDamage) { takeDamage = false; TakeDamage(damage); damage = 0; } prevState = currState; } }
public Enums.PlayerState update(bool inAir, bool move, bool hit, bool animDone) { currState = getNextState[((int)currState)](inAir, move, hit, animDone);//gets te next Enums.PlayerState return(currState); }