Home | History | Annotate | Download | only in combomoves
      1 /*
      2  * Copyright (c) 2009-2010 jMonkeyEngine
      3  * All rights reserved.
      4  *
      5  * Redistribution and use in source and binary forms, with or without
      6  * modification, are permitted provided that the following conditions are
      7  * met:
      8  *
      9  * * Redistributions of source code must retain the above copyright
     10  *   notice, this list of conditions and the following disclaimer.
     11  *
     12  * * Redistributions in binary form must reproduce the above copyright
     13  *   notice, this list of conditions and the following disclaimer in the
     14  *   documentation and/or other materials provided with the distribution.
     15  *
     16  * * Neither the name of 'jMonkeyEngine' nor the names of its contributors
     17  *   may be used to endorse or promote products derived from this software
     18  *   without specific prior written permission.
     19  *
     20  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     21  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
     22  * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
     23  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
     24  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
     25  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
     26  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
     27  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
     28  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
     29  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
     30  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     31  */
     32 
     33 package jme3test.input.combomoves;
     34 
     35 import java.util.ArrayList;
     36 import java.util.List;
     37 
     38 public class ComboMove {
     39 
     40     public static class ComboMoveState {
     41 
     42         private String[] pressedMappings;
     43         private String[] unpressedMappings;
     44         private float timeElapsed;
     45 
     46         public ComboMoveState(String[] pressedMappings, String[] unpressedMappings, float timeElapsed) {
     47             this.pressedMappings = pressedMappings;
     48             this.unpressedMappings = unpressedMappings;
     49             this.timeElapsed = timeElapsed;
     50         }
     51 
     52         public String[] getUnpressedMappings() {
     53             return unpressedMappings;
     54         }
     55 
     56         public String[] getPressedMappings() {
     57             return pressedMappings;
     58         }
     59 
     60         public float getTimeElapsed() {
     61             return timeElapsed;
     62         }
     63 
     64     }
     65 
     66     private String moveName;
     67     private List<ComboMoveState> states = new ArrayList<ComboMoveState>();
     68     private boolean useFinalState = true;
     69     private float priority = 1;
     70     private float castTime = 0.8f;
     71 
     72     private transient String[] pressed, unpressed;
     73     private transient float timeElapsed;
     74 
     75     public ComboMove(String moveName){
     76         this.moveName = moveName;
     77     }
     78 
     79     public float getPriority() {
     80         return priority;
     81     }
     82 
     83     public void setPriority(float priority) {
     84         this.priority = priority;
     85     }
     86 
     87     public float getCastTime() {
     88         return castTime;
     89     }
     90 
     91     public void setCastTime(float castTime) {
     92         this.castTime = castTime;
     93     }
     94 
     95     public boolean useFinalState() {
     96         return useFinalState;
     97     }
     98 
     99     public void setUseFinalState(boolean useFinalState) {
    100         this.useFinalState = useFinalState;
    101     }
    102 
    103     public ComboMove press(String ... pressedMappings){
    104         this.pressed = pressedMappings;
    105         return this;
    106     }
    107 
    108     public ComboMove notPress(String ... unpressedMappings){
    109         this.unpressed = unpressedMappings;
    110         return this;
    111     }
    112 
    113     public ComboMove timeElapsed(float time){
    114         this.timeElapsed = time;
    115         return this;
    116     }
    117 
    118     public void done(){
    119         if (pressed == null)
    120             pressed = new String[0];
    121 
    122         if (unpressed == null)
    123             unpressed = new String[0];
    124 
    125         states.add(new ComboMoveState(pressed, unpressed, timeElapsed));
    126         pressed = null;
    127         unpressed = null;
    128         timeElapsed = -1;
    129     }
    130 
    131     public ComboMoveState getState(int num){
    132         return states.get(num);
    133     }
    134 
    135     public int getNumStates(){
    136         return states.size();
    137     }
    138 
    139     public String getMoveName() {
    140         return moveName;
    141     }
    142 
    143 }
    144