public override LivingObject[] SetupWorldForNewPlayer(Player player) { const int NUM_DWARVES = 1; // XXX entry location var env = this.World.AllObjects.OfType<Dwarrowdelf.Server.EnvironmentObject>().First(); var list = new List<LivingObject>(); for (int i = 0; i < NUM_DWARVES; ++i) { IntPoint3 p; do { p = new IntPoint3(m_random.Next(env.Width), m_random.Next(env.Height), env.HomeLocation.Z); } while (!EnvironmentHelpers.CanEnter(env, p)); var l = CreateDwarf(i); if (!l.MoveTo(env, p)) throw new Exception(); list.Add(l); } return list.ToArray(); }
public VisionTrackerGlobalFOV(Player player, EnvironmentObject env) { Debug.Assert(env.VisibilityMode == VisibilityMode.GlobalFOV); m_player = player; m_environment = env; }
public VisionTrackerLOS(Player player, EnvironmentObject env) { Debug.Assert(env.VisibilityMode == VisibilityMode.LivingLOS); m_player = player; m_environment = env; }
public AllVisibleVisionTracker(Player player, EnvironmentObject env) { Debug.Assert(env.VisibilityMode == VisibilityMode.AllVisible); m_player = player; m_environment = env; }
public void SetPlayer(Player player) { if (player != null) { m_exprScope.SetVariable("player", player); m_scopeVars["player"] = player; } else { m_exprScope.RemoveVariable("player"); m_scopeVars.Remove("player"); } }
public IPRunner(World world, GameEngine engine, Player player) { m_player = player; m_scriptOutputStream = new MyStream(player.Send); m_scriptEngine = IronPython.Hosting.Python.CreateEngine(); InitRuntime(m_scriptEngine.Runtime); m_exprScope = m_scriptEngine.CreateScope(); InitScope(m_exprScope, world, engine, player); m_scriptScope = m_scriptEngine.CreateScope(); InitScope(m_scriptScope, world, engine, player); }
public LivingObject[] SetupWorldForNewPlayer(Player player) { const int NUM_DWARVES = 1; // XXX entry location var env = this.World.HackGetFirstEnv(); var startRect = FindStartLocation(env); if (!startRect.HasValue) throw new Exception(); var startLocs = startRect.Value.Range().ToArray(); // clear trees foreach (var p in startLocs) { var td = env.GetTileData(p); if (td.InteriorID == InteriorID.Tree) { td.InteriorID = InteriorID.Grass; td.InteriorMaterialID = MaterialID.RyeGrass; env.SetTileData(p, td); } } var list = new List<LivingObject>(); for (int i = 0; i < NUM_DWARVES; ++i) { var p = startLocs[Helpers.GetRandomInt(startLocs.Length - 1)]; var l = CreateDwarf(i); l.Strength = 100; if (!l.MoveTo(env, p)) throw new Exception(); list.Add(l); } return list.ToArray(); }
Player CreatePlayer(int userID) { var player = FindPlayer(userID); if (player != null) throw new Exception(); trace.TraceInformation("Creating new player {0}", userID); player = new Player(userID, this); m_players.Add(player); InitPlayer(player); return player; }
public PlayerChangeHandler(Player player) : base(player) { }
void OnPlayerProceedTurnReceived(Player player) { switch (m_world.TickMethod) { case WorldTickMethod.Simultaneous: if (m_players.Count > 0 && m_players.All(u => u.IsProceedTurnReplyReceived)) { this.World.SetProceedTurn(); SignalWorld(); } break; case WorldTickMethod.Sequential: this.World.SetProceedTurn(); SignalWorld(); break; } }
public AdminChangeHandler(Player player) : base(player) { }
protected ChangeHandler(Player player) { m_player = player; }
void RemovePlayer(Player player) { VerifyAccess(); bool ok = m_players.Remove(player); Debug.Assert(ok); player.ProceedTurnReceived -= OnPlayerProceedTurnReceived; player.DisconnectEvent -= OnPlayerDisconnected; }
void InitPlayer(Player player) { VerifyAccess(); player.ProceedTurnReceived += OnPlayerProceedTurnReceived; player.DisconnectEvent += OnPlayerDisconnected; }
public void SetPlayer(Player player) { trace.TraceInformation("{0} takes control of {1}", this, player); this.Player = player; player.ConnectUser(this); if (m_ipStartTask != null) m_ipStartTask.Wait(); if (m_ipRunner != null) m_ipRunner.SetPlayer(player); }
void InitScope(ScriptScope scope, World world, GameEngine engine, Player player) { var globals = new Dictionary<string, object>() { { "world", world }, { "engine", engine }, { "player", player}, { "get", new Func<object, BaseObject>(world.IPGet) }, }; foreach (var kvp in globals) scope.SetVariable(kvp.Key, kvp.Value); // XXX perhaps this can also be done with C# somehow... m_scriptEngine.Execute("import Dwarrowdelf", scope); }
void OnPlayerProceedTurnReceived(Player player) { switch (this.World.TickMethod) { case WorldTickMethod.Simultaneous: if (m_players.Count > 0 && m_players.Where(p => p.IsConnected).All(p => p.IsProceedTurnReplyReceived)) { this.World.SetProceedTurn(); Signal(); } break; case WorldTickMethod.Sequential: this.World.SetProceedTurn(); Signal(); break; } }
void OnPlayerDisconnected(Player player) { m_playersConnected--; Debug.Assert(m_players.Count(p => p.IsConnected) == m_playersConnected); }
protected void AddPlayer(Player player) { var playerID = m_playerIDCounter++; m_players.Add(player); InitPlayer(player); }