- [NEW] Nou flag per als actors: FLAG_INERTIA
- [NEW] Nou moviment per als actors: RANDV - [NEW] HUNT implementat - [NEW] Mentres es prova en l'editor ara es poden donar i llevar skills fent click damutn del seu dibuixet. - [NEW] en l'editor, els skills i powerups nomes es veuen al estar provant
This commit is contained in:
@@ -140,7 +140,7 @@ namespace actor
|
||||
} else if (util::strcomp(key, "orient:")) {
|
||||
t->orient = util::stringToInt(file::readString(buffer), {"none", "xp", "xn", "yp", "yn", "zp", "zn"}, {0, 1, 2, 4, 8, 16, 32});
|
||||
} else if (util::strcomp(key, "movement:")) {
|
||||
t->movement = util::stringToInt(file::readString(buffer), {"none", "x", "y", "z", "cw", "ccw", "rand", "hunt"},{MOV_NONE, MOV_X, MOV_Y, MOV_Z, MOV_CW, MOV_CCW, MOV_RAND, MOV_HUNT});
|
||||
t->movement = util::stringToInt(file::readString(buffer), {"none", "x", "y", "z", "cw", "ccw", "rand", "randv", "hunt"},{MOV_NONE, MOV_X, MOV_Y, MOV_Z, MOV_CW, MOV_CCW, MOV_RAND, MOV_RANDV, MOV_HUNT});
|
||||
} else if (util::strcomp(key, "anim-cycle:")) {
|
||||
t->anim_cycle = util::stringToInt(file::readString(buffer), {"walk", "seq", "min"},{0, 1, 2});
|
||||
} else if (util::strcomp(key, "anim-wait:")) {
|
||||
@@ -150,7 +150,7 @@ namespace actor
|
||||
int value = 0;
|
||||
while (str)
|
||||
{
|
||||
value |= util::stringToInt(str, { "none", "hero", "pushable", "reactive", "moving", "animated", "orientable", "deadly", "gravity", "pickable", "special", "noeditor" },{ FLAG_NONE, FLAG_HERO, FLAG_PUSHABLE, FLAG_REACTIVE, FLAG_MOVING, FLAG_ANIMATED, FLAG_ORIENTABLE, FLAG_DEADLY, FLAG_GRAVITY, FLAG_PICKABLE, FLAG_SPECIAL, FLAG_NOEDITOR });
|
||||
value |= util::stringToInt(str, { "none", "hero", "pushable", "reactive", "moving", "animated", "orientable", "deadly", "gravity", "pickable", "special", "noeditor", "inertia" },{ FLAG_NONE, FLAG_HERO, FLAG_PUSHABLE, FLAG_REACTIVE, FLAG_MOVING, FLAG_ANIMATED, FLAG_ORIENTABLE, FLAG_DEADLY, FLAG_GRAVITY, FLAG_PICKABLE, FLAG_SPECIAL, FLAG_NOEDITOR, FLAG_INERTIA });
|
||||
str = file::readString(buffer, true);
|
||||
}
|
||||
t->flags = value;
|
||||
@@ -234,15 +234,16 @@ namespace actor
|
||||
{
|
||||
tmp[0]=0;
|
||||
if (value==0) return "NONE";
|
||||
if (value&256) strcat(tmp, "PICKABLE ");
|
||||
if (value&2) strcat(tmp, "PUSHABLE ");
|
||||
if (value&4) strcat(tmp, "REACTIVE ");
|
||||
if (value&8) strcat(tmp, "MOVING ");
|
||||
if (value&16) strcat(tmp, "ANIMATED ");
|
||||
if (value&32) strcat(tmp, "ORIENTABLE ");
|
||||
if (value&64) strcat(tmp, "DEADLY ");
|
||||
if (value&128) strcat(tmp, "GRAVITY ");
|
||||
if (value&512) strcat(tmp, "SPECIAL ");
|
||||
if (value & FLAG_PICKABLE) strcat(tmp, "PICKABLE ");
|
||||
if (value & FLAG_PUSHABLE) strcat(tmp, "PUSHABLE ");
|
||||
if (value & FLAG_REACTIVE) strcat(tmp, "REACTIVE ");
|
||||
if (value & FLAG_MOVING) strcat(tmp, "MOVING ");
|
||||
if (value & FLAG_ANIMATED) strcat(tmp, "ANIMATED ");
|
||||
if (value & FLAG_ORIENTABLE) strcat(tmp, "ORIENTABLE ");
|
||||
if (value & FLAG_DEADLY) strcat(tmp, "DEADLY ");
|
||||
if (value & FLAG_GRAVITY) strcat(tmp, "GRAVITY ");
|
||||
if (value & FLAG_SPECIAL) strcat(tmp, "SPECIAL ");
|
||||
if (value & FLAG_INERTIA) strcat(tmp, "INERTIA ");
|
||||
return tmp;
|
||||
}
|
||||
|
||||
@@ -255,7 +256,8 @@ namespace actor
|
||||
if (value==4) return "CW";
|
||||
if (value==5) return "CCW";
|
||||
if (value==6) return "RAND";
|
||||
if (value==7) return "HUNT";
|
||||
if (value==7) return "RANDV";
|
||||
if (value==8) return "HUNT";
|
||||
return "NONE";
|
||||
}
|
||||
|
||||
@@ -663,8 +665,25 @@ namespace actor
|
||||
case 3: act->mov_push=PUSH_XP; break;
|
||||
}
|
||||
break;
|
||||
case MOV_RANDV:
|
||||
switch (rand()%8)
|
||||
{
|
||||
case 0: act->mov_push=PUSH_YP; break;
|
||||
case 1: act->mov_push=PUSH_XN; break;
|
||||
case 2: act->mov_push=PUSH_YN; break;
|
||||
case 3: act->mov_push=PUSH_XP; break;
|
||||
case 4: act->mov_push=PUSH_YP; act->mov_push=PUSH_XN; break;
|
||||
case 5: act->mov_push=PUSH_XN; act->mov_push=PUSH_YN; break;
|
||||
case 6: act->mov_push=PUSH_YN; act->mov_push=PUSH_XP; break;
|
||||
case 7: act->mov_push=PUSH_XP; act->mov_push=PUSH_YP; break;
|
||||
}
|
||||
break;
|
||||
case MOV_HUNT:
|
||||
// TODO
|
||||
actor_t *heroi = find("HERO");
|
||||
if (heroi->pos.x < act->pos.x) act->mov_push=PUSH_XN;
|
||||
if (heroi->pos.x > act->pos.x) act->mov_push=PUSH_XP;
|
||||
if (heroi->pos.y < act->pos.y) act->mov_push=PUSH_YN;
|
||||
if (heroi->pos.y > act->pos.y) act->mov_push=PUSH_YP;
|
||||
break;
|
||||
}
|
||||
if (act->flags & FLAG_ORIENTABLE) act->orient = act->mov_push;
|
||||
@@ -732,6 +751,7 @@ namespace actor
|
||||
if (other) act->push |= push(act, other, PUSH_XN);
|
||||
act->pos.x+=vel;
|
||||
if (act->flags & FLAG_MOVING) changeMoving(act);
|
||||
if (act->flags & FLAG_INERTIA) act->push = PUSH_NONE;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -750,7 +770,7 @@ namespace actor
|
||||
|
||||
actor::setDirty(act);
|
||||
}
|
||||
act->push &= ~PUSH_XN;
|
||||
if ( !(act->flags & FLAG_INERTIA) ) act->push &= ~PUSH_XN;
|
||||
}
|
||||
|
||||
if (act->push & PUSH_XP) {
|
||||
@@ -761,6 +781,7 @@ namespace actor
|
||||
if (other) act->push |= push(act, other, PUSH_XP);
|
||||
act->pos.x-=vel;
|
||||
if (act->flags & FLAG_MOVING) changeMoving(act);
|
||||
if (act->flags & FLAG_INERTIA) act->push = PUSH_NONE;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -777,7 +798,7 @@ namespace actor
|
||||
|
||||
actor::setDirty(act);
|
||||
}
|
||||
act->push &= ~PUSH_XP;
|
||||
if ( !(act->flags & FLAG_INERTIA) ) act->push &= ~PUSH_XP;
|
||||
}
|
||||
|
||||
if (act->push & PUSH_YN) {
|
||||
@@ -788,6 +809,7 @@ namespace actor
|
||||
if (other) act->push |= push(act, other, PUSH_YN);
|
||||
act->pos.y+=vel;
|
||||
if (act->flags & FLAG_MOVING) changeMoving(act);
|
||||
if (act->flags & FLAG_INERTIA) act->push = PUSH_NONE;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -804,7 +826,7 @@ namespace actor
|
||||
|
||||
actor::setDirty(act);
|
||||
}
|
||||
act->push &= ~PUSH_YN;
|
||||
if ( !(act->flags & FLAG_INERTIA) ) act->push &= ~PUSH_YN;
|
||||
}
|
||||
|
||||
if (act->push & PUSH_YP) {
|
||||
@@ -815,6 +837,7 @@ namespace actor
|
||||
if (other) act->push |= push(act, other, PUSH_YP);
|
||||
act->pos.y-=vel;
|
||||
if (act->flags & FLAG_MOVING) changeMoving(act);
|
||||
if (act->flags & FLAG_INERTIA) act->push = PUSH_NONE;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -831,7 +854,7 @@ namespace actor
|
||||
|
||||
actor::setDirty(act);
|
||||
}
|
||||
act->push &= ~PUSH_YP;
|
||||
if ( !(act->flags & FLAG_INERTIA) ) act->push &= ~PUSH_YP;
|
||||
}
|
||||
|
||||
if (act->push & PUSH_ZN) {
|
||||
@@ -1369,18 +1392,26 @@ namespace actor
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool giveSkill(int skill)
|
||||
{
|
||||
skills |= skill;
|
||||
return skill!=0;
|
||||
}
|
||||
|
||||
bool giveSkill(char *skill)
|
||||
{
|
||||
const int value = getSkillFromString(skill);
|
||||
skills |= value;
|
||||
return value!=0;
|
||||
return giveSkill(getSkillFromString(skill));
|
||||
}
|
||||
|
||||
bool dropSkill(int skill)
|
||||
{
|
||||
skills &= ~skill;
|
||||
return skill!=0;
|
||||
}
|
||||
|
||||
bool dropSkill(char *skill)
|
||||
{
|
||||
const int value = getSkillFromString(skill);
|
||||
skills &= ~value;
|
||||
return value!=0;
|
||||
return dropSkill(getSkillFromString(skill));
|
||||
}
|
||||
|
||||
bool wasSkillCollected(char *skill)
|
||||
|
||||
Reference in New Issue
Block a user