static void UpdateConfig(Player p, CTFMapConfig cfg) { cfg.Save(p.level.name); if (p.level == CTFGame.Instance.Map) { CTFGame.Instance.UpdateMapConfig(); } }
static CTFMapConfig RetrieveConfig(Player p) { CTFMapConfig cfg = new CTFMapConfig(); cfg.SetDefaults(p.level); cfg.Load(p.level.name); return(cfg); }
bool RedFlagCallback(Player p, Vec3S32[] marks, object state, BlockID block) { CTFMapConfig cfg = (CTFMapConfig)state; Vec3U16 P = (Vec3U16)marks[0]; cfg.RedFlagPos = P; p.Message("Set flag position of red team to ({0})", P); block = p.level.GetBlock(P.X, P.Y, P.Z); if (block == Block.Air) { block = Block.Red; } cfg.RedFlagBlock = block; p.Message("Set flag block of red team to {0}", Block.GetName(p, block)); SaveMapConfig(p, cfg); return(false); }
static bool BlueFlagCallback(Player p, Vec3S32[] marks, object state, BlockID block) { CTFMapConfig cfg = RetrieveConfig(p); Vec3U16 P = (Vec3U16)marks[0]; cfg.BlueFlagPos = P; p.Message("Set flag position of blue team to ({0})", P); block = p.level.GetBlock(P.X, P.Y, P.Z); if (block == Block.Air) { block = Block.Blue; } cfg.BlueFlagBlock = block; p.Message("Set flag block of blue team to {0}", Block.GetName(p, block)); UpdateConfig(p, cfg); return(false); }
protected override void HandleSet(Player p, RoundsGame game, string[] args) { string prop = args[1]; CTFMapConfig cfg = new CTFMapConfig(); LoadMapConfig(p, cfg); if (prop.CaselessEq("bluespawn")) { cfg.BlueSpawn = (Vec3U16)p.Pos.FeetBlockCoords; p.Message("Set spawn of blue team to &b" + cfg.BlueSpawn); SaveMapConfig(p, cfg); } else if (prop.CaselessEq("redspawn")) { cfg.RedSpawn = (Vec3U16)p.Pos.FeetBlockCoords; p.Message("Set spawn of red team to &b" + cfg.RedSpawn); SaveMapConfig(p, cfg); } else if (prop.CaselessEq("blueflag")) { p.Message("Place or delete a block to set blue team's flag."); p.MakeSelection(1, cfg, BlueFlagCallback); } else if (prop.CaselessEq("redflag")) { p.Message("Place or delete a block to set red team's flag."); p.MakeSelection(1, cfg, RedFlagCallback); } else if (prop.CaselessEq("divider")) { cfg.ZDivider = p.Pos.BlockZ; p.Message("Set Z line divider to {0}.", cfg.ZDivider); SaveMapConfig(p, cfg); } else { Help(p, "set"); } }