/*******************************************************************************
* Copyright 2013 Pawel Pastuszak
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
******************************************************************************/
package pl.kotcrab.gdxcombat.fighters.ai;
import com.badlogic.gdx.math.MathUtils;
import pl.kotcrab.gdxcombat.fighters.AbstractFighter;
public class RandomBot implements BotInterface {
// Klawisze
private static final int KEY_JUMP = 0;
private static final int KEY_DUCK = 1;
private static final int KEY_LEFT = 2;
private static final int KEY_RIGHT = 3;
private static final int KEY_PUNCH = 4;
private static final int KEY_KICK = 5;
private static final int KEY_BLOCK = 6;
@Override
public void update(boolean[] keys, AbstractFighter controlled, AbstractFighter oponent) {
if (controlled.getState() == AbstractFighter.State.JUMP) {
keys[KEY_JUMP] = false;
keys[KEY_RIGHT] = false;
keys[KEY_LEFT] = false;
}
if (controlled.getState() == AbstractFighter.State.BLOCK)
keys[KEY_BLOCK] = false;
if (controlled.getState() == AbstractFighter.State.KICK)
keys[KEY_KICK] = false;
if (controlled.getState() == AbstractFighter.State.DUCK && MathUtils.random(10) == 10)
keys[KEY_DUCK] = false;
if (controlled.getState() == AbstractFighter.State.PUNCH) {
if (controlled.isCurrentAnimFinished() && MathUtils.random(100) == 10) {
keys[KEY_PUNCH] = false;
}
}
if (!controlled.isOponentInRange()) {
keys[KEY_LEFT] = true;
} else {
keys[KEY_LEFT] = false;
}
if (controlled.isOponentInRange()) {
if (oponent.getState() == AbstractFighter.State.BLOCK || oponent.getState() == AbstractFighter.State.DUCK)
return;
switch (MathUtils.random(10)) {
case 2:
keys[KEY_PUNCH] = true;
break;
case 5:
keys[KEY_KICK] = true;
break;
default:
break;
}
}
}
@Override
public void beingHit(boolean[] keys, AbstractFighter controlled) {
switch (MathUtils.random(7)) {
case 2:
keys[KEY_BLOCK] = true;
break;
case 3:
keys[KEY_JUMP] = true;
break;
case 4:
keys[KEY_JUMP] = true;
keys[KEY_RIGHT] = true;
break;
case 5:
keys[KEY_DUCK] = true;
break;
default:
break;
}
}
}