Heureusement que j'ai écourté beaucoup de phrases et ai même supprimé quelques lignes, c'est long tout ça.
En passant, l'emu prend toujours 2~3Mb.
0.0.16 [26 Décembre]
- FIXME faut corriger la gérance des statistiques à la création et chargement
- Remodelé le GHandler.createPerso et deletePerso
- Ajouté method GPerso.createNew
- Ajouté method GStats.createNew
- Ajouté method GStats.terminate
- Ajouté method sqlPerso.deleteCharac
- Modif method sqlPerso.createCharac (mit des setByte pour les PA/PM)
- Ajouté method sqlPerso.saveCharac
- Modifié le Perso.terminate, ajouté la save+termination de charac
- Déplacé le call à sqlPerso.createCharac pour mettre dans GHandler.createPerso à coté du SqlPerso.create()
- Corrigé finalement les stats grâce à des casts.
- Mit l'energy/statspoints/spellpoints dans la map<> stats (dans GStatistiques) au lieu d'un short à part
- Corrigé l'affichage de l'XP dans packet As
- ... ca va assez bien, cest mieux qu'avant en tout cas :)
0.0.17 [27 Décembre 12]
- Mit les Queue en objet à chaque GServer
- Modifié la ScheduleTask pour enlever un compte d'une Queue (Ajouté le parametre obj[1] GServer)
- Modifié tous les rapports à Queue.updateQueueAccounts
- Modifié LWorld.isAccountInQueue pour vérifier dans toutes les queues objets
- Corrigé bug chat, c'tais à cause du message de bienvenue dans le config qui était mal écrit, il manquait un ' dedans.
- Ajouté les Orientations dans une nouvelle enum
0.0.18 [30 Décembre 12]
- Ajouté le parsing des changements d'orientations au complet.
- Ajouté que si le perso est assit et qu'ildemande une orientation non-diagonale (c'qui ferait bug l'affichage), on renvoie l'orientation suivant la demandée (orientation + 1. Ex: demande NORTH, renvoie NORTH_EAST)
- Bougé la constante channels dans CPerso au lieu de Constants
- Ajouté une byte[] pour contenir les ID d'emotes apprises par le perso
- TODO : mettre une colonne emotes dans table perso pour les save
- Ajouté method addEmote et removeEmote dans perso
- Ajouté addByteToArray et removeByteFromArray dans Utils
- Ajouté addElementToArray et removeElementFromArray dans Utils
- Ajouté que si on est assit et qu'on fait l'emote asseoir, le perso se leve debout
- Ajouté une verif de si le destinataire est en combat quand on envoie le packet eD (changeDirection) aux persos de la map.
- Changé les types des valeurs des EmoteEnums de int à byte.
- Ajouté packet BD
- Corrigé un throwException dans les Exceptions. le NumberFormat lancait un NullPointer, erreur de c/c.
- TODO finir les effets des emotes (gagner vie en mangeant pain, faire bouger une drago, etc)
0.0.19 [31 Décembre 12]
- Corrigé/finit systeme de régénération automatique + en étant assi/couché avec pascket As etc.
Le packet As prend 0ms à faire et envoyer au complet
Donc fini la classe LifeRegenerator et le bout dans Factory.UtilityThread.REGENERATE_LIFE
- Mit les pdvMax correctement au chargement des stats dans SqlPerso.loadStats et dans Stats.createNew();
C'est pour avoir la bonne vie de base en fonction du level (+5pdv par niveau)
- Ajouté commande SETPDV dans GM4 dans le consolePlugin.
- Changé la grosseur de base du StringBuilder du packet As de 500 à 400
- Ajouté une petite sous-classe Perfs dans les Utils pour tester le temps d'exécution sde certaines méthodes/actions.
- Modifié le temps entre chaque tick du timer de regen. 1000 au lieu de 2000ms
0.0.20 [1 Janvier 13]
- Commencé à faire les packets de Queue comme il faut
- Ajouté packet Aq
- Vérifié les ref au packet SM.Account.Af
- Ajouté un objet Queue dans le LoginServer [Aussitot enlevé]
- Enlevé les anciens envois d'Af et rajouté:
Une dans LServerSelectionHandler quand on recoit AX
Une dans GHandler quand on recoit Af
- Bon sinon les packets de queue (Af) sont les bons et fonctionnent bien.
Y'a juste les int numberOfPremium dans le LServer qui sont à surveiller
Ex. si qqn se connecte, ca augmente le chiffre et ce dernier redescend lors de l'arrivée au choix de serveur, mais il se peut qu'il ne soit pas
décrémenté si on se déconnecte au bon moment.
- Ajouté packets BAT0, BAT1 et BAT2 dans SM.Basics (BAT_NEUTRAL,FAIL,SUCCESS)
- Faudra changer les SM.Messages.MC pour ces packets là et bien utiliser les fails/success/info
- Remit la grosseur de base du StringBuilder du packet As de 400 à 500
0.0.21 [2 Janvier 13]
- Corrigé le bug des pdv qui arrivait en déconnectant/reconnectant (Les pdv étaient settés au pdvMax)
- Testé la vitesse de String.format VS new StrinbBuilder.append();
Le StringBuilder est presque 20 fois plus vite..(Sur mon vieux portable)
Ajouté la methode pour ce test dans Misc.Tests
- Ajouté addIntToArray/removeIntFromArray adns Utils
- Ajouté methodes add/remove Friend/Ennemy/Ignored dans LAccount
- Minibug: si tu set le lvl à (ex) 47 quand tu étais lvl 1, en te connectant, l'xp reste à 0 mais sur 4 400 000..
ça sera juste simplement à gérer dans une commande SETLVL ou whatever genre perso.incrementXP
- Ajouté classe Formulas
- Ajouté method calculateInitiative dans Formulas (Manque juste d'additionner le bonus d'alignement la dedans)
+ ajouté constante CPerso.gainedInitByIntelAndAgiPoints
- FIXME Ajouté methode calculatePods dans Formulas [TODO: manque calcul avec les métiers]
+ Ajouté constante CPerso.startPods
- Ajouté methode calculateProspection dans Formulas
+ ajouté constante CPerso.gainedProspecByChancePoints
- Modifié le packet SM.Account.As: ajouté la valeur du calcul de l'initiative et de la prospec.
- Modifié la methode GStats.getPacket, enlevé le getValue(INIT, BASE) et prospec au début de la méthode
vu qu'ils sont maintenant dans le SM.Account.As
- Ajouté le boost de characteristiques dans GGameHandler.parseAccounts (RECV Packet AB)
+ Ajouté constante CPerso.characPointsByBoost
L'initiative est bien calculée et affichée chaque fois qu'on boost une charac
Le nombre max de pods aussi en boostant la force
Et la prospec aussi en boostant la chance.
- Créé class SM.Objects
- Ajouté methode Ow dans SM.Objects pour afficher les usedPods sur les maxPods quand on ouvre l'inventaire.
- Renommé LItemTemplate en ItemTemplate
- Ajouté une ArrayList d'itemTemplates dans le GWorld
- Ajouté méthodes getItemTemplate et addItemTemplate dans GWorld
- Créé class GlobalWorld dans GlobalObjects
- Ajouté methode getItemTemplate dans GlobalWorld
- Changé l'int templateID dans GItem pour un ItemTemplate "template"
- Renommé toutes les methodes référant à l'ancien templateID en getTemplate, etc
- Ajouté methode getPods dans GItem (qui va chercher sa valeur dans template.getPods)
- Ajouté methode getPods setPods dans ItemTemplate
- Ajouté variable pods dans l'array "params" dans ItemTemplate
- Ajouté methode getUsedPods dans GInventory pour savoir le poids total utilisé par tous les items de l'inventaire
- Dans la methode SM.Objects.Ow: mit le packet "Ow"+inventory.getUsedPods+'|'+Formulas.calculatePods
- TODO: Faire la table ItemTemplates dans les bdd login ET worlds
(la même structure) (+Mettre tous les items officiels dans celle du login)
À faire en fonction de la methode SQL.Items.loadTemplate que j'ai déjà commencée
- TODO: Finir méthode GInventory.getBonusPods pour avoir le total de bonus de pods sur les items équipés
pour calculer le nombre de pods max du perso.
- TODO: Finir la méthode Formulas.calculteMaxPods utilisant le inventory.getBonusPods (Manque ca et les bonus par les métiers)
- TODO: Finir l'enum des Effects
- Ajouté methode getMap dans GlobalWorld pour pogner une map dans gworld, Gbdd, LWorld ou Lbdd
- Changé la methode perso.getMap pour mettre GlobalWorld.getMap dedans
- Ajouté ref à SM.Objects.Ow dans perso.onSelected et dans le boost de charac dans GGameHandler.parseAccounts (RECV Packet "AB")
Ca fonctionne bien: l'affichage est parfait et quand on boost la force, le maxPods monte.
- TODO: Faire la vérification d'avoir le bon nombre de capital pour booster une charac et retirer ce nombre apres l'avoir booster
0.0.22 [4 Janvier 13]
- Ajouté GMCommand GETCOMMANDS
- Changé tous les SM.Messages.MC dans le ConsoleListener pour des SM.Basics.BAT_XXX
- Ajouté les constantes minimumIDinWorldItemTemplateTable et pour les maps dans CServers.
Les deux à 15000 et modifié GlobalWorld.getXXX()
Il ne sera donc plus possible d'overrider un objet du login dans un world, seulement de l'utiliser ou d'en créer des nouveaux.
- Fini les constantes d'index pour les parametres dans les arrays de GPersonnage
- Installé ces constantes dans GPersonnages à chaque fois qu'on utilisait un call aux arrays[]
- Ajouté des constantes pour des Im messages dans Constants
- Mit le mapID de GPersonnage et ICharacter en int plutôt qu'en short
mais à vrai dire, il faudrait le mettre en short
et interdire aux créateurs d'utiliser des ID > 32000 et < 15000
Pareillement pour les ItemTemplate ID
- Ajouté method parseObjects dans GGameHandler
- Commencé la table ItemTemplate
- Testé Syn sur le dédié: apparemment les GameServers et peut-être meme le Login se OFF pas quand on éteind l'emu
C'est alors que j'ai remarqué que le Syn.closeAll du shutDownHook n'était pas faire donc :
Commencé le Syn.closeAll et le LServer.off();. xd
0.0.23 [5 Janvier 12]
- Étant donné Que le Syn.closeAll et LServer.off n'était pas faits, j'ai du faire beaucoup de travail par rapport à ca :
- Ajouté le .off() dans LServer
- Ajouté saveAll dans LWorld
- Ajouté .save dans SQL.Accounts
- Modifié .load dans SQL.Accounts
- Delete l'array de banques dans LAccount
- Mis une string contenant les serverID des banques du perso dans LAccount (à la place de l'array)
- Changé LBank pour GBank
- Enlevé la table banks de la bdd du login
- Mis la table banks dans les bdd des worlds
- Modifié la table banks: changé colonne id pour accountID, ajouté kamas et ajouté items.
- Mit la table banks nécéssaire aux worlds dans SQL.BDDWorldTemplate et enlevé de SQL.BDDLoginTemplate
- Delete la variable ID dans GBank
- Corrigé methodes GBank.delete et .terminate
- Complété methodes addItem, removeItem, getItems, getItemById, emptyItems, deleteItem dans GBank
- Ajouté variable long kamas dans GBank
- Ajouté methode setKamas et getKamas dans GBank
- Ajouté method getItemsString dans GBank
- Créé une HashMap de dans GWorld
- Ajouté method getBanks, setBanks, getBank(accountID), addBank(accountID,bank), removeBank(accountID)
- Ajouté static String load/create/save/deleteBankQuery dans SQL.Banks
- Ajouté methode create, saveBank, delete et load dans SQL.Banks
- Ajouté la création de banque quand un compte se créé un new perso dans un nouveau world
- Ajouté le delete de banque quand le compte delete son dernier perso dans un world
- Ajouté le chargement de la banque du world du compte à la sélection du personnage
- Ajouté la termination de la banque quand le perso se déconnecte.
- Ajouté la sauvegarde de la banque quand le perso déconnecte.
- Ajouté la sauvegarde des items de la banque quand il se déco.
- Ajouté la sauvegarde du compte quand il se déconnecte.
- Créé interface IStorage.
- Ajouté method getItems(), getItemByID(id), removeItem(item), addItem(item) dans IStorage
- Implémenté IStorage dans GInventory et GBank
- J'ai pas testé, mais les banques devraient maintenant super bien marcher (on s'entend, sans la fonction de parler au pnj et de mettre/enlever des items/kamas, c'est juste la structure qui marche. Après, quand faudra mettre ces fonctions, ça sera hyper facile puisque tout est déjà en place)
- TODO: Finir LWorld.saveAll et .terminate la meme manière que dans GWorld.