1cfd74d65d832137e20e193c960802afba73b5d38sm/*
23c1e67e433728684b5f228c5d4f3e5b1457bb271sm * Copyright (C) 2010 The Android Open Source Project
3cfd74d65d832137e20e193c960802afba73b5d38sm *
4cfd74d65d832137e20e193c960802afba73b5d38sm * Licensed under the Apache License, Version 2.0 (the "License");
5cfd74d65d832137e20e193c960802afba73b5d38sm * you may not use this file except in compliance with the License.
6cfd74d65d832137e20e193c960802afba73b5d38sm * You may obtain a copy of the License at
7cfd74d65d832137e20e193c960802afba73b5d38sm *
8cfd74d65d832137e20e193c960802afba73b5d38sm *      http://www.apache.org/licenses/LICENSE-2.0
9cfd74d65d832137e20e193c960802afba73b5d38sm *
10cfd74d65d832137e20e193c960802afba73b5d38sm * Unless required by applicable law or agreed to in writing, software
11cfd74d65d832137e20e193c960802afba73b5d38sm * distributed under the License is distributed on an "AS IS" BASIS,
12cfd74d65d832137e20e193c960802afba73b5d38sm * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13cfd74d65d832137e20e193c960802afba73b5d38sm * See the License for the specific language governing permissions and
14cfd74d65d832137e20e193c960802afba73b5d38sm * limitations under the License.
15cfd74d65d832137e20e193c960802afba73b5d38sm */
16cfd74d65d832137e20e193c960802afba73b5d38sm
17cfd74d65d832137e20e193c960802afba73b5d38smpackage com.replica.replicaisland;
18cfd74d65d832137e20e193c960802afba73b5d38sm
19cfd74d65d832137e20e193c960802afba73b5d38smpublic class GenericAnimationComponent extends GameComponent {
20cfd74d65d832137e20e193c960802afba73b5d38sm    private SpriteComponent mSprite;
21cfd74d65d832137e20e193c960802afba73b5d38sm
22cfd74d65d832137e20e193c960802afba73b5d38sm    public GenericAnimationComponent() {
23cfd74d65d832137e20e193c960802afba73b5d38sm        super();
24cfd74d65d832137e20e193c960802afba73b5d38sm        setPhase(ComponentPhases.ANIMATION.ordinal());
25cfd74d65d832137e20e193c960802afba73b5d38sm        reset();
26cfd74d65d832137e20e193c960802afba73b5d38sm    }
27cfd74d65d832137e20e193c960802afba73b5d38sm
28cfd74d65d832137e20e193c960802afba73b5d38sm    @Override
29cfd74d65d832137e20e193c960802afba73b5d38sm    public void reset() {
30cfd74d65d832137e20e193c960802afba73b5d38sm        mSprite = null;
31cfd74d65d832137e20e193c960802afba73b5d38sm    }
32cfd74d65d832137e20e193c960802afba73b5d38sm
33cfd74d65d832137e20e193c960802afba73b5d38sm    @Override
34cfd74d65d832137e20e193c960802afba73b5d38sm    public void update(float timeDelta, BaseObject parent) {
35cfd74d65d832137e20e193c960802afba73b5d38sm        if (mSprite != null) {
36cfd74d65d832137e20e193c960802afba73b5d38sm            GameObject parentObject = (GameObject) parent;
37cfd74d65d832137e20e193c960802afba73b5d38sm            if (parentObject.facingDirection.x != 0.0f && parentObject.getVelocity().x != 0.0f) {
38cfd74d65d832137e20e193c960802afba73b5d38sm                parentObject.facingDirection.x = Utils.sign(parentObject.getVelocity().x);
39cfd74d65d832137e20e193c960802afba73b5d38sm            }
40cfd74d65d832137e20e193c960802afba73b5d38sm            switch(parentObject.getCurrentAction()) {
41cfd74d65d832137e20e193c960802afba73b5d38sm
42cfd74d65d832137e20e193c960802afba73b5d38sm                case IDLE:
43cfd74d65d832137e20e193c960802afba73b5d38sm                    mSprite.playAnimation(Animation.IDLE);
44cfd74d65d832137e20e193c960802afba73b5d38sm                    break;
45cfd74d65d832137e20e193c960802afba73b5d38sm                case MOVE:
46cfd74d65d832137e20e193c960802afba73b5d38sm                    mSprite.playAnimation(Animation.MOVE);
47cfd74d65d832137e20e193c960802afba73b5d38sm                    break;
48cfd74d65d832137e20e193c960802afba73b5d38sm                case ATTACK:
49cfd74d65d832137e20e193c960802afba73b5d38sm                    mSprite.playAnimation(Animation.ATTACK);
50cfd74d65d832137e20e193c960802afba73b5d38sm                    break;
51cfd74d65d832137e20e193c960802afba73b5d38sm                case HIT_REACT:
52cfd74d65d832137e20e193c960802afba73b5d38sm                    mSprite.playAnimation(Animation.HIT_REACT);
53cfd74d65d832137e20e193c960802afba73b5d38sm                    break;
54cfd74d65d832137e20e193c960802afba73b5d38sm                case DEATH:
55cfd74d65d832137e20e193c960802afba73b5d38sm                    mSprite.playAnimation(Animation.DEATH);
56cfd74d65d832137e20e193c960802afba73b5d38sm                    break;
57cfd74d65d832137e20e193c960802afba73b5d38sm                case HIDE:
58cfd74d65d832137e20e193c960802afba73b5d38sm                    mSprite.playAnimation(Animation.HIDE);
59cfd74d65d832137e20e193c960802afba73b5d38sm                    break;
60cfd74d65d832137e20e193c960802afba73b5d38sm                case FROZEN:
61cfd74d65d832137e20e193c960802afba73b5d38sm                    mSprite.playAnimation(Animation.FROZEN);
62cfd74d65d832137e20e193c960802afba73b5d38sm                    break;
63cfd74d65d832137e20e193c960802afba73b5d38sm                case INVALID:
64cfd74d65d832137e20e193c960802afba73b5d38sm                default:
65cfd74d65d832137e20e193c960802afba73b5d38sm                    mSprite.playAnimation(-1);
66cfd74d65d832137e20e193c960802afba73b5d38sm                    break;
67cfd74d65d832137e20e193c960802afba73b5d38sm            }
68cfd74d65d832137e20e193c960802afba73b5d38sm        }
69cfd74d65d832137e20e193c960802afba73b5d38sm    }
70cfd74d65d832137e20e193c960802afba73b5d38sm
71cfd74d65d832137e20e193c960802afba73b5d38sm    public void setSprite(SpriteComponent sprite) {
72cfd74d65d832137e20e193c960802afba73b5d38sm        mSprite = sprite;
73cfd74d65d832137e20e193c960802afba73b5d38sm    }
74cfd74d65d832137e20e193c960802afba73b5d38sm
75cfd74d65d832137e20e193c960802afba73b5d38sm
76cfd74d65d832137e20e193c960802afba73b5d38sm    public static final class Animation {
77cfd74d65d832137e20e193c960802afba73b5d38sm        public static final int IDLE = 0;
78cfd74d65d832137e20e193c960802afba73b5d38sm        public static final int MOVE = 1;
79cfd74d65d832137e20e193c960802afba73b5d38sm        public static final int ATTACK = 2;
80cfd74d65d832137e20e193c960802afba73b5d38sm        public static final int HIT_REACT = 3;
81cfd74d65d832137e20e193c960802afba73b5d38sm        public static final int DEATH = 4;
82cfd74d65d832137e20e193c960802afba73b5d38sm        public static final int HIDE = 5;
83cfd74d65d832137e20e193c960802afba73b5d38sm        public static final int FROZEN = 6;
84cfd74d65d832137e20e193c960802afba73b5d38sm    }
85cfd74d65d832137e20e193c960802afba73b5d38sm}
86