<?php // Apply Formatting // function formatMessage($message, $messageType, $clientType) { $message = ucfirst($message); // Determine output format // if ($messageType == "notify") // Notification { $message = "<font color='#cccccc'>$message</font>"; } if ($messageType == "sysmessage") // Directed System Message { $message = "<font color='red'>$message</font>"; } if ($messageType == "room") // Say { $message = "<font color='#cbd3ff'>$message</font>"; } if ($messageType == "action") // Action { $message = "<font color='#b8b81d'>$message</font>"; } if ($messageType == "caction") // Player Action { $message = "<font color='#ffffff'>$message</font>"; } return $message; } // Checks for embedded system calls in messages and acts/removes them, then does final prep for delivery by JSON (if WebSocket) // function stripSysCalls($message, $c, $clientType) { $message = str_replace("_-SYSTEM: CHAT-_", "", $message); $message = str_replace("`", "'", $message); $message = str_replace("\n", "", $message); if ($clientType == GC_WEBSOCKET) return json_encode(array("message"=>$message)); else { // It's telnet or flash, strip ALL HTML after replacing <br>'s with \n's // $message = str_replace("<br>", "\n", $message); $message = strip_tags($message); return "\r\n" . trim($message); } } // Wraps message sent to characters in a JS function call to allow evals // function ow_Write($message, $from=0) { $message = str_replace("\n", "", $message); return "window.top.ow_Write(\"$message\");"; } // Update player's location on the map // function map_Update(Character $c, Room $r) { if (is_object($c->getConnection()) && $c->getConnection()->getClientType() == GC_WEBSOCKET) { $c->sendDirect(json_encode(array("oldroom" => "room{$r->getEID()}"))); $c->sendDirect(json_encode(array("newroom" => "room{$c->getRoom()->getEID()}"))); } } // Reload player's map (for the demo, all rooms) // function map_Refresh(Character $c) { if (is_object($c->getConnection()) && $c->getConnection()->getClientType() == GC_WEBSOCKET) { global $rooms; $data = "<table>"; // Work from top left to lower right // for ($y = 1; $y >= -1; $y--) { $data .= "<tr>"; for ($x = -1; $x <= 1; $x++) { $r = $rooms[$x][$y]; $data .= "<td id='room{$r->getEID()}' style='background:#aaa; border: 2px solid #000; width: 25px; height: 25px;'></td>"; } $data .= "</tr>"; } $data .= "</table>"; // Use sendDirect so it doesn't get wrapped in a message for general output // $c->sendDirect(json_encode(array("mapdata" => $data))); map_Update($c, $c->getRoom()); } } // Update the room contents area // function rc_Update($c) { if (is_object($c->getConnection()) && $c->getConnection()->getClientType() == GC_WEBSOCKET) { $message = $c->getRoom()->getPlayerListTable($c->getEID()); $c->sendDirect(json_encode(array("rcdata" => $message))); } } ?>