/// <summary> /// constructor /// </summary> /// <param name="endPoint">for the connection</param> public MessageTransmiter(IPEndPoint endPoint) { ep = endPoint; isOpen = false; isMultiActive = false; statues = null; delegates = new List <EventHandler <StatuesEventArgs> >(); }
/// <summary> /// Get a list of games /// </summary> /// <returns> a list of games that waiting to start </returns> public string[] GetListGames() { Statues stat = ClientSingleton.Client.SendMesseage("list"); // check if the stat received currctly if (stat == null) { return(null); } return(JsonConvert.DeserializeObject <string[]>(stat.Message)); }
/// <summary> /// executes the start command /// </summary> /// <param name="args">arguments of the command</param> /// <param name="client">to give the command</param> /// <returns> the Status</returns> public Status Execute(string[] args, TcpClient client) { string message = String.Join(" ", args); // send and receive a message messageRec.SendMessage(message); string result = Statues.FromJson(messageRec.GetMassage()).Message; Console.WriteLine(result); return(Status.KeepConnection); }
/// <summary> /// apply to join the game. /// </summary> /// <param name="game">the name of the game to join to</param> /// <returns>a maze</returns> public Maze JoinGame(string game) { Statues stat = ClientSingleton.Client.SendMesseage("join " + game); // check if the stat received currctly if (stat == null) { return(null); } return(Maze.FromJSON(stat.Message)); }
/// <summary> /// function of starting the game /// </summary> /// <returns>a maze</returns> public Maze StartGame() { Statues stat = ClientSingleton.Client.SendMesseage("start " + mazeName + " " + Rows + " " + Cols); // check if the stat received currctly if (stat == null) { return(null); } return(Maze.FromJSON(stat.Message)); }
/// <summary> /// executes the close command /// </summary> /// <param name="args">arguments of the command</param> /// <param name="client">to give the command</param> /// <returns></returns> public Status Execute(string[] args, TcpClient client) { if (messageRec.IsMultiActive) { string message = String.Join(" ", args); // send and receive a message messageRec.SendMessage(message); Statues stat = Statues.FromJson(messageRec.GetMassage()); Console.WriteLine(stat.Message); return(stat.Stat); } Console.WriteLine("Can't close a game without playing"); return(Status.Disconnect); }
/// <summary> /// solve the maze /// </summary> /// <returns>string representation of the solution</returns> public string SolveMaze() { // if the solution is null if (mazeSolution == null) { // ask for a solution from the server Statues stat = ClientSingleton.Client.SendMesseage("solve " + MazeName + " " + searchAlgoritm); // if received null from the server if (stat == null) { return(null); } // return the mazesolution using the solution from the server mazeSolution = MazeSolution.FromJson(stat.Message); } return(mazeSolution); }
/// <summary> /// sends a single message to the server and wait for response back /// </summary> /// <param name="message"> to send </param> public void SendSingleMessage(string message) { // create a client and establish a connection TcpClient newClient = new TcpClient(); newClient.Connect(ep); using (NetworkStream newStream = newClient.GetStream()) using (BinaryWriter newWriter = new BinaryWriter(newStream)) using (BinaryReader newReader = new BinaryReader(newStream)) { // write and erad a message newWriter.Write(message); string result = newReader.ReadString(); statues = Statues.FromJson(result); } // close the client newClient.Close(); }
/// <summary> /// close an Open connection to the server /// </summary> public void Close() { // turn off the flags isMultiActive = false; isOpen = false; // dispose of the stream resourecs writer.Dispose(); reader.Dispose(); stream.Dispose(); client.Close(); // unsign all the delegates in the event foreach (EventHandler <StatuesEventArgs> e in delegates) { NotifyAboutMessage -= e; } delegates.Clear(); statues = null; }
/// <summary> /// gets a statues from the server using the Open connection /// </summary> /// <returns>the statues received from the server</returns> public Statues GetStatues() { // wait for the receiver to get a message while (statues == null) { if (isOpen) { Thread.Sleep(1); } else { return(null); } } // save the message at current and reset the messageReceiverd to null Statues current = statues; statues = null; return(current); }
/// <summary> /// send a move to the other player /// </summary> /// <param name="direction"></param> public void SendMove(Direction direction) { Statues stat = ClientSingleton.Client.SendMesseage("play " + direction.ToString()); }
/// <summary> /// finished game /// </summary> public void FinishGame() { Statues stat = ClientSingleton.Client.SendMesseage("finish " + MazeName); }
/// <summary> /// close the game /// </summary> public void CloseGame() { Statues stat = ClientSingleton.Client.SendMesseage("close " + MazeName); }
/// <summary> /// opens a new multiplayer connection to the client /// </summary> public void Open() { // sets bools to true and message to null isMultiActive = true; isOpen = true; // create a client and Open the streams client = new TcpClient(); client.Connect(ep); stream = client.GetStream(); reader = new BinaryReader(stream); writer = new BinaryWriter(stream); // task to listen for the receiving stream. ready for messages from the server receiver = new Task(() => { // do as long as the isOpen bool is true while (isOpen) { // read only if the last message received was already taken if (statues == null) { string result; Status status; try { // get a message from the server and parse it to Statues result = reader.ReadString(); statues = Statues.FromJson(result); status = statues.Stat; NotifyAboutMessage?.Invoke(this, new StatuesEventArgs(statues)); } catch (Exception) { MessageBox.Show("Connect to the server have been closed"); // an error in the connection statues = new Statues(); statues.SetStatues(Status.Close, "Error receiveing message from the server"); status = Status.Disconnect; } // switch through the different options received from the server switch (status) { case Status.Disconnect: { Close(); break; } case Status.Close: { Close(); break; } case Status.Play: { statues = null; continue; } case Status.CloseGame: { // close the connection writer.Write("exit"); Close(); break; } case Status.Finish: { // close the connection writer.Write("exit"); Close(); break; } default: { break; } } } // wait for some one to receive the message else { Thread.Sleep(1); } } }); // start the thread receiver.Start(); }
public StatuesEventArgs(Statues s) { stat = s; }
public T4Attribute(int group, Statues statues, Element element, string info) { }
/// <summary> /// opens a new multiplayer connection to the client /// </summary> public void Open() { // sets bools to true and message to null messageReceived = null; isMultiActive = true; isOpen = true; // create a client and Open the streams client = new TcpClient(); client.Connect(ep); stream = client.GetStream(); reader = new BinaryReader(stream); writer = new BinaryWriter(stream); // task to listen for the receiving stream. ready for messages from the server receiver = new Task(() => { // do as long as the isOpen bool is true while (isOpen) { // read only if the last message received was already taken if (messageReceived == null) { string result; Statues statues; try { // get a message from the server and parse it to Statues result = reader.ReadString(); statues = Statues.FromJson(result); } catch (Exception e) { // an error in the connection statues = new Statues(); statues.SetStatues(Status.Close, "Error" + e.ToString()); result = "Error"; break; } // switch through the different options received from the server switch (statues.Stat) { case Status.Disconnect: { Close(); break; } case Status.Close: { Close(); break; } case Status.PrintAndContinue: { Console.WriteLine(statues.Message); continue; } case Status.PrintAndStop: { // print the message and close the connection Console.WriteLine(statues.Message); writer.Write("exit"); string feedback = reader.ReadString(); Close(); break; } case Status.Error: { // print the error message Console.WriteLine(statues.Message); break; } default: { break; } } // put the message from the server into the messageReceived var. messageReceived = result; } // wait for some one to receive the message else { Thread.Sleep(1); } } }); // start the thread receiver.Start(); }
private void AddStatue(Statues name) { IGestureSegment[] segments = null; switch (name) { case Statues.HandUp: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new HandUpSegment(); } break; case Statues.HandRight: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new HandRightSegment(); } break; case Statues.HandLeft: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new HandLeftSegment(); } break; case Statues.HandBottom: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new HandBottomSegment(); } break; case Statues.Reset: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new ResetSegment(); } break; case Statues.Jump: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new JumpSegment(); } break; case Statues.TurnRight: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new TurnRightSegment(); } break; case Statues.TurnLeft: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new TurnLeftSegment(); } break; case Statues.OpenRepeat: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new OpenRepeatSegment(); } break; case Statues.CloseRepeat: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new CloseRepeatSegment(); } break; case Statues.Stop: segments = new IGestureSegment[15]; for (int i = 0; i < 15; i++) { segments[i] = new StopSegment(); } break; case Statues.GreenFlag: segments = new IGestureSegment[15]; for (int i = 0; i < 15; i++) { segments[i] = new GreenFlagSegment(); } break; case Statues.Grow: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new GrowSegment(); } break; case Statues.Shrink: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new ShrinkSegment(); } break; case Statues.ChangeScene: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new ChangeSceneSegment(); } break; case Statues.NormalSize: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new NormalSizeSegment(); } break; case Statues.Show: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new ShowSegment(); } break; case Statues.Hide: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new HideSegment(); } break; case Statues.Speed: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new SpeedSegment(); } break; case Statues.Wait: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new WaitSegment(); } break; case Statues.TouchAnotherSprite: segments = new IGestureSegment[NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new TouchAnotherSpriteSegment(); } break; case Statues.WaveRight: segments = new IGestureSegment[2 * NB_FRAME]; for (int i = 0; i < NB_FRAME; i++) { segments[i] = new WaveRightSegment1(); } for (int i = NB_FRAME; i < 2 * NB_FRAME; i++) { segments[i] = new WaveRightSegment2(); } break; case Statues.FingerCount: segments = new IGestureSegment[20]; for (int i = 0; i < 20; i++) { segments[i] = new FingerCount(); } break; default: break; } Gesture gesture = new Gesture(name.ToString(), segments); gesture.GestureDetected += OnGestureDetected; _gestures.Add(gesture); }