///* // * Copyright 2014 The Skfiy Open Association. // * // * 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 war; // //import org.apache.commons.lang3.ArrayUtils; //import org.skfiy.typhon.script.Script; //import org.skfiy.typhon.session.Session; //import org.skfiy.typhon.spi.pve.Member; //import org.skfiy.typhon.spi.pve.PveAi; //import org.skfiy.typhon.util.FastRandom; // ///** // * // * @author Kevin Zou <kevinz@skfiy.org> // */ //public class AiFactoryScript implements Script { // // @Override // public Object invoke(Session session, Object obj) { // Member member = (Member) obj; // // PveAi[] ais = new PveAi[member.getAis().length]; // for (int i = 0; i < ais.length; i++) { // String ai = member.getAis()[i]; // switch (ai) { // case "S1": // ais[i] = new AiS1(); // break; // case "S2": // ais[i] = new AiS2(); // break; // case "S3": // ais[i] = new AiS3(); // break; // case "A1": // ais[i] = new AiA1(); // break; // case "A2": // ais[i] = new AiA2(); // break; // case "B1": // ais[i] = new AiB1(); // break; // case "B2": // ais[i] = new AiB2(); // break; // case "C1": // ais[i] = new AiC1(); // break; // case "C2": // ais[i] = new AiC2(); // break; // case "D1": // ais[i] = new AiD1(); // break; // case "D2": // ais[i] = new AiD2(); // break; // default: // throw new NullPointerException("No [" + ai + "] AI"); // } // } // // return ais; // } // // private static abstract class AbstractAi implements PveAi { // // private final FastRandom random; // private final double[] _orl_rates; // /** // * <pre> // * 0: GJi // * 1: QXi // * 2: Qi // * 3: BSa // * 4: Miss // * </pre> // */ // private double[] rates; // // AbstractAi(double[] rates) { // random = new FastRandom(); // this._orl_rates = rates; // // this.rates = ArrayUtils.clone(rates); // } // // @Override // public String ranAiSkill(Object obj) { // int i; // for (i = 0; i < rates.length; i++) { // if (rates[i] <= random.nextInt(100) + 1) { // break; // } // } // // if (isReset(i)) { // this.rates = ArrayUtils.clone(_orl_rates); // } else { // for (int j = 0; j < rates.length; j++) { // rates[i] = rates[i] + getRatePlus(i); // } // } // // switch (i) { // case 0: // return PveAi.SKILL_GJI; // case 1: // return PveAi.SKILL_QXI; // case 2: // return PveAi.SKILL_QI; // case 3: // return PveAi.SKILL_BSA; // default: // return PveAi.SKILL_MISS; // } // } // // protected abstract boolean isReset(int i); // // protected abstract int getRatePlus(int i); // // } // // private static class AiS1 extends AbstractAi { // // private static final double[] DEFAULT_RATES = {0, 0, 40, 0, 60}; // private static final int[] RATE_PLUS = {0, 0, 10, 0, -10}; // // AiS1() { // super(DEFAULT_RATES); // } // // @Override // public String getName() { // return "S1"; // } // // @Override // protected boolean isReset(int i) { // return (i == 2); // } // // @Override // protected int getRatePlus(int i) { // return RATE_PLUS[i]; // } // // } // // ================================================S1 End=========================================================== // // private static class AiS2 extends AbstractAi { // // private static final double[] DEFAULT_RATES = {60, 20, 40, 0, 0}; // private static final int[] RATE_PLUS = {-30, -10, 40, 0, 0}; // // AiS2() { // super(DEFAULT_RATES); // } // // @Override // public String getName() { // return "S2"; // } // // @Override // protected boolean isReset(int i) { // return (i == 2); // } // // @Override // protected int getRatePlus(int i) { // return RATE_PLUS[i]; // } // // } // // ================================================S2 End=========================================================== // // private static class AiS3 extends AbstractAi { // // private static final double[] DEFAULT_RATES = {10, 50, 0, 40, 0}; // private static final int[] RATE_PLUS = {-10, -50, 0, 60, 0}; // // AiS3() { // super(DEFAULT_RATES); // } // // @Override // public String getName() { // return "S3"; // } // // @Override // protected boolean isReset(int i) { // return (i == 3); // } // // @Override // protected int getRatePlus(int i) { // return RATE_PLUS[i]; // } // // } // // ================================================S3 End=========================================================== // // private static class AiA1 extends AbstractAi { // // private static final double[] DEFAULT_RATES = {60, 15, 25, 0, 0}; // private static final int[] RATE_PLUS = {-20, -5, 25, 0, 0}; // // AiA1() { // super(DEFAULT_RATES); // } // // @Override // public String getName() { // return "A1"; // } // // @Override // protected boolean isReset(int i) { // return (i == 2); // } // // @Override // protected int getRatePlus(int i) { // return RATE_PLUS[i]; // } // // } // // ================================================A1 End=========================================================== // // private static class AiA2 extends AbstractAi { // // private static final double[] DEFAULT_RATES = {0, 30, 0, 20, 50}; // private static final int[] RATE_PLUS = {0, -15, 0, 40, -25}; // // AiA2() { // super(DEFAULT_RATES); // } // // @Override // public String getName() { // return "A2"; // } // // @Override // protected boolean isReset(int i) { // return (i == 3); // } // // @Override // protected int getRatePlus(int i) { // return RATE_PLUS[i]; // } // // } // // ================================================A2 End=========================================================== // // private static class AiB1 extends AbstractAi { // // private static final double[] DEFAULT_RATES = {50, 35, 15, 0, 0}; // private static final int[] RATE_PLUS = {-10, -7, 15, 0, 0}; // // AiB1() { // super(DEFAULT_RATES); // } // // @Override // public String getName() { // return "B1"; // } // // @Override // protected boolean isReset(int i) { // return (i == 2); // } // // @Override // protected int getRatePlus(int i) { // return RATE_PLUS[i]; // } // // } // // ================================================B1 End=========================================================== // // private static class AiB2 extends AbstractAi { // // private static final double[] DEFAULT_RATES = {0, 30, 0, 20, 50}; // private static final int[] RATE_PLUS = {0, -15, 0, 40, -25}; // // AiB2() { // super(DEFAULT_RATES); // } // // @Override // public String getName() { // return "B2"; // } // // @Override // protected boolean isReset(int i) { // return (i == 3); // } // // @Override // protected int getRatePlus(int i) { // return RATE_PLUS[i]; // } // // } // // ================================================B2 End=========================================================== // // private static class AiC1 extends AbstractAi { // // private static final double[] DEFAULT_RATES = {80, 10, 10, 0, 0}; // private static final int[] RATE_PLUS = {-16, -2, 18, 0, 0}; // // AiC1() { // super(DEFAULT_RATES); // } // // @Override // public String getName() { // return "C1"; // } // // @Override // protected boolean isReset(int i) { // return (i == 2); // } // // @Override // protected int getRatePlus(int i) { // return RATE_PLUS[i]; // } // // } // // ================================================C1 End=========================================================== // // private static class AiC2 extends AbstractAi { // // private static final double[] DEFAULT_RATES = {0, 10, 0, 20, 70}; // private static final int[] RATE_PLUS = {0, -3, 0, 24, -21}; // // AiC2() { // super(DEFAULT_RATES); // } // // @Override // public String getName() { // return "C2"; // } // // @Override // protected boolean isReset(int i) { // return (i == 3); // } // // @Override // protected int getRatePlus(int i) { // return RATE_PLUS[i]; // } // // } // // ================================================C2 End=========================================================== // // private static class AiD1 extends AbstractAi { // // private static final double[] DEFAULT_RATES = {70, 20, 10, 0, 0}; // private static final int[] RATE_PLUS = {-14, -4, 18, 0, 0}; // // AiD1() { // super(DEFAULT_RATES); // } // // @Override // public String getName() { // return "D1"; // } // // @Override // protected boolean isReset(int i) { // return (i == 2); // } // // @Override // protected int getRatePlus(int i) { // return RATE_PLUS[i]; // } // // } // // ================================================D1 End=========================================================== // // private static class AiD2 extends AbstractAi { // // private static final double[] DEFAULT_RATES = {0, 0, 0, 10, 90}; // private static final int[] RATE_PLUS = {0, 0, 0, 15, -15}; // // AiD2() { // super(DEFAULT_RATES); // } // // @Override // public String getName() { // return "D2"; // } // // @Override // protected boolean isReset(int i) { // return (i == 3); // } // // @Override // protected int getRatePlus(int i) { // return RATE_PLUS[i]; // } // // } // // ================================================D2 End=========================================================== //}