예제 #1
0
파일: Card.cs 프로젝트: AmbroseC/CardNinjas
 private void SetType(string type)
 {
     try
     {
         Enums.CardTypes cardType = (Enums.CardTypes)Enum.Parse(typeof(Enums.CardTypes), type);
         if (Enum.IsDefined(typeof(Enums.CardTypes), cardType) | cardType.ToString().Contains(","))
             this.type = cardType;
         else
         {
             this.type = Enums.CardTypes.Error;
             Debug.LogError("Unable to resolve " + type + " to a type.  Setting " + name + " to type Error.");
         }
     }
     catch (ArgumentException)
     {
         this.type = Enums.CardTypes.Error;
         Debug.LogError("Unable to resolve " + type + " to a type.  Setting " + name + " to type Error.");
     }
 }
예제 #2
0
 private static Enums.PlayerState MoveBegining(bool hit, bool animDone, Enums.Direction direction, Enums.CardTypes type, bool handEmpty)
 {
     if (hit)
     {
         return(Enums.PlayerState.Hit);
     }
     if (animDone)
     {
         return(Enums.PlayerState.MoveEnding);
     }
     return(Enums.PlayerState.MoveBegining);
 }
예제 #3
0
        //The following methods control when and how you can transition between states

        private static Enums.PlayerState Idle(bool hit, bool animDone, Enums.Direction direction, Enums.CardTypes type, bool handEmpty)
        {
            if (hit)
            {
                return(Enums.PlayerState.Hit);
            }
            if (!handEmpty && CustomInput.BoolFreshPress(CustomInput.UserInput.UseCard))
            {
                //switch off of type
                return(Enums.PlayerState.Sword);
            }
            if (CustomInput.BoolFreshPress(CustomInput.UserInput.Attack))
            {
                return(Enums.PlayerState.BasicAttack);
            }
            if (direction != Enums.Direction.None)
            {
                return(Enums.PlayerState.MoveBegining);
            }
            return(Enums.PlayerState.Idle);
        }
예제 #4
0
 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);
 }
예제 #5
0
 //this is used to prevent the player character from doing any thing while dead
 private static Enums.PlayerState Dead(bool hit, bool animDone, Enums.Direction direction, Enums.CardTypes type, bool handEmpty)
 {
     return(Enums.PlayerState.Dead);
 }
예제 #6
0
 private static Enums.PlayerState Hit(bool hit, bool animDone, Enums.Direction direction, Enums.CardTypes type, bool handEmpty)
 {
     hold += UnityEngine.Time.deltaTime;
     if (hold > .4f)
     {
         hold = 0;
         if (die)
         {
             return(Enums.PlayerState.Dead);
         }
         return(Enums.PlayerState.Idle);
     }
     return(Enums.PlayerState.Hit);
 }
예제 #7
0
        //The following methods control when and how you can transition between states

        private Enums.PlayerState Idle(bool hit, bool animDone, Enums.Direction direction, Enums.CardTypes type, bool handEmpty, int playerNumber)
        {
            if (hit)
            {
                return(Enums.PlayerState.Hit);
            }
            if (!handEmpty && CustomInput.BoolFreshPress(CustomInput.UserInput.UseCard, playerNumber))
            {
                switch (type)
                {
                case Enums.CardTypes.SwordVert: return(Enums.PlayerState.VertiSwingHeavy);

                case Enums.CardTypes.SwordHori: return(Enums.PlayerState.HoriSwingMid);

                case Enums.CardTypes.NaginataVert: return(Enums.PlayerState.VertiSwingHeavy);

                case Enums.CardTypes.NaginataHori: return(Enums.PlayerState.HoriSwingMid);

                case Enums.CardTypes.HammerVert: return(Enums.PlayerState.VertiSwingHeavy);

                case Enums.CardTypes.HammerHori: return(Enums.PlayerState.HoriSwingMid);

                case Enums.CardTypes.ThrowLight: return(Enums.PlayerState.ThrowLight);

                case Enums.CardTypes.ThrowMid: return(Enums.PlayerState.ThrowMid);

                case Enums.CardTypes.Shoot: return(Enums.PlayerState.Shoot);

                case Enums.CardTypes.ChiAttack: return(Enums.PlayerState.ChiAttack);

                case Enums.CardTypes.ChiStationary: return(Enums.PlayerState.ChiStationary);

                case Enums.CardTypes.Error: return(Enums.PlayerState.ChiAttack);

                case Enums.CardTypes.Fan: return(Enums.PlayerState.HoriSwingMid);

                case Enums.CardTypes.Kanobo: return(Enums.PlayerState.HoriSwingMid);

                case Enums.CardTypes.Tanto: return(Enums.PlayerState.HoriSwingMid);

                case Enums.CardTypes.Wakizashi: return(Enums.PlayerState.HoriSwingMid);

                case Enums.CardTypes.Tonfa: return(Enums.PlayerState.HoriSwingMid);

                case Enums.CardTypes.BoStaff: return(Enums.PlayerState.HoriSwingMid);
                }
            }
            if (CustomInput.BoolFreshPress(CustomInput.UserInput.Attack, playerNumber))
            {
                return(Enums.PlayerState.BasicAttack);
            }
            if (direction != Enums.Direction.None)
            {
                return(Enums.PlayerState.MoveBegining);
            }
            if (CustomInput.BoolFreshPress(CustomInput.UserInput.Taunt, playerNumber))
            {
                float chance = UnityEngine.Random.Range(0f, 1f);
                if (chance < .225f)
                {
                    return(Enums.PlayerState.TauntPointPoint);
                }
                else if (chance < .45f)
                {
                    return(Enums.PlayerState.TauntThumbsDown);
                }
                else if (chance < .675f)
                {
                    return(Enums.PlayerState.TauntWrasslemania);
                }
                else if (chance < .9f)
                {
                    return(Enums.PlayerState.TauntYaMoves);
                }
                else
                {
                    return(Enums.PlayerState.TauntGokuStretch);
                }
            }
            return(Enums.PlayerState.Idle);
        }
예제 #8
0
 private Enums.PlayerState TauntYaMoves(bool hit, bool animDone, Enums.Direction direction, Enums.CardTypes type, bool handEmpty, int playerNumber)
 {
     if (hit)
     {
         return(Enums.PlayerState.Hit);
     }
     if (animDone)
     {
         return(Enums.PlayerState.Idle);
     }
     return(Enums.PlayerState.TauntYaMoves);
 }
예제 #9
0
 private Enums.PlayerState ChiStationary(bool hit, bool animDone, Enums.Direction direction, Enums.CardTypes type, bool handEmpty, int playerNumber)
 {
     if (hit)
     {
         return(Enums.PlayerState.Hit);
     }
     if (animDone)
     {
         return(Enums.PlayerState.Idle);
     }
     return(Enums.PlayerState.ChiStationary);
 }
예제 #10
0
 private Enums.PlayerState BasicAttack(bool hit, bool animDone, Enums.Direction direction, Enums.CardTypes type, bool handEmpty, int playerNumber)
 {
     if (hit)
     {
         return(Enums.PlayerState.Hit);
     }
     if (CustomInput.BoolFreshPress(CustomInput.UserInput.Attack, playerNumber))
     {
         hold = 1;
     }
     if (animDone)
     {
         if (hold == 0)
         {
             return(Enums.PlayerState.Idle);
         }
         hold = 0;
         return(Enums.PlayerState.BasicAttack);
     }
     return(Enums.PlayerState.BasicAttack);
 }
예제 #11
0
 //this is used to prevent the player character from doing any thing while dead
 private Enums.PlayerState Dead(bool hit, bool animDone, Enums.Direction direction, Enums.CardTypes type, bool handEmpty, int playerNumber)
 {
     return(Enums.PlayerState.Dead);
 }
예제 #12
0
        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);
        }
예제 #13
0
 private void SetElement(string type)
 {
     try
     {
         Enums.Element element = (Enums.Element)Enum.Parse(typeof(Enums.Element), type);
         if (Enum.IsDefined(typeof(Enums.Element), element) | element.ToString().Contains(","))
             this.element = element;
         else
         {
             this.element = Enums.Element.None;
             Debug.LogError("Unable to resolve " + type + " to a type.  Setting " + name + " to type None.");
         }
     }
     catch (ArgumentException)
     {
         this.type = Enums.CardTypes.Error;
         Debug.LogError("Unable to resolve " + type + " to a type.  Setting " + name + " to type Error.");
     }
 }
예제 #14
0
 private static Enums.PlayerState TauntWrasslemania(bool hit, bool animDone, Enums.Direction direction, Enums.CardTypes type, bool handEmpty, int playerNumber)
 {
     if (hit)
     {
         return(Enums.PlayerState.Hit);
     }
     if (animDone)
     {
         return(Enums.PlayerState.Idle);
     }
     return(Enums.PlayerState.TauntWrasslemania);
 }
예제 #15
0
 private static Enums.PlayerState VertiSwingHeavy(bool hit, bool animDone, Enums.Direction direction, Enums.CardTypes type, bool handEmpty, int playerNumber)
 {
     if (hit)
     {
         return(Enums.PlayerState.Hit);
     }
     if (animDone)
     {
         return(Enums.PlayerState.Idle);
     }
     return(Enums.PlayerState.VertiSwingHeavy);
 }
예제 #16
0
        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;
                    }
                }
            }
        }