X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fmenu%2Fxonotic%2Fdialog_multiplayer_create_mutators.qc;h=8b6dd4b731512cec3da19fe489dc512a04245108;hb=7f7ee19875849309c6778d76d870d9bb82f14d37;hp=2f3cd47b02e592696c1daf4e6974b83220b19b62;hpb=c741e6b3f012aa525f23e1df30d1d933b383fbc5;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc b/qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc index 2f3cd47b0..8b6dd4b73 100644 --- a/qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc +++ b/qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.qc @@ -1,25 +1,17 @@ -#include "../../common/weapons/all.qh" +#include "dialog_multiplayer_create_mutators.qh" +#include -#ifndef DIALOG_MULTIPLAYER_CREATE_MUTATORS_H -#define DIALOG_MULTIPLAYER_CREATE_MUTATORS_H -#include "dialog.qc" -CLASS(XonoticMutatorsDialog, XonoticDialog) - METHOD(XonoticMutatorsDialog, toString, string(entity)); - METHOD(XonoticMutatorsDialog, fill, void(entity)); - METHOD(XonoticMutatorsDialog, showNotify, void(entity)); - METHOD(XonoticMutatorsDialog, close, void(entity)); - ATTRIB(XonoticMutatorsDialog, title, string, _("Mutators")) - ATTRIB(XonoticMutatorsDialog, color, vector, SKINCOLOR_DIALOG_MUTATORS) - ATTRIB(XonoticMutatorsDialog, intendedWidth, float, 0.9) - ATTRIB(XonoticMutatorsDialog, rows, float, 20) - ATTRIB(XonoticMutatorsDialog, columns, float, 6) - ATTRIB(XonoticMutatorsDialog, refilterEntity, entity, NULL) -ENDCLASS(XonoticMutatorsDialog) -#endif +#include "weaponarenacheckbox.qh" +#include "checkbox.qh" +#include "slider.qh" +#include "textlabel.qh" +#include "checkbox_slider_invalid.qh" +#include "radiobutton.qh" +#include "button.qh" -#ifdef IMPLEMENTATION void XonoticMutatorsDialog_showNotify(entity me) { + SUPER(XonoticMutatorsDialog).showNotify(me); loadAllCvars(me); } @@ -28,8 +20,7 @@ string weaponarenastring_cvar; string WeaponArenaString() { string s; - float n, i, j; - entity e; + float n; s = cvar_string("g_weaponarena"); if(s == "0") return ""; @@ -39,85 +30,81 @@ string WeaponArenaString() return _("Most Weapons Arena"); if(s == weaponarenastring_cvar) return weaponarenastring; - if(weaponarenastring) - strunzone(weaponarenastring); - if(weaponarenastring_cvar) - strunzone(weaponarenastring_cvar); - weaponarenastring_cvar = strzone(s); + strcpy(weaponarenastring_cvar, s); n = tokenize_console(s); s = ""; - for(i = 0; i < n; ++i) + for(int j = 0; j < n; ++j) { - for(j = WEP_FIRST; j <= WEP_LAST; ++j) + Weapon wep = Weapons_fromstr(argv(j)); + if(wep != WEP_Null) { - e = get_weaponinfo(j); - if(argv(i) == e.netname) - s = strcat(s, " & ", e.m_name); + s = cons_mid(s, " & ", wep.m_name); } } - s = sprintf(_("%s Arena"), substring(s, 3, strlen(s) - 3)); + s = sprintf(_("%s Arena"), s); - weaponarenastring = strzone(s); + strcpy(weaponarenastring, s); return weaponarenastring; } -AUTOCVAR(g_grappling_hook, bool, _("let players spawn with the grappling hook which allows them to pull themselves up")); - string XonoticMutatorsDialog_toString(entity me) { - string s; - s = ""; + string s = ""; if(cvar("g_dodging")) - s = strcat(s, ", ", _("Dodging")); + s = cons_mid(s, ", ", _("Dodging")); if(cvar("g_instagib")) - s = strcat(s, ", ", _("InstaGib")); + s = cons_mid(s, ", ", _("InstaGib")); if(cvar("g_new_toys")) - s = strcat(s, ", ", _("New Toys")); + s = cons_mid(s, ", ", _("New Toys")); if(cvar("g_nix")) - s = strcat(s, ", ", _("NIX")); + s = cons_mid(s, ", ", _("NIX")); if(cvar("g_rocket_flying")) - s = strcat(s, ", ", _("Rocket Flying")); + s = cons_mid(s, ", ", _("Rocket Flying")); if(cvar("g_invincible_projectiles")) - s = strcat(s, ", ", _("Invincible Projectiles")); + s = cons_mid(s, ", ", _("Invincible Projectiles")); if(cvar_string("g_weaponarena") != "0") - s = strcat(s, ", ", WeaponArenaString()); - else if(cvar("g_balance_blaster_weaponstart") == 0) - s = strcat(s, ", ", _("No start weapons")); + s = cons_mid(s, ", ", WeaponArenaString()); + else if(cvar("g_balance_blaster_weaponstartoverride") == 0) + s = cons_mid(s, ", ", _("No start weapons")); if(cvar("sv_gravity") < stof(cvar_defstring("sv_gravity"))) - s = strcat(s, ", ", _("Low gravity")); + s = cons_mid(s, ", ", _("Low gravity")); if(cvar("g_cloaked")) - s = strcat(s, ", ", _("Cloaked")); - if(autocvar_g_grappling_hook) - s = strcat(s, ", ", _("Hook")); + s = cons_mid(s, ", ", _("Cloaked")); + if(cvar("g_grappling_hook")) + s = cons_mid(s, ", ", _("Hook")); if(cvar("g_midair")) - s = strcat(s, ", ", _("Midair")); + s = cons_mid(s, ", ", _("Midair")); + if(cvar("g_melee_only")) + s = cons_mid(s, ", ", _("Melee only")); if(cvar("g_vampire")) - s = strcat(s, ", ", _("Vampire")); + s = cons_mid(s, ", ", _("Vampire")); if(cvar("g_pinata")) - s = strcat(s, ", ", _("Piñata")); + s = cons_mid(s, ", ", _("Piñata")); if(cvar("g_weapon_stay")) - s = strcat(s, ", ", _("Weapons stay")); + s = cons_mid(s, ", ", _("Weapons stay")); if(cvar("g_bloodloss") > 0) - s = strcat(s, ", ", _("Blood loss")); + s = cons_mid(s, ", ", _("Blood loss")); if(cvar("g_jetpack")) - s = strcat(s, ", ", _("Jet pack")); - if(cvar("g_buffs")) - s = strcat(s, ", ", _("Buffs")); + s = cons_mid(s, ", ", _("Jetpack")); + if(cvar("g_buffs") > 0) + s = cons_mid(s, ", ", _("Buffs")); if(cvar("g_overkill")) - s = strcat(s, ", ", _("Overkill")); + s = cons_mid(s, ", ", _("Overkill")); if(cvar("g_powerups") == 0) - s = strcat(s, ", ", _("No powerups")); + s = cons_mid(s, ", ", _("No powerups")); if(cvar("g_powerups") > 0) - s = strcat(s, ", ", _("Powerups")); + s = cons_mid(s, ", ", _("Powerups")); if(cvar("g_touchexplode") > 0) - s = strcat(s, ", ", _("Touch explode")); + s = cons_mid(s, ", ", _("Touch explode")); + if(cvar("g_walljump")) + s = cons_mid(s, ", ", _("Wall jumping")); if(s == "") return ZCTX(_("MUT^None")); else - return substring(s, 2, strlen(s) - 2); + return s; } float checkCompatibility_pinata(entity me) @@ -126,6 +113,10 @@ float checkCompatibility_pinata(entity me) return 0; if(cvar("g_nix")) return 0; + if(cvar("g_overkill")) + return 0; + if(cvar("g_melee_only")) + return 0; if(cvar_string("g_weaponarena") != "0") return 0; return 1; @@ -156,7 +147,7 @@ float checkCompatibility_weaponarena_weapon(entity me) return 0; if(cvar_string("g_weaponarena") == "0") return 0; - if(cvar_string("g_balance_blaster_weaponstart") == "0") + if(cvar_string("g_balance_blaster_weaponstartoverride") == "0") return 0; return 1; } @@ -181,10 +172,11 @@ void XonoticMutatorsDialog_fill(entity me) me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 1.8, e = makeXonoticCheckBox(0, "g_buffs", _("Buffs"))); + e.cvarOffValue = "-1"; // TODO: make this a radio button? me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 1.8, e = makeXonoticCheckBox_T(0, "g_midair", _("Midair"), - _("Only possible to inflict damage on your enemy while he's airborne"))); + _("Only possible to inflict damage on your enemy while they're airborne"))); me.TR(me); me.TDempty(me, 0.2); me.TD(me, 1, 1.8, e = makeXonoticCheckBox_T(0, "g_vampire", _("Vampire"), @@ -218,7 +210,7 @@ void XonoticMutatorsDialog_fill(entity me) _("Players spawn with the grappling hook"))); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.8, e = makeXonoticCheckBox_T(0, "g_jetpack", _("Jet pack"), + me.TD(me, 1, 1.8, e = makeXonoticCheckBox_T(0, "g_jetpack", _("Jetpack"), _("Players spawn with the jetpack"))); me.TR(me); me.TDempty(me, 0.2); @@ -246,32 +238,38 @@ void XonoticMutatorsDialog_fill(entity me) me.gotoRC(me, 0, 2); me.setFirstColumn(me, me.currentColumn); me.TD(me, 1, 2, e = makeXonoticRadioButton(1, string_null, string_null, _("Regular (no arena)"))); + string weaponarena_tooltip = strzone(_("Players will be given a set of weapons at spawn as well as unlimited ammo, without weapon pickups")); + me.TR(me); + me.TD(me, 1, 2, makeXonoticTextLabel(0, _("Weapon arenas:"))); me.TR(me); - me.TD(me, 1, 2, e = makeXonoticRadioButton_T(1, "g_weaponarena", "menu_weaponarena", _("Weapon arenas:"), - _("Selecting a weapon arena will give all players that weapon at spawn as well as unlimited ammo, and disable all other weapon pickups."))); + me.TDempty(me, 0.2); + me.TD(me, 1, 1.8, e = makeXonoticRadioButton_T(1, "g_weaponarena", "menu_weaponarena", _("Custom weapons"), weaponarena_tooltip)); e.cvarValueIsAnotherCvar = true; e.cvarOffValue = "0"; + + me.TDempty(me, 0.1); // fix initial position for(i = WEP_FIRST, j = 0; i <= WEP_LAST; ++i) { - w = get_weaponinfo(i); + w = Weapons_from(i); if(w.spawnflags & WEP_FLAG_HIDDEN) continue; - if((j & 1) == 0) + if ((j % 3) == 0) + { me.TR(me); - me.TDempty(me, 0.2); - me.TD(me, 1, 1.8, e = makeXonoticWeaponarenaCheckBox(strzone(w.netname), strzone(w.m_name))); + me.TDempty(me, 0.4); + } + me.TD(me, 1, 1.2, e = makeXonoticWeaponarenaCheckBox(strzone(w.netname), strzone(w.m_name))); setDependentWeird(e, checkCompatibility_weaponarena_weapon); ++j; } + me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.8, e = makeXonoticRadioButton_T(1, "g_weaponarena", "most", _("Most weapons"), - _("Selecting a weapon arena will give all players that weapon at spawn as well as unlimited ammo, and disable all other weapon pickups."))); + me.TD(me, 1, 1.8, e = makeXonoticRadioButton_T(1, "g_weaponarena", "most", _("Most weapons"), weaponarena_tooltip)); e.cvarOffValue = "0"; me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.8, e = makeXonoticRadioButton_T(1, "g_weaponarena", "all", _("All weapons"), - _("Selecting a weapon arena will give all players that weapon at spawn as well as unlimited ammo, and disable all other weapon pickups."))); + me.TD(me, 1, 1.8, e = makeXonoticRadioButton_T(1, "g_weaponarena", "all", _("All weapons"), weaponarena_tooltip)); e.cvarOffValue = "0"; me.TR(me); me.TD(me, 1, 4, makeXonoticTextLabel(0, _("Special arenas:"))); @@ -292,9 +290,9 @@ void XonoticMutatorsDialog_fill(entity me) setDependent(e, "g_nix", 1, 1); me.TR(me); me.TDempty(me, 0.2); - me.TD(me, 1, 1.8, e = makeXonoticRadioButton_T(1, "g_balance_blaster_weaponstart", "0", _("No start weapons"), "-")); + me.TD(me, 1, 1.8, e = makeXonoticRadioButton_T(1, "g_balance_blaster_weaponstartoverride", "0", _("No start weapons"), "-")); e.cvarOffValue = "-1"; - makeMulti(e, "g_balance_shotgun_weaponstart g_balance_machinegun_weaponstart g_balance_devastator_weaponstart g_balance_minelayer_weaponstart g_balance_electro_weaponstart g_balance_crylink_weaponstart g_balance_hagar_weaponstart g_balance_porto_weaponstart g_balance_vaporizer_weaponstart g_balance_hook_weaponstart g_balance_rifle_weaponstart g_balance_fireball_weaponstart g_balance_seeker_weaponstart g_balance_tuba_weaponstart g_balance_arc_weaponstart g_balance_vortex_weaponstart g_balance_mortar_weaponstart"); + makeMulti(e, "g_balance_shotgun_weaponstartoverride g_balance_machinegun_weaponstartoverride g_balance_devastator_weaponstartoverride g_balance_minelayer_weaponstartoverride g_balance_electro_weaponstartoverride g_balance_crylink_weaponstartoverride g_balance_hagar_weaponstartoverride g_balance_porto_weaponstartoverride g_balance_vaporizer_weaponstartoverride g_balance_hook_weaponstartoverride g_balance_rifle_weaponstartoverride g_balance_fireball_weaponstartoverride g_balance_seeker_weaponstartoverride g_balance_tuba_weaponstartoverride g_balance_arc_weaponstartoverride g_balance_vortex_weaponstartoverride g_balance_mortar_weaponstartoverride"); me.gotoRC(me, me.rows - 1, 0); me.TD(me, 1, me.columns, e = makeXonoticButton(_("OK"), '0 0 0')); @@ -302,10 +300,11 @@ void XonoticMutatorsDialog_fill(entity me) e.onClickEntity = me; } +.void(entity) refilter; + void XonoticMutatorsDialog_close(entity me) { if(me.refilterEntity) me.refilterEntity.refilter(me.refilterEntity); SUPER(XonoticMutatorsDialog).close(me); } -#endif