//using System; //using System.Collections.Generic; //using System.Linq; //using System.Text; //using System.Threading; //namespace Chop.Game.Rooms.Games //{ // public class GameRoom : Room // { // private const short COUNTDOWN_SECONDS = 15; // private const short TOTAL_TIME = 60; // private const short TIME_TO_RESTART = 20; // public short mSecondsToStart; // public short mSecondsRemaining; // new public ArenaTemplate mTemplate; // //public VirtualGame mGame; // public override void Init() // { // mSecondsToStart = COUNTDOWN_SECONDS; // mSecondsRemaining = TOTAL_TIME; // mGame.mState = VirtualGameState.Running; // mGame.SendGameInfo(); // mTemplate = new ArenaTemplate(); // ResponseBuilder s = new ResponseBuilder(241); // "Cq" // s.AppendInt32(-1); // mGame.SendMessageToPlayers(s); // Core.CommonDelegate d = new Core.CommonDelegate(Countdown); // d.BeginInvoke(null, null); // } // public void Countdown() // must be own thread // { // while (mSecondsToStart > 0) // { // Thread.Sleep(1000); // mSecondsToStart--; // } // ResponseBuilder r = new ResponseBuilder(247); // "Cw" // r.AppendInt32(mSecondsRemaining); // mGame.SendMessageToPlayers(r); // Core.CommonDelegate d = new Core.CommonDelegate(Timer); // d.BeginInvoke(null, null); // //Runner = new Thread(new ThreadStart(Run)); // //Runner.Start(); // } // public override void Run() // must be own thread // { // while (mSecondsRemaining > 0) // { // bool updated = false; // ResponseBuilder Response = new ResponseBuilder(244); // "Ct" // Response.AppendInt32(mGame.Users.Count); // foreach (GamePlayer sUser in mGame.Users) // { // try // { // //if (!sUser.mIsWalking && !sUser.mStatusUpdated) // No update // // continue; // //if (sUser.mStatusUpdated && !sUser.mIsWalking) // //{ // // sUser.mStatusUpdated = false; // // Response.AppendString(sUser.ToStatusString(), 13); // // continue; // //} // updated = true; // Response.AppendInt32(0); // Response.AppendInt32(sUser.mDynamicID); // Response.AppendInt32(sUser.mX); // Response.AppendInt32(sUser.mY); // Response.AppendInt32(sUser.mHeight); // Response.AppendInt32(sUser.mBodyRotation); // Response.AppendInt32(0); // Response.AppendInt32(-1); // //byte[] sNextPosition = mPathfinder.Path(sUser.mX, sUser.mY, sUser.mWalkingX, sUser.mWalkingY); // ////byte[] sNextPosition = AWAPathfinder.GetNext(sUser.mX, sUser.mY, sUser.mWalkingX, sUser.mWalkingY, mSquareMap); // //if (sNextPosition.Length == 0) // //{ // // sUser.mIsWalking = false; // // sUser.RemoveStatus("mv", false); // // if (mSquareMap[sUser.mX, sUser.mY] == SquareState.Chair) // // sUser.AddStatus("sit", mTemplate.mDynamicHeight[sUser.mX, sUser.mY], false); // // else if (mSquareMap[sUser.mX, sUser.mY] == SquareState.Bed) // // sUser.AddStatus("lay", mTemplate.mDynamicHeight[sUser.mX, sUser.mY], false); // // CheckTrigger(sUser); // // Response.AppendString(sUser.ToStatusString(), 13); // // continue; // //} // //if (mSquareMap[sNextPosition[0], sNextPosition[1]] == SquareState.Closed) // // System.Console.WriteLine("Pathfinder sucks :("); // //// Set some variables // //mDynamicHeightmap[sUser.mX, sUser.mY] = 1; // old open // //mDynamicHeightmap[sNextPosition[0], sNextPosition[1]] = 0; // new closed // //sUser.mBodyRotation = Rotation.Calculate(sUser.mX, sUser.mY, sNextPosition[0], sNextPosition[1]); // //sUser.mHeadRotation = sUser.mBodyRotation; // //// Send movement-packet // //sUser.RemoveStatus("sit", false); // //sUser.RemoveStatus("lay", false); // //sUser.AddStatus("mv", sNextPosition[0] + "," + sNextPosition[1] + "," + mTemplate.mDynamicHeight[sNextPosition[0], sNextPosition[1]], false); // //Response.AppendString(sUser.ToStatusString(), 13); // //// Set position // //sUser.mX = sNextPosition[0]; // //sUser.mY = sNextPosition[1]; // //sUser.mHeight = mTemplate.mDynamicHeight[sNextPosition[0], sNextPosition[1]]; // } // catch (InvalidOperationException) { mGame.RemovePlayer(sUser, false, 0); } // Not really dangerous // catch (Exception x) { System.Console.WriteLine(x); mGame.RemovePlayer(sUser, false, 0); } // } // Response.AppendInt32(0); // foreach (GameTeam team in mGame.mTeams) // Response.AppendInt32(team.mScore); // Response.AppendInt32(1); // Response.AppendInt32(0); // if (updated) // mGame.SendMessageToPlayers(Response); // Thread.Sleep(470); // } // } // public void Timer() // { // while (mSecondsRemaining > 0) // { // Thread.Sleep(1000); // mSecondsRemaining--; // } // mGame.mState = VirtualGameState.Closed; // ResponseBuilder r = new ResponseBuilder(248); // "Cx" // r.AppendInt32(TIME_TO_RESTART); // r.AppendInt32(mGame.mTeams.Length); // foreach (GameTeam team in mGame.mTeams) // { // byte playerCount = (byte)team.Players.Count; // if (playerCount > 0) // { // r.AppendInt32(playerCount); // foreach (GamePlayer player in team.Players) // { // r.AppendInt32(player.mDynamicID); // r.AppendString(player.mClient.mHabbo.mName); // r.AppendInt32(player.mScore); // } // r.AppendInt32(team.mScore); // } // else // r.AppendInt32(-1); // } // mGame.SendMessageToPlayers(r); // } // public ResponseBuilder GetPlayers() // { // ResponseBuilder r = new ResponseBuilder(243); // "Cs" // r.AppendInt32(1); // r.AppendInt32(mSecondsToStart); // r.AppendInt32(COUNTDOWN_SECONDS); // r.AppendInt32(mGame.Users.Count); // byte b = 0; // foreach (GamePlayer sUser in mGame.Users) // { // r.Append(sUser.ToFuseString(b)); // b++; // } // r.AppendInt32(mTemplate.maxX); // r.AppendInt32(mTemplate.maxY); // for (int y = 0; y < mTemplate.maxY; y++) // for (int x = 0; x < mTemplate.maxX; x++) // { // r.AppendInt32(mTemplate.bbTColor[x, y]); // r.AppendInt32(mTemplate.bbTState[x, y]); // } // r.AppendInt32(1); // r.AppendInt32(0); // return r; // } // public string GetStageInfo() // { // ResponseBuilder s = new ResponseBuilder(); // s.AppendInt32(1); // s.AppendInt32(mSecondsToStart); // s.AppendInt32(COUNTDOWN_SECONDS); // s.AppendInt32(0); // s.AppendInt32(mTemplate.maxX); // s.AppendInt32(mTemplate.maxY); // for (int y = 0; y < mTemplate.maxY; y++) // for (int x = 0; x < mTemplate.maxX; x++) // { // s.AppendInt32(mTemplate.bbTColor[x, y]); // s.AppendInt32(mTemplate.bbTState[x, y]); // } // s.AppendInt32(1); // s.AppendInt32(0); // return s.ToString(); // } // } //}