Skip to content

Commit e7246d3

Browse files
bendeutschparamat
authored andcommittedMar 20, 2017
Refactored client event if-else cascade to switch statement
1 parent d3131ae commit e7246d3

File tree

1 file changed

+138
-102
lines changed

1 file changed

+138
-102
lines changed
 

Diff for: ‎src/game.cpp

+138-102
Original file line numberDiff line numberDiff line change
@@ -3046,7 +3046,10 @@ void Game::processClientEvents(CameraOrientation *cam)
30463046

30473047
for ( ; event.type != CE_NONE; event = client->getClientEvent()) {
30483048

3049-
if (event.type == CE_PLAYER_DAMAGE && client->getHP() != 0) {
3049+
switch (event.type) {
3050+
case CE_PLAYER_DAMAGE:
3051+
if (client->getHP() == 0)
3052+
break;
30503053
if (client->moddingEnabled()) {
30513054
client->getScript()->on_damage_taken(event.player_damage.amount);
30523055
}
@@ -3058,21 +3061,25 @@ void Game::processClientEvents(CameraOrientation *cam)
30583061
player->hurt_tilt_strength =
30593062
rangelim(event.player_damage.amount / 4, 1.0, 4.0);
30603063

3061-
MtEvent *e = new SimpleTriggerEvent("PlayerDamage");
3062-
client->event()->put(e);
3063-
} else if (event.type == CE_PLAYER_FORCE_MOVE) {
3064+
client->event()->put(new SimpleTriggerEvent("PlayerDamage"));
3065+
break;
3066+
3067+
case CE_PLAYER_FORCE_MOVE:
30643068
cam->camera_yaw = event.player_force_move.yaw;
30653069
cam->camera_pitch = event.player_force_move.pitch;
3066-
} else if (event.type == CE_DEATHSCREEN) {
3070+
break;
3071+
3072+
case CE_DEATHSCREEN:
30673073
// This should be enabled for death formspec in builtin
30683074
client->getScript()->on_death();
30693075

30703076
/* Handle visualization */
30713077
runData.damage_flash = 0;
30723078
player->hurt_tilt_timer = 0;
30733079
player->hurt_tilt_strength = 0;
3080+
break;
30743081

3075-
} else if (event.type == CE_SHOW_FORMSPEC) {
3082+
case CE_SHOW_FORMSPEC:
30763083
if (*(event.show_formspec.formspec) == "") {
30773084
if (current_formspec && ( *(event.show_formspec.formname) == "" || *(event.show_formspec.formname) == cur_formname) ){
30783085
current_formspec->quitMenu();
@@ -3088,53 +3095,64 @@ void Game::processClientEvents(CameraOrientation *cam)
30883095
cur_formname = *(event.show_formspec.formname);
30893096
}
30903097

3091-
delete(event.show_formspec.formspec);
3092-
delete(event.show_formspec.formname);
3093-
} else if (event.type == CE_SHOW_LOCAL_FORMSPEC) {
3094-
FormspecFormSource *fs_src = new FormspecFormSource(*event.show_formspec.formspec);
3095-
LocalFormspecHandler *txt_dst = new LocalFormspecHandler(*event.show_formspec.formname, client);
3096-
create_formspec_menu(&current_formspec, client, device, &input->joystick,
3097-
fs_src, txt_dst);
30983098
delete event.show_formspec.formspec;
30993099
delete event.show_formspec.formname;
3100-
} else if ((event.type == CE_SPAWN_PARTICLE) ||
3101-
(event.type == CE_ADD_PARTICLESPAWNER) ||
3102-
(event.type == CE_DELETE_PARTICLESPAWNER)) {
3100+
break;
3101+
3102+
case CE_SHOW_LOCAL_FORMSPEC:
3103+
{
3104+
FormspecFormSource *fs_src = new FormspecFormSource(*event.show_formspec.formspec);
3105+
LocalFormspecHandler *txt_dst = new LocalFormspecHandler(*event.show_formspec.formname, client);
3106+
create_formspec_menu(&current_formspec, client, device, &input->joystick,
3107+
fs_src, txt_dst);
3108+
}
3109+
delete event.show_formspec.formspec;
3110+
delete event.show_formspec.formname;
3111+
break;
3112+
3113+
case CE_SPAWN_PARTICLE:
3114+
case CE_ADD_PARTICLESPAWNER:
3115+
case CE_DELETE_PARTICLESPAWNER:
31033116
client->getParticleManager()->handleParticleEvent(&event, client,
31043117
smgr, player);
3105-
} else if (event.type == CE_HUDADD) {
3106-
u32 id = event.hudadd.id;
3107-
HudElement *e = player->getHud(id);
3108-
3109-
if (e != NULL) {
3110-
delete event.hudadd.pos;
3111-
delete event.hudadd.name;
3112-
delete event.hudadd.scale;
3113-
delete event.hudadd.text;
3114-
delete event.hudadd.align;
3115-
delete event.hudadd.offset;
3116-
delete event.hudadd.world_pos;
3117-
delete event.hudadd.size;
3118-
continue;
3119-
}
3118+
break;
3119+
3120+
case CE_HUDADD:
3121+
{
3122+
u32 id = event.hudadd.id;
3123+
3124+
HudElement *e = player->getHud(id);
3125+
3126+
if (e != NULL) {
3127+
delete event.hudadd.pos;
3128+
delete event.hudadd.name;
3129+
delete event.hudadd.scale;
3130+
delete event.hudadd.text;
3131+
delete event.hudadd.align;
3132+
delete event.hudadd.offset;
3133+
delete event.hudadd.world_pos;
3134+
delete event.hudadd.size;
3135+
continue;
3136+
}
31203137

3121-
e = new HudElement;
3122-
e->type = (HudElementType)event.hudadd.type;
3123-
e->pos = *event.hudadd.pos;
3124-
e->name = *event.hudadd.name;
3125-
e->scale = *event.hudadd.scale;
3126-
e->text = *event.hudadd.text;
3127-
e->number = event.hudadd.number;
3128-
e->item = event.hudadd.item;
3129-
e->dir = event.hudadd.dir;
3130-
e->align = *event.hudadd.align;
3131-
e->offset = *event.hudadd.offset;
3132-
e->world_pos = *event.hudadd.world_pos;
3133-
e->size = *event.hudadd.size;
3134-
3135-
u32 new_id = player->addHud(e);
3136-
//if this isn't true our huds aren't consistent
3137-
sanity_check(new_id == id);
3138+
e = new HudElement;
3139+
e->type = (HudElementType)event.hudadd.type;
3140+
e->pos = *event.hudadd.pos;
3141+
e->name = *event.hudadd.name;
3142+
e->scale = *event.hudadd.scale;
3143+
e->text = *event.hudadd.text;
3144+
e->number = event.hudadd.number;
3145+
e->item = event.hudadd.item;
3146+
e->dir = event.hudadd.dir;
3147+
e->align = *event.hudadd.align;
3148+
e->offset = *event.hudadd.offset;
3149+
e->world_pos = *event.hudadd.world_pos;
3150+
e->size = *event.hudadd.size;
3151+
3152+
u32 new_id = player->addHud(e);
3153+
//if this isn't true our huds aren't consistent
3154+
sanity_check(new_id == id);
3155+
}
31383156

31393157
delete event.hudadd.pos;
31403158
delete event.hudadd.name;
@@ -3144,74 +3162,84 @@ void Game::processClientEvents(CameraOrientation *cam)
31443162
delete event.hudadd.offset;
31453163
delete event.hudadd.world_pos;
31463164
delete event.hudadd.size;
3147-
} else if (event.type == CE_HUDRM) {
3148-
HudElement *e = player->removeHud(event.hudrm.id);
3149-
3150-
if (e != NULL)
3151-
delete(e);
3152-
} else if (event.type == CE_HUDCHANGE) {
3153-
u32 id = event.hudchange.id;
3154-
HudElement *e = player->getHud(id);
3155-
3156-
if (e == NULL) {
3157-
delete event.hudchange.v3fdata;
3158-
delete event.hudchange.v2fdata;
3159-
delete event.hudchange.sdata;
3160-
delete event.hudchange.v2s32data;
3161-
continue;
3165+
break;
3166+
3167+
case CE_HUDRM:
3168+
{
3169+
HudElement *e = player->removeHud(event.hudrm.id);
3170+
3171+
if (e != NULL)
3172+
delete e;
31623173
}
3174+
break;
31633175

3164-
switch (event.hudchange.stat) {
3165-
case HUD_STAT_POS:
3166-
e->pos = *event.hudchange.v2fdata;
3167-
break;
3176+
case CE_HUDCHANGE:
3177+
{
3178+
u32 id = event.hudchange.id;
3179+
HudElement *e = player->getHud(id);
31683180

3169-
case HUD_STAT_NAME:
3170-
e->name = *event.hudchange.sdata;
3171-
break;
3181+
if (e == NULL) {
3182+
delete event.hudchange.v3fdata;
3183+
delete event.hudchange.v2fdata;
3184+
delete event.hudchange.sdata;
3185+
delete event.hudchange.v2s32data;
3186+
continue;
3187+
}
31723188

3173-
case HUD_STAT_SCALE:
3174-
e->scale = *event.hudchange.v2fdata;
3175-
break;
3189+
switch (event.hudchange.stat) {
3190+
case HUD_STAT_POS:
3191+
e->pos = *event.hudchange.v2fdata;
3192+
break;
31763193

3177-
case HUD_STAT_TEXT:
3178-
e->text = *event.hudchange.sdata;
3179-
break;
3194+
case HUD_STAT_NAME:
3195+
e->name = *event.hudchange.sdata;
3196+
break;
31803197

3181-
case HUD_STAT_NUMBER:
3182-
e->number = event.hudchange.data;
3183-
break;
3198+
case HUD_STAT_SCALE:
3199+
e->scale = *event.hudchange.v2fdata;
3200+
break;
31843201

3185-
case HUD_STAT_ITEM:
3186-
e->item = event.hudchange.data;
3187-
break;
3202+
case HUD_STAT_TEXT:
3203+
e->text = *event.hudchange.sdata;
3204+
break;
31883205

3189-
case HUD_STAT_DIR:
3190-
e->dir = event.hudchange.data;
3191-
break;
3206+
case HUD_STAT_NUMBER:
3207+
e->number = event.hudchange.data;
3208+
break;
31923209

3193-
case HUD_STAT_ALIGN:
3194-
e->align = *event.hudchange.v2fdata;
3195-
break;
3210+
case HUD_STAT_ITEM:
3211+
e->item = event.hudchange.data;
3212+
break;
31963213

3197-
case HUD_STAT_OFFSET:
3198-
e->offset = *event.hudchange.v2fdata;
3199-
break;
3214+
case HUD_STAT_DIR:
3215+
e->dir = event.hudchange.data;
3216+
break;
32003217

3201-
case HUD_STAT_WORLD_POS:
3202-
e->world_pos = *event.hudchange.v3fdata;
3203-
break;
3218+
case HUD_STAT_ALIGN:
3219+
e->align = *event.hudchange.v2fdata;
3220+
break;
32043221

3205-
case HUD_STAT_SIZE:
3206-
e->size = *event.hudchange.v2s32data;
3207-
break;
3222+
case HUD_STAT_OFFSET:
3223+
e->offset = *event.hudchange.v2fdata;
3224+
break;
3225+
3226+
case HUD_STAT_WORLD_POS:
3227+
e->world_pos = *event.hudchange.v3fdata;
3228+
break;
3229+
3230+
case HUD_STAT_SIZE:
3231+
e->size = *event.hudchange.v2s32data;
3232+
break;
3233+
}
32083234
}
32093235

32103236
delete event.hudchange.v3fdata;
32113237
delete event.hudchange.v2fdata;
32123238
delete event.hudchange.sdata;
32133239
delete event.hudchange.v2s32data;
3214-
} else if (event.type == CE_SET_SKY) {
3240+
break;
3241+
3242+
case CE_SET_SKY:
32153243
sky->setVisible(false);
32163244

32173245
if (skybox) {
@@ -3245,10 +3273,18 @@ void Game::processClientEvents(CameraOrientation *cam)
32453273
delete event.set_sky.bgcolor;
32463274
delete event.set_sky.type;
32473275
delete event.set_sky.params;
3248-
} else if (event.type == CE_OVERRIDE_DAY_NIGHT_RATIO) {
3249-
bool enable = event.override_day_night_ratio.do_override;
3250-
u32 value = event.override_day_night_ratio.ratio_f * 1000;
3251-
client->getEnv().setDayNightRatioOverride(enable, value);
3276+
break;
3277+
3278+
case CE_OVERRIDE_DAY_NIGHT_RATIO:
3279+
client->getEnv().setDayNightRatioOverride(
3280+
event.override_day_night_ratio.do_override,
3281+
event.override_day_night_ratio.ratio_f * 1000);
3282+
break;
3283+
3284+
default:
3285+
// unknown or unhandled type
3286+
break;
3287+
32523288
}
32533289
}
32543290
}

0 commit comments

Comments
 (0)
Please sign in to comment.