/** * */ package ui; import java.awt.Point; import java.lang.reflect.InvocationTargetException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.HashMap; import org.apache.commons.beanutils.BeanUtils; import org.apache.commons.beanutils.PropertyUtils; import com.javaxyq.core.DataManager; import com.javaxyq.core.DataStore; import com.javaxyq.core.SpriteFactory; import com.javaxyq.data.CharacterUtils; import com.javaxyq.data.ItemInstance; import com.javaxyq.event.ActionEvent; import com.javaxyq.event.PanelEvent; import com.javaxyq.event.PanelHandler; import com.javaxyq.model.PlayerVO; import com.javaxyq.profile.Profile; import com.javaxyq.profile.ProfileException; import com.javaxyq.profile.ProfileManager; import com.javaxyq.profile.impl.ProfileManagerImpl; import com.javaxyq.ui.Label; import com.javaxyq.ui.Panel; import com.javaxyq.ui.TextField; import com.javaxyq.widget.Animation; /** * ��Ϸ���˵� * @author gongdewei * @date 2011-5-2 create */ public class create_role extends PanelHandler { private String character = "0003"; private String roleName; private static String[] attr_points = {"physique", "magic", "strength", "durability", "agility"}; private static String[] ���� = {"0001","0002","0003","0004"}; private static String[] ħ�� = {"0005","0006","0007","0008"}; private static String[] ���� = {"0009","0010","0011","0012"}; private static int[] �����ʼ���Ե� = {10, 10, 10, 10, 10}; private static int[] ħ���ʼ���Ե� = {12, 11, 11, 8, 8}; private static int[] �����ʼ���Ե� = {12, 5, 11, 12, 10}; public void initial(PanelEvent evt) { super.initial(evt); displayRoleInfo(); } /** * �ж�����array�Ƿ����ֵvalue * @return */ private static boolean inArray(String[] array, String value) { for (int i = 0; i < array.length; i++) { if(array[i].equals(value))return true; } return false; } private static void init_���Ե�(PlayerVO playerVo,int[] ��ʼ���Ե�){ for(int i=0; i<attr_points.length;i++){ try { PropertyUtils.setProperty(playerVo, attr_points[i], ��ʼ���Ե�[i]); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (InvocationTargetException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NoSuchMethodException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public void dispose(PanelEvent evt) { System.out.println("dispose: select_role "); } public void selectRole(ActionEvent evt) { character = evt.getArgumentAsString(0); displayRoleInfo(); } public void goback(ActionEvent evt) { Panel dlg = helper.getDialog("select_role"); helper.hideDialog(panel); helper.showDialog(dlg); } public void gonext(ActionEvent evt) { //TODO create profile TextField field = (TextField) panel.findCompByName("role_name"); roleName = field.getText(); if(roleName.trim().length() == 0) { helper.prompt("�������½����������д�����������", 3000); return; } try { ProfileManager profileManager = application.getProfileManager(); DataManager dataManager = application.getDataManager(); String filename = newProfileName(); String sceneId = "1506"; Profile profile = profileManager.newProfile(filename); PlayerVO playerVo = dataManager.createPlayerData(character); playerVo.setName(roleName); playerVo.setSceneLocation(new Point(38, 20)); playerVo.setMoney(1500000); if(inArray(����,playerVo.character)) { init_���Ե�(playerVo, �����ʼ���Ե�); }else if(inArray(ħ��,playerVo.character)) { init_���Ե�(playerVo, ħ���ʼ���Ե�); }else if(inArray(����,playerVo.character)) { init_���Ե�(playerVo, �����ʼ���Ե�); } dataManager.recalcProperties(playerVo); ItemInstance[] items = new ItemInstance[26]; ItemInstance item = dataManager.createItem("��Ҷ��",99); addItem(items, item); item = dataManager.createItem("����",99); addItem(items, item); item = dataManager.createItem("Ѫɫ�軨",99); addItem(items, item); item = dataManager.createItem("�����",99); addItem(items, item); createWeapon(character, items); profile.setPlayerData(playerVo); profile.setSceneId(sceneId); profile.setItems(items); profileManager.saveProfile(profile); helper.prompt("���ﴴ���ɹ���", 3000); try { String profileName = profile.getName(); application.loadProfile(profileName); application.enterScene(); } catch (ProfileException e) { System.err.println("������Ϸ�浵ʧ��!"); e.printStackTrace(); helper.prompt("������Ϸ�浵ʧ��!", 3000); } } catch (ProfileException e) { e.printStackTrace(); } } private void addItem(ItemInstance[] items, ItemInstance item) { for(int i=6;i<items.length;i++) { if(items[i] == null) { items[i] = item; break; } } } private String newProfileName() { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmssS"); return sdf.format(new Date()); } private void displayRoleInfo() { Label label = (Label) panel.findCompByName("role_head"); String filename = "/wzife/login/photo/selected/"+character+".tcp"; Animation anim = SpriteFactory.loadAnimation(filename); if(anim != null) { label.setAnim(anim); }else { System.err.println("displayRoleInfo failed: "+filename); } //TODO ����������Ϣ } private void createWeapon(String charName, ItemInstance[] items) { //�������� String[] weaponNames = null; if(CharacterUtils.char_0001.equals(charName)) { weaponNames = new String[] {"��ͭ�̽�","��ң����"}; }else if(CharacterUtils.char_0002.equals(charName)) { weaponNames = new String[] {"��Ҷ��"}; }else if(CharacterUtils.char_0003.equals(charName)) { }else if(CharacterUtils.char_0004.equals(charName)) { }else if(CharacterUtils.char_0005.equals(charName)) { }else if(CharacterUtils.char_0006.equals(charName)) { }else if(CharacterUtils.char_0007.equals(charName)) { }else if(CharacterUtils.char_0008.equals(charName)) { }else if(CharacterUtils.char_0009.equals(charName)) { weaponNames = new String[] {"�廢�ϻ�"}; }else if(CharacterUtils.char_0010.equals(charName)) { weaponNames = new String[] {"��ӧǹ","�廢�ϻ�","��ң����"}; }else if(CharacterUtils.char_0011.equals(charName)) { }else if(CharacterUtils.char_0012.equals(charName)) { } for (int i = 0; (weaponNames != null) && (i<weaponNames.length); i++) { ItemInstance item = dataManager.createItem(weaponNames[i]); addItem(items, item); } } }