summaryrefslogtreecommitdiffstats
path: root/src/particule.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/particule.cpp')
-rw-r--r--src/particule.cpp162
1 files changed, 81 insertions, 81 deletions
diff --git a/src/particule.cpp b/src/particule.cpp
index b2107a2..71e8ab6 100644
--- a/src/particule.cpp
+++ b/src/particule.cpp
@@ -1,4 +1,4 @@
-// * This file is part of the COLOBOT source code
+// * This file is part of the COLOBOT source code
// * Copyright (C) 2001-2008, Daniel ROUX & EPSITEC SA, www.epsitec.ch
// *
// * This program is free software: you can redistribute it and/or modify
@@ -12,7 +12,7 @@
// * GNU General Public License for more details.
// *
// * You should have received a copy of the GNU General Public License
-// * along with this program. If not, see http://www.gnu.org/licenses/.
+// * along with this program. If not, see http://www.gnu.org/licenses/.// particule.cpp
#define STRICT
#define D3D_OVERLOADS
@@ -46,7 +46,7 @@
-// V�rifie si un objet est destructible, mais pas un ennemi.
+// Vérifie si un objet est destructible, mais pas un ennemi.
BOOL IsSoft(ObjectType type)
{
@@ -93,10 +93,10 @@ BOOL IsSoft(ObjectType type)
type == OBJECT_ENERGY ||
type == OBJECT_LABO ||
type == OBJECT_NUCLEAR ||
- type == OBJECT_PARA ); // b�timent ?
+ type == OBJECT_PARA ); // bâtiment ?
}
-// V�rifie si un objet est un ennemi destructible.
+// Vérifie si un objet est un ennemi destructible.
BOOL IsAlien(ObjectType type)
{
@@ -113,7 +113,7 @@ BOOL IsAlien(ObjectType type)
type == OBJECT_TEEN31 );
}
-// Retourne le facteur d'at�numation pour les tirs amis.
+// Retourne le facteur d'aténumation pour les tirs amis.
float RetDecay(ObjectType type)
{
@@ -227,7 +227,7 @@ void CParticule::FlushParticule(int sheet)
// Construit le nom de fichier de l'effet.
-// effectNN.tga, avec NN = num�ro
+// effectNN.tga, avec NN = numéro
void NameParticule(char *buffer, int num)
{
@@ -243,8 +243,8 @@ void NameParticule(char *buffer, int num)
}
-// Cr�� une nouvelle particule.
-// Retourne le canal de la particule cr�e ou -1 en cas d'erreur.
+// Créé une nouvelle particule.
+// Retourne le canal de la particule crée ou -1 en cas d'erreur.
int CParticule::CreateParticule(D3DVECTOR pos, D3DVECTOR speed, FPOINT dim,
ParticuleType type,
@@ -448,8 +448,8 @@ int CParticule::CreateParticule(D3DVECTOR pos, D3DVECTOR speed, FPOINT dim,
return -1;
}
-// Cr�� une nouvelle particule triangulaire (d�bris).
-// Retourne le canal de la particule cr�e ou -1 en cas d'erreur.
+// Créé une nouvelle particule triangulaire (débris).
+// Retourne le canal de la particule crée ou -1 en cas d'erreur.
int CParticule::CreateFrag(D3DVECTOR pos, D3DVECTOR speed,
D3DTriangle *triangle,
@@ -556,8 +556,8 @@ int CParticule::CreateFrag(D3DVECTOR pos, D3DVECTOR speed,
return -1;
}
-// Cr�� une nouvelle particule �tant une partie d'objet.
-// Retourne le canal de la particule cr�e ou -1 en cas d'erreur.
+// Créé une nouvelle particule étant une partie d'objet.
+// Retourne le canal de la particule crée ou -1 en cas d'erreur.
int CParticule::CreatePart(D3DVECTOR pos, D3DVECTOR speed,
ParticuleType type,
@@ -608,8 +608,8 @@ int CParticule::CreatePart(D3DVECTOR pos, D3DVECTOR speed,
return -1;
}
-// Cr�� une nouvelle particule lin�aire (rayon).
-// Retourne le canal de la particule cr�e ou -1 en cas d'erreur.
+// Créé une nouvelle particule linéaire (rayon).
+// Retourne le canal de la particule crée ou -1 en cas d'erreur.
int CParticule::CreateRay(D3DVECTOR pos, D3DVECTOR goal,
ParticuleType type, FPOINT dim,
@@ -671,8 +671,8 @@ int CParticule::CreateRay(D3DVECTOR pos, D3DVECTOR goal,
return -1;
}
-// Cr�e une particule avec une tra�n�e.
-// "length" est la dur�e de la queue de la tra�n�e (en secondes) !
+// Crée une particule avec une traînée.
+// "length" est la durée de la queue de la traînée (en secondes) !
int CParticule::CreateTrack(D3DVECTOR pos, D3DVECTOR speed, FPOINT dim,
ParticuleType type, float duration, float mass,
@@ -680,11 +680,11 @@ int CParticule::CreateTrack(D3DVECTOR pos, D3DVECTOR speed, FPOINT dim,
{
int channel, rank, i;
- // Cr�e la particule normale.
+ // Crée la particule normale.
channel = CreateParticule(pos, speed, dim, type, duration, mass, 0.0f, 0);
if ( channel == -1 ) return -1;
- // Cherche une tra�n�e libre.
+ // Cherche une traînée libre.
for ( i=0 ; i<MAXTRACK ; i++ )
{
if ( !m_track[i].bUsed ) // libre ?
@@ -708,7 +708,7 @@ int CParticule::CreateTrack(D3DVECTOR pos, D3DVECTOR speed, FPOINT dim,
return channel;
}
-// Cr�e une trace de pneu.
+// Crée une trace de pneu.
void CParticule::CreateWheelTrace(const D3DVECTOR &p1, const D3DVECTOR &p2,
const D3DVECTOR &p3, const D3DVECTOR &p4,
@@ -756,8 +756,8 @@ void CParticule::CreateWheelTrace(const D3DVECTOR &p1, const D3DVECTOR &p2,
}
-// Check un num�ro de canal.
-// Adapte le canal pour qu'il puisse �tre utilis� comme offset
+// Check un numéro de canal.
+// Adapte le canal pour qu'il puisse être utilisé comme offset
// dans m_particule.
BOOL CParticule::CheckChannel(int &channel)
@@ -790,7 +790,7 @@ BOOL CParticule::CheckChannel(int &channel)
return TRUE;
}
-// Supprime une particule d'apr�s son rang.
+// Supprime une particule d'après son rang.
void CParticule::DeleteRank(int rank)
{
@@ -802,15 +802,15 @@ void CParticule::DeleteRank(int rank)
}
i = m_particule[rank].trackRank;
- if ( i != -1 ) // tra�n�e associ�e ?
+ if ( i != -1 ) // traînée associée ?
{
- m_track[i].bUsed = FALSE; // lib�re la tra�n�e
+ m_track[i].bUsed = FALSE; // libère la traînée
}
m_particule[rank].bUsed = FALSE;
}
-// Supprime toutes les particules d'un type donn�.
+// Supprime toutes les particules d'un type donné.
void CParticule::DeleteParticule(ParticuleType type)
{
@@ -825,7 +825,7 @@ void CParticule::DeleteParticule(ParticuleType type)
}
}
-// Supprime une particule d'apr�s son canal.
+// Supprime une particule d'après son canal.
void CParticule::DeleteParticule(int channel)
{
@@ -839,16 +839,16 @@ void CParticule::DeleteParticule(int channel)
}
i = m_particule[channel].trackRank;
- if ( i != -1 ) // tra�n�e associ�e ?
+ if ( i != -1 ) // traînée associée ?
{
- m_track[i].bUsed = FALSE; // lib�re la tra�n�e
+ m_track[i].bUsed = FALSE; // libère la traînée
}
m_particule[channel].bUsed = FALSE;
}
-// Sp�cifie l'objet auquel la particule est li�e.
+// Spécifie l'objet auquel la particule est liée.
void CParticule::SetObjectLink(int channel, CObject *object)
{
@@ -856,7 +856,7 @@ void CParticule::SetObjectLink(int channel, CObject *object)
m_particule[channel].objLink = object;
}
-// Sp�cifie l'objet p�re qui a cr�� la particule.
+// Spécifie l'objet père qui a créé la particule.
void CParticule::SetObjectFather(int channel, CObject *object)
{
@@ -923,14 +923,14 @@ BOOL CParticule::GetPosition(int channel, D3DVECTOR &pos)
}
-// Indique si une feuille �volue ou non.
+// Indique si une feuille évolue ou non.
void CParticule::SetFrameUpdate(int sheet, BOOL bUpdate)
{
m_bFrameUpdate[sheet] = bUpdate;
}
-// Fait �voluer toutes les particules.
+// Fait évoluer toutes les particules.
void CParticule::FrameParticule(float rTime)
{
@@ -989,7 +989,7 @@ void CParticule::FrameParticule(float rTime)
progress = (m_particule[i].time-m_particule[i].phaseTime)/m_particule[i].duration;
- // G�re les particules avec masse qui rebondissent.
+ // Gère les particules avec masse qui rebondissent.
if ( m_particule[i].mass != 0.0f &&
m_particule[i].type != PARTIQUARTZ )
{
@@ -1027,7 +1027,7 @@ void CParticule::FrameParticule(float rTime)
m_particule[i].speed.z *= 0.4f;
m_particule[i].bounce ++; // un choc de plus
}
- else // dispara�t apr�s 3 rebonds ?
+ else // disparaît après 3 rebonds ?
{
if ( m_particule[i].pos.y < h-10.0f ||
m_particule[i].time >= 20.0f )
@@ -1039,9 +1039,9 @@ void CParticule::FrameParticule(float rTime)
}
}
- // G�re la tra�n�e associ�e.
+ // Gère la traînée associée.
r = m_particule[i].trackRank;
- if ( r != -1 ) // tra�n�e existe ?
+ if ( r != -1 ) // traînée existe ?
{
if ( TrackMove(r, m_particule[i].pos, progress) )
{
@@ -1072,7 +1072,7 @@ void CParticule::FrameParticule(float rTime)
ti.y = ts.y+0.125f;
}
- if ( m_particule[i].type == PARTITRACK3 ) // araign�e ?
+ if ( m_particule[i].type == PARTITRACK3 ) // araignée ?
{
m_particule[i].zoom = 1.0f-(m_particule[i].time-m_particule[i].duration);
@@ -1147,7 +1147,7 @@ void CParticule::FrameParticule(float rTime)
ti.y = ts.y+0.125f;
}
- if ( m_particule[i].type == PARTITRACK12 ) // tra�n�e r�acteur ?
+ if ( m_particule[i].type == PARTITRACK12 ) // traînée réacteur ?
{
m_particule[i].zoom = 1.0f;
@@ -1413,7 +1413,7 @@ void CParticule::FrameParticule(float rTime)
m_particule[i].goal = m_particule[i].pos;
if ( object != 0 )
{
- if ( object->RetShieldRadius() > 0.0f ) // prot�g� par bouclier ?
+ if ( object->RetShieldRadius() > 0.0f ) // protégé par bouclier ?
{
CreateParticule(m_particule[i].pos, D3DVECTOR(0.0f, 0.0f, 0.0f), FPOINT(6.0f, 6.0f), PARTIGUNDEL, 2.0f);
if ( m_lastTimeGunDel > 0.2f )
@@ -1430,7 +1430,7 @@ void CParticule::FrameParticule(float rTime)
{
Play(SOUND_TOUCH, m_particule[i].pos, 1.0f);
}
- object->ExploObject(EXPLO_BOUM, 0.0f); // d�marre explosion
+ object->ExploObject(EXPLO_BOUM, 0.0f); // démarre explosion
}
}
}
@@ -1444,7 +1444,7 @@ void CParticule::FrameParticule(float rTime)
ti.y = ts.y+0.125f;
}
- if ( m_particule[i].type == PARTIGUN3 ) // suicide araign�e ?
+ if ( m_particule[i].type == PARTIGUN3 ) // suicide araignée ?
{
if ( progress >= 1.0f )
{
@@ -1472,7 +1472,7 @@ void CParticule::FrameParticule(float rTime)
}
else
{
- object->ExploObject(EXPLO_BURN, 1.0f); // d�marre explosion
+ object->ExploObject(EXPLO_BURN, 1.0f); // démarre explosion
}
}
}
@@ -1776,8 +1776,8 @@ void CParticule::FrameParticule(float rTime)
ti.y = ts.y+0.25f;
}
- // Diminue l'intensit� si la cam�ra est presque � la m�me
- // hauteur (nappe de brouillard � hauteur des yeux).
+ // Diminue l'intensité si la caméra est presque à la même
+ // hauteur (nappe de brouillard à hauteur des yeux).
if ( m_particule[i].type >= PARTIFOG0 &&
m_particule[i].type <= PARTIFOG9 )
{
@@ -2743,8 +2743,8 @@ void CParticule::FrameParticule(float rTime)
}
-// D�place une tra�n�e.
-// Retourne TRUE lorsque la tra�n�e est termin�e.
+// Déplace une traînée.
+// Retourne TRUE lorsque la traînée est terminée.
BOOL CParticule::TrackMove(int i, D3DVECTOR pos, float progress)
{
@@ -2781,7 +2781,7 @@ BOOL CParticule::TrackMove(int i, D3DVECTOR pos, float progress)
//? m_track[i].intensity = 1.0f;
m_track[i].intensity = 1.0f-progress;
}
- else // mort lente de la tra�n�e ?
+ else // mort lente de la traînée ?
{
//? m_track[i].intensity = 1.0f-(progress-1.0f)/(m_track[i].step*MAXTRACKLEN);
m_track[i].intensity = 0.0f;
@@ -2790,7 +2790,7 @@ BOOL CParticule::TrackMove(int i, D3DVECTOR pos, float progress)
return (m_track[i].intensity <= 0.0f);
}
-// Dessine une tra�n�e.
+// Dessine une traînée.
void CParticule::TrackDraw(int i, ParticuleType type)
{
@@ -2801,7 +2801,7 @@ void CParticule::TrackDraw(int i, ParticuleType type)
float lTotal, f1, f2, a;
int counter, h;
- // Calcule la longueur totale m�moris�e.
+ // Calcule la longueur totale mémorisée.
lTotal = 0.0f;
h = m_track[i].head;
for ( counter=0 ; counter<m_track[i].used-1 ; counter++ )
@@ -2827,7 +2827,7 @@ void CParticule::TrackDraw(int i, ParticuleType type)
texSup.x = 95.5f/256.0f;
texSup.y = 14.0f/256.0f; // bleu
}
- if ( type == PARTITRACK3 ) // araign�e ?
+ if ( type == PARTITRACK3 ) // araignée ?
{
texInf.x = 64.5f/256.0f;
texInf.y = 5.0f/256.0f;
@@ -2839,14 +2839,14 @@ void CParticule::TrackDraw(int i, ParticuleType type)
texInf.x = 64.5f/256.0f;
texInf.y = 9.0f/256.0f;
texSup.x = 95.5f/256.0f;
- texSup.y = 10.0f/256.0f; // vert fonc�
+ texSup.y = 10.0f/256.0f; // vert foncé
}
if ( type == PARTITRACK5 ) // derrick ?
{
texInf.x = 64.5f/256.0f;
texInf.y = 29.0f/256.0f;
texSup.x = 95.5f/256.0f;
- texSup.y = 30.0f/256.0f; // brun fonc�
+ texSup.y = 30.0f/256.0f; // brun foncé
}
if ( type == PARTITRACK6 ) // reset in/out ?
{
@@ -2890,7 +2890,7 @@ void CParticule::TrackDraw(int i, ParticuleType type)
texSup.x = 95.5f/256.0f;
texSup.y = 22.0f/256.0f; // orange
}
- if ( type == PARTITRACK12 ) // tra�n�e r�acteur ?
+ if ( type == PARTITRACK12 ) // traînée réacteur ?
{
texInf.x = 64.5f/256.0f;
texInf.y = 21.0f/256.0f;
@@ -3442,7 +3442,7 @@ void CParticule::DrawParticuleRay(int i)
}
}
-// Dessine une particule sph�rique.
+// Dessine une particule sphérique.
void CParticule::DrawParticuleSphere(int i)
{
@@ -3603,17 +3603,17 @@ void CParticule::DrawParticuleCylinder(int i)
if ( progress <= 0.5f )
{
p1 = progress/0.5f; // avant
- p2 = 0.0f; // arri�re
+ p2 = 0.0f; // arrière
}
else
{
p1 = 1.0f; // avant
- p2 = (progress-0.5f)/0.5f; // arri�re
+ p2 = (progress-0.5f)/0.5f; // arrière
ts.y += (ti.y-ts.y)*p2;
}
#else
p1 = progress; // avant
- p2 = powf(progress, 5.0f); // arri�re
+ p2 = powf(progress, 5.0f); // arrière
#endif
for ( ring=0 ; ring<=numRings ; ring++ )
@@ -3627,7 +3627,7 @@ void CParticule::DrawParticuleCylinder(int i)
j = 0;
for ( ring=0 ; ring<numRings ; ring++ )
{
- r0 = 1.0f*d[ring+0]; // rayon � la base
+ r0 = 1.0f*d[ring+0]; // rayon à la base
r1 = 1.0f*d[ring+1]; // rayon en haut
v0.y = 1.0f*h[ring+0]; // bas
v1.y = 1.0f*h[ring+1]; // haut
@@ -3758,12 +3758,12 @@ void CParticule::DrawParticuleWheel(int i)
ts.x = 56.0f/256.0f;
ts.y = 232.0f/256.0f;
}
- else if ( m_wheelTrace[i].type == PARTITRACE16 ) // trace au sol fl�che noire ?
+ else if ( m_wheelTrace[i].type == PARTITRACE16 ) // trace au sol flèche noire ?
{
ts.x = 160.0f/256.0f;
ts.y = 224.0f/256.0f;
}
- else if ( m_wheelTrace[i].type == PARTITRACE17 ) // trace au sol fl�che rouge ?
+ else if ( m_wheelTrace[i].type == PARTITRACE17 ) // trace au sol flèche rouge ?
{
ts.x = 176.0f/256.0f;
ts.y = 224.0f/256.0f;
@@ -3817,7 +3817,7 @@ void CParticule::DrawParticule(int sheet)
//? m_pD3DDevice->SetRenderState(D3DRENDERSTATE_ZENABLE, FALSE);
m_pD3DDevice->SetRenderState(D3DRENDERSTATE_ZWRITEENABLE, FALSE);
- // Dessine les particules � base de triangles.
+ // Dessine les particules à base de triangles.
if ( m_totalInterface[0][sheet] > 0 )
{
for ( i=0 ; i<MAXPARTICULE ; i++ )
@@ -3833,7 +3833,7 @@ void CParticule::DrawParticule(int sheet)
}
}
- // Dessines les particules � base de carr�s calcul�s.
+ // Dessines les particules à base de carrés calculés.
m_pD3DDevice->SetRenderState(D3DRENDERSTATE_LIGHTING, FALSE);
ZeroMemory( &mat, sizeof(D3DMATERIAL7) );
@@ -3864,7 +3864,7 @@ void CParticule::DrawParticule(int sheet)
}
//? for ( t=1 ; t<MAXPARTITYPE ; t++ )
- for ( t=MAXPARTITYPE-1 ; t>=1 ; t-- ) // noir derri�re !
+ for ( t=MAXPARTITYPE-1 ; t>=1 ; t-- ) // noir derrière !
{
if ( m_totalInterface[t][sheet] == 0 ) continue;
@@ -3891,7 +3891,7 @@ void CParticule::DrawParticule(int sheet)
if ( r != -1 )
{
m_engine->SetState(state);
- TrackDraw(r, m_particule[i].type); // dessine la tra�n�e
+ TrackDraw(r, m_particule[i].type); // dessine la traînée
if ( !m_track[r].bDrawParticule ) continue;
}
@@ -3914,7 +3914,7 @@ void CParticule::DrawParticule(int sheet)
DrawParticuleFog(i);
}
else if ( m_particule[i].type >= PARTISPHERE0 &&
- m_particule[i].type <= PARTISPHERE9 ) // sph�re ?
+ m_particule[i].type <= PARTISPHERE9 ) // sphère ?
{
DrawParticuleSphere(i);
}
@@ -3954,7 +3954,7 @@ CObject* CParticule::SearchObjectGun(D3DVECTOR old, D3DVECTOR pos,
min = 5.0f;
if ( type == PARTIGUN2 ) min = 2.0f; // tir insecte ?
- if ( type == PARTIGUN3 ) min = 3.0f; // suicide araign�e ?
+ if ( type == PARTIGUN3 ) min = 3.0f; // suicide araignée ?
box1 = old;
box2 = pos;
@@ -3985,12 +3985,12 @@ CObject* CParticule::SearchObjectGun(D3DVECTOR old, D3DVECTOR pos,
if ( type == PARTIGUN1 ) // tir fireball ?
{
if ( oType == OBJECT_MOTHER ) continue;
- if ( bHimself ) // d�g�ts � soi-m�me ?
+ if ( bHimself ) // dégâts à soi-même ?
{
if ( !IsAlien(oType) &&
!IsSoft(oType) ) continue;
}
- else // d�gats seulement aux ennemis ?
+ else // dégats seulement aux ennemis ?
{
if ( !IsAlien(oType) ) continue;
}
@@ -3999,31 +3999,31 @@ CObject* CParticule::SearchObjectGun(D3DVECTOR old, D3DVECTOR pos,
{
if ( !IsSoft(oType) ) continue;
}
- else if ( type == PARTIGUN3 ) // suicide araign�e ?
+ else if ( type == PARTIGUN3 ) // suicide araignée ?
{
if ( !IsSoft(oType) ) continue;
}
else if ( type == PARTIGUN4 ) // tir orgaball ?
{
if ( oType == OBJECT_MOTHER ) continue;
- if ( bHimself ) // d�g�ts � soi-m�me ?
+ if ( bHimself ) // dégâts à soi-même ?
{
if ( !IsAlien(oType) &&
!IsSoft(oType) ) continue;
}
- else // d�gats seulement aux ennemis ?
+ else // dégats seulement aux ennemis ?
{
if ( !IsAlien(oType) ) continue;
}
}
else if ( type == PARTITRACK11 ) // tir phazer ?
{
- if ( bHimself ) // d�g�ts � soi-m�me ?
+ if ( bHimself ) // dégâts à soi-même ?
{
if ( !IsAlien(oType) &&
!IsSoft(oType) ) continue;
}
- else // d�gats seulement aux ennemis ?
+ else // dégats seulement aux ennemis ?
{
if ( !IsAlien(oType) ) continue;
}
@@ -4036,9 +4036,9 @@ CObject* CParticule::SearchObjectGun(D3DVECTOR old, D3DVECTOR pos,
oPos = pObj->RetPosition(0);
if ( type == PARTIGUN2 || // tir insecte ?
- type == PARTIGUN3 ) // suicide araign�e ?
+ type == PARTIGUN3 ) // suicide araignée ?
{
- // Test si la balle est entr�e dans la sph�re d'un bouclier.
+ // Test si la balle est entrée dans la sphère d'un bouclier.
shieldRadius = pObj->RetShieldRadius();
if ( shieldRadius > 0.0f )
{
@@ -4052,19 +4052,19 @@ CObject* CParticule::SearchObjectGun(D3DVECTOR old, D3DVECTOR pos,
}
if ( bShield ) continue;
- // Test au centre de l'objet, ce qui est n�cessaire pour
- // les objets qui n'ont pas de sph�re au centre (station).
+ // Test au centre de l'objet, ce qui est nécessaire pour
+ // les objets qui n'ont pas de sphère au centre (station).
dist = Length(oPos, pos)-4.0f;
if ( dist < min )
{
pBest = pObj;
}
- // Test avec toutes les sph�res de l'objet.
+ // Test avec toutes les sphères de l'objet.
j = 0;
while ( pObj->GetCrashSphere(j++, oPos, oRadius) )
{
- if ( oPos.x+oRadius < box1.x || oPos.x-oRadius > box2.x || // hors de la bo�te ?
+ if ( oPos.x+oRadius < box1.x || oPos.x-oRadius > box2.x || // hors de la boîte ?
oPos.y+oRadius < box1.y || oPos.y-oRadius > box2.y ||
oPos.z+oRadius < box1.z || oPos.z-oRadius > box2.z ) continue;
@@ -4132,7 +4132,7 @@ CObject* CParticule::SearchObjectRay(D3DVECTOR pos, D3DVECTOR goal,
oPos = pObj->RetPosition(0);
- if ( oPos.x < box1.x || oPos.x > box2.x || // hors de la bo�te ?
+ if ( oPos.x < box1.x || oPos.x > box2.x || // hors de la boîte ?
oPos.y < box1.y || oPos.y > box2.y ||
oPos.z < box1.z || oPos.z > box2.z ) continue;