MCPcopy Create free account
hub / github.com/assaultcube/AC / initmap

Method initmap

source/src/serverfiles.h:935–990  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

933 }
934
935 void initmap(servermap *m, stream *f) // set maprot parameters of a servermap
936 {
937 configsetvalues e;
938 memcpy(m->modes, base, sizeof(m->modes));
939 if(m->hx_modeinfo && use_hx_modeinfo_mask) loopj(GMODE_NUM)
940 {
941 e.empty();
942 loopk(CONFIG_MAXPAR) if(use_hx_modeinfo_mask & (1 << k)) e.par[k] = m->hx_modeinfo[j].par[k];
943 m->modes[j].add(e);
944 }
945
946 loopv(configsets)
947 {
948 configset &c = configsets[i];
949 if(c.asterisk < 0 ? !strcmp(c.mapname, m->fname) : !strncmp(c.mapname, m->fname, c.asterisk))
950 {
951 loopj(GMODE_NUM) if((1 << j) & c.mmask) m->modes[j].add(c);
952 }
953 }
954 m->modes_allowed = m->entstats.modes_possible & (isdedicated ? GMMASK__MPNOCOOP : GMMASK__ALL);
955 int rm[CR_NUM] = { 0 }, man = 0;
956 loopj(GMODE_NUM)
957 {
958 if(m->modes[j].manual > 0) man |= 1 << j;
959 for(int i = max(0, (int)m->modes[j].restrict); i < CR_NUM; i++) rm[i] |= 1 << j;
960 }
961 m->modes_auto = m->isautoplay() ? m->modes_allowed & ~man : 0;
962 loopi(CR_NUM) m->modes_cr[i] = m->modes_allowed & rm[i];
963 loopi(MAXPLAYERS) m->modes_pn[i] = 0;
964 loopj(GMODE_NUM)
965 {
966 if((1 << j) & m->modes_allowed)
967 {
968 int lb = m->modes[j].minplayers < 1 ? 0 : m->modes[j].minplayers - 1, ub = m->modes[j].maxplayers < 1 || m->modes[j].maxplayers > MAXPLAYERS ? MAXPLAYERS : m->modes[j].maxplayers;
969 while(lb < ub) m->modes_pn[lb++] |= 1 << j;
970 }
971 }
972 if(f)
973 {
974 string s;
975 f->printf("maprot parameters for: %s%s\n", m->fpath, m->fname);
976 e.empty();
977 loopj(GMODE_NUM) if((1 << j) & GMMASK__MPNOCOOP)
978 {
979 f->printf(" mode %s:", gmode_enum(1 << j, s));
980 loopk(CONFIG_MAXPAR) if(e.par[k] != m->modes[j].par[k]) f->printf(" %s:%d", maprotkeywords[k], m->modes[j].par[k]);
981 f->printf("\n");
982 }
983 f->printf(" modes_allowed %s\n", gmode_enum(m->modes_allowed, s));
984 f->printf(" modes_auto %s\n", gmode_enum(m->modes_auto, s));
985 f->printf(" modes man %s\n", gmode_enum(man, s));
986 loopi(CR_NUM) f->printf(" modes_cr[%d] %s\n", i, gmode_enum(m->modes_cr[i], s));
987 loopi(MAXPLAYERS) f->printf(" modes_pn[%02d] %s\n", i + 1, gmode_enum(m->modes_pn[i], s));
988 f->printf("\n");
989 }
990 }
991
992 void oneminutepassed(int mode)

Callers 1

poll_serverthreadsFunction · 0.80

Calls 8

gmode_enumFunction · 0.85
isautoplayMethod · 0.80
loopjFunction · 0.70
loopkFunction · 0.70
loopiFunction · 0.70
emptyMethod · 0.45
addMethod · 0.45
printfMethod · 0.45

Tested by

no test coverage detected