Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
profet Instanton Gravitationnel Singulier
Inscrit le: 21 Aoû 2007 Messages: 1633 Sujets: 53 Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...) Médailles: 2 (En savoir plus...)
|
Posté le: 26/08/08 12:43 Sujet du message: [vJass] FWTypes (FWCore) |
|
|
Voici une petite librairie comportant quelques types personalisés pour mon futur framework Jass.
Elle est par exemple utilisée par FWStrings.
Nom du systeme :FWTypes (FWCore)
Créateur : profet
Prérequis : jassHelper (newgenpack)
Code :
Jass: |
//! textmacro FWTypes takes TYPE, NULLVALUE, SIZE
struct $TYPE$array //max 819 instances
private integer vcount = 0
private $TYPE$ array values[$SIZE$]
//Returns the count of stored elements.
method operator Count takes nothing returns integer
return .vcount
endmethod
//Returns the maximum size of the array
method operator Size takes nothing returns integer
return .values.size
endmethod
//Returns the maximum instance count of the type.
method operator MaxInstances takes nothing returns integer
return R2I(8190./I2R(.values.size))
endmethod
//Gives a fast way to access array's values by using [ ].
method operator [] takes integer index returns $TYPE$
if( index<.values.size )then
return .values[index]
endif
return $NULLVALUE$
endmethod
//Gives a fast way to set a value of the array by using [ ]=.
method operator []= takes integer index, $TYPE$ value returns nothing
if( index<.values.size )then
if( index>=.vcount )then
set .vcount = index + 1
endif
set .values[index] = value
endif
endmethod
//Adds one element to the end of the array and returns the new length, returns -1 if full.
method Push takes $TYPE$ value returns integer
if( .vcount<.values.size )then
set .values[.vcount] = value
set .vcount = .vcount + 1
return .vcount
endif
return -1
endmethod
//Removes and returns the first element.
method Shift takes nothing returns $TYPE$
local integer i=0
local integer j=1
local $TYPE$ r
if( .vcount>0 )then
set r = .values[0]
loop
exitwhen( i==.vcount )
set .values[i] = .values[j]
set i=j
set j=j+1
endloop
set .vcount = .vcount - 1
return r
endif
return $NULLVALUE$
endmethod
//Removes and returns the last element.
method Pop takes nothing returns $TYPE$
if( .vcount>0 )then
set .vcount = .vcount - 1
return .values[.vcount]
endif
return $NULLVALUE$
endmethod
//Deletes and returns the specified element.
method Delete takes integer i returns $TYPE$
local integer j=i+1
local $TYPE$ r
if( i>=0 and i<.vcount )then
set r = .values[i]
loop
exitwhen( i==.vcount )
set .values[i] = .values[j]
set i=j
set j=j+1
endloop
set .vcount = .vcount - 1
return r
endif
return $NULLVALUE$
endmethod
//Appends values of another array (to the end).
method Join takes $TYPE$array arr returns nothing
local integer i = 0
loop
exitwhen( i==arr.vcount or .vcount==.values.size )
call .Push(arr[i])
set i=i+1
endloop
endmethod
//Copies values of another array. ARRAY'S VALUES WILL BE DELETED !
method Copy takes $TYPE$array arr returns nothing
local integer i = 0
loop
exitwhen40; i==arr.vcount )
set .values[i] = arr.values[i]
set i=i+1
endloop
set .vcount = arr.vcount
endmethod
//Deletes all stored values.
method Clear takes nothing returns nothing
set .vcount = 0
endmethod
endstruct
//! endtextmacro
//! runtextmacro FWTypes("integer","0","100")
//! runtextmacro FWTypes("real","0.","100")
//! runtextmacro FWTypes("string","null","100")
|
Note: vous pouvez rajouter des types très simplement en rajoutant les //! runtextmacro correspondants.
Utilisation :
Jass: |
function test takes nothing returns nothing
local stringarray sa1 = stringarray.create()
local stringarray sa2 = stringarray.create()
local integer i=0
set sa1[0] = "Number 1"
call sa1.Push("Number 2")
call BJDebugMsg( sa1[1] ) //affiche "Number 2
set sa2[1] = "Number 3"
call sa1.Join( sa2 )
loop
exitwhen( i==sa1.Count)
call BJDebugMsg( sa1[i] )
set i=i+1
endloop
//affiche:
// "Number 1"
// "Number 2"
// ""
// "Number 3"
//et on oublie pas de détruire les instances des struct
call sa1.destroy()
call sa2.destroy()
endfunction
|
Copyright : Comme pour toutes les autres librairies que je posterai, citez juste le framework Jass "FW", et un petit lien vers nok.warmods.org où il y aura une doc créée prochainement pour ce framework.
Remarques : néant. _________________
Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70%
Dernière édition par profet le 10/10/08 18:49; édité 3 fois |
|
Revenir en haut |
|
|
profet Instanton Gravitationnel Singulier
Inscrit le: 21 Aoû 2007 Messages: 1633 Sujets: 53 Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...) Médailles: 2 (En savoir plus...)
|
Posté le: 27/09/08 21:20 Sujet du message: |
|
|
Je vois que je n'ai pas expliqué ce que font les méthodes, et que la balise jass bug... je corrigerai ça le plus rapidement possible.
Je pense néanmoins que vous pouvez quand meme vous servir de ces code en supprimant la methode print() ou en ajoutant les parenthèses buggées _________________
Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70% |
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
|
Revenir en haut |
|
|
Magus Membre a fort taux de post
Inscrit le: 13 Oct 2007 Messages: 994 Sujets: 25 Spécialité en worldedit: Codeur
|
|
Revenir en haut |
|
|
Troll-Brain Ri1kamoua
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
|
Posté le: 28/09/08 11:17 Sujet du message: |
|
|
Faudrait les mettre en vert et réserver le gris pour les macros. _________________
Le violet, c'est moche. |
|
Revenir en haut |
|
|
profet Instanton Gravitationnel Singulier
Inscrit le: 21 Aoû 2007 Messages: 1633 Sujets: 53 Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...) Médailles: 2 (En savoir plus...)
|
Posté le: 28/09/08 15:21 Sujet du message: |
|
|
Faudrait que je voie avec Ayane pour récupérer le code source de ce colorisateur, c'est lui qui s'en était chargé.
A moins qu'il ne veuille s'en charger lui meme _________________
Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70% |
|
Revenir en haut |
|
|
profet Instanton Gravitationnel Singulier
Inscrit le: 21 Aoû 2007 Messages: 1633 Sujets: 53 Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...) Médailles: 2 (En savoir plus...)
|
Posté le: 28/09/08 15:45 Sujet du message: |
|
|
Troll-Brain a écrit: | @Profet : Pour me faire pardonner de ce floodage je regarderais ton code d'ici quelques jours, histoire que tu ais quelques commentaires constructifs dans ce post | Youpi, je désespérais depuis le 26 Aout^^
D'ailleurs je vais surement bientôt poster une nouvelle version, j'ai quelque peu modifié certaines méthodes.
Si d'ailleurs vous avez des idées de méthodes, faites le moi savoir (je vais peut être implémenter une méthode de tri un de ces jours, qui sait) _________________
Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70% |
|
Revenir en haut |
|
|
Rommstein60 MODÉRATEUR À LA RETRAITE
Inscrit le: 23 Aoû 2007 Messages: 4766 Sujets: 136 Spécialité en worldedit: Keskesapeutfout' Médailles: 1 (En savoir plus...)
|
|
Revenir en haut |
|
|
profet Instanton Gravitationnel Singulier
Inscrit le: 21 Aoû 2007 Messages: 1633 Sujets: 53 Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...) Médailles: 2 (En savoir plus...)
|
Posté le: 28/09/08 15:59 Sujet du message: |
|
|
Rommstein60 a écrit: | Sinon profet je comprend ton grand désespoir, mais vu que je suis marié avec le GUI je ne le tromperai jamais [/color] | Ca va faire des bébé difformes tout ça... _________________
Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70% |
|
Revenir en haut |
|
|
Rommstein60 MODÉRATEUR À LA RETRAITE
Inscrit le: 23 Aoû 2007 Messages: 4766 Sujets: 136 Spécialité en worldedit: Keskesapeutfout' Médailles: 1 (En savoir plus...)
|
|
Revenir en haut |
|
|
Brissou de Mourièssou Créateur de sorts, depuis 1936.
Inscrit le: 30 Aoû 2007 Messages: 1510 Sujets: 26 Spécialité en worldedit: Développer des jeux vidéos pour le fun, donc world edit c'est comme faire une addition. Médailles: 2 (En savoir plus...)
|
Posté le: 01/10/08 19:40 Sujet du message: |
|
|
Qques idées utile pour améliorer:
Tu as mis la fonction push, mais pas la pop en général on met les 2.
Tu as oublié une fonction empty, qui teste si l'array est vide ou non, c'est souvent utile et plus propre que de tester la taille.
Et enfin une fonction clear pour vider tout le contenu.
Il existe aussi swap, pour copier tout le contenu d'un array vers un autre. _________________
|
|
Revenir en haut |
|
|
profet Instanton Gravitationnel Singulier
Inscrit le: 21 Aoû 2007 Messages: 1633 Sujets: 53 Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...) Médailles: 2 (En savoir plus...)
|
Posté le: 01/10/08 20:04 Sujet du message: |
|
|
Dans ma nouvelle version j'ai push, shift, pop et join.
(que je posterai bientot d'ailleurs )
PS: je note pour clear, sinon la fonction empty je la trouve un peu inutile étant donné que l'on peut faire array.count==0 _________________
Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70% |
|
Revenir en haut |
|
|
profet Instanton Gravitationnel Singulier
Inscrit le: 21 Aoû 2007 Messages: 1633 Sujets: 53 Spécialité en worldedit: Pain d'épice multitâche (terrain, scripts, textures, modèles...) Médailles: 2 (En savoir plus...)
|
Posté le: 10/10/08 18:35 Sujet du message: |
|
|
J'ai mis à jour la version du premier post, il s'agira de la version définitive si aucun bug n'est trouvé ou demande importante n'est faite
EDIT: j'ai également utilisé les textmacros afin d'éviter de copier/coller du code similaire inutilement _________________
Bêta Systems: 70%
Bêta Spells: 13%
Bêta Arts & graphics: 70% |
|
Revenir en haut |
|
|
|