OpenTTD

Data Structures | Functions | Variables
network_chat_gui.cpp File Reference

GUI for handling chat messages. More...

`#include <stdarg.h>`
`#include "../stdafx.h"`
`#include "../strings_func.h"`
`#include "../blitter/factory.hpp"`
`#include "../console_func.h"`
`#include "../video/video_driver.hpp"`
`#include "../querystring_gui.h"`
`#include "../town.h"`
`#include "../window_func.h"`
`#include "../toolbar_gui.h"`
`#include "../core/geometry_func.hpp"`
`#include "network.h"`
`#include "network_client.h"`
`#include "network_base.h"`
`#include "../widgets/network_chat_widget.h"`
`#include "table/strings.h"`
`#include "../safeguards.h"`

Go to the source code of this file.

## Data Structures
struct | ChatMessage
| Container for a message. More...
struct | NetworkChatWindow
| Window to enter the chat message in. More...

## Functions
| assert_compile ((int) DRAW_STRING_BUFFER >=(int) NETWORK_CHAT_LENGTH+NETWORK_NAME_LENGTH+40)
| The draw buffer must be able to contain the chat message, client name and the "[All]" message, some spaces and possible translations of [All] to other languages. More...
static uint | GetChatMessageCount ()
| Count the chat messages. More...
void CDECL | NetworkAddChatMessage (TextColour colour, uint duration, const char *message,...)
| Add a text message to the 'chat window' to be shown. More...
void | NetworkReInitChatBoxSize ()
| Initialize all font-dependent chat box sizes. More...
void | NetworkInitChatMessage ()
| Initialize all buffers of the chat visualisation. More...
void | NetworkUndrawChatMessage ()
| Hide the chatbox.
void | NetworkChatMessageLoop ()
| Check if a message is expired. More...
void | NetworkDrawChatMessage ()
| Draw the chat message-box.
static void | SendChat (const char *buf, DestType type, int dest)
| Send an actual chat message. More...
void | ShowNetworkChatQueryWindow (DestType type, int dest)
| Show the chat window. More...

## Variables
static const uint | NETWORK_CHAT_LINE_SPACING = 3
| Spacing between chat lines. More...
static ChatMessage * | _chatmsg_list = NULL
| The actual chat message list.
static bool | _chatmessage_dirty = false
| Does the chat message need repainting?
static bool | _chatmessage_visible = false
| Is a chat message visible.
static bool | _chat_tab_completion_active
| Whether tab completion is active.
static uint | MAX_CHAT_MESSAGES = 0
| The limit of chat messages to show.
static PointDimension | _chatmsg_box
| The chatbox grows from the bottom so the coordinates are pixels from the left and pixels from the bottom. More...
static uint8 * | _chatmessage_backup = NULL
| Backup in case text is moved.
static const NWidgetPart | _nested_chat_window_widgets []
| The widgets of the chat window. More...
static WindowDesc | _chat_window_desc (WDP_MANUAL, NULL, 0, 0, WC_SEND_NETWORK_MSG, WC_NONE, 0, _nested_chat_window_widgets, lengthof(_nested_chat_window_widgets))
| The description of the chat window. More...

## Detailed Description

GUI for handling chat messages.

Definition in file network_chat_gui.cpp.

## Function Documentation

## ◆ assert_compile()

assert_compile | ( | (int) DRAW_STRING_BUFFER >=(int) NETWORK_CHAT_LENGTH+NETWORK_NAME_LENGTH+ | 40 | ) |

The draw buffer must be able to contain the chat message, client name and the "[All]" message, some spaces and possible translations of [All] to other languages.

## ◆ GetChatMessageCount()

static uint GetChatMessageCount | ( |  | ) |
| inline static

Count the chat messages.

Returns
  The number of chat messages.

Definition at line 68 of file network_chat_gui.cpp.

References MAX_CHAT_MESSAGES, and ChatMessage::message.

Referenced by NetworkAddChatMessage().

## ◆ NetworkAddChatMessage()

void CDECL NetworkAddChatMessage | ( | TextColour | colour,
|  | uint | duration,
|  | const char * | message,
|  |  | ...
| ) |  |

Add a text message to the 'chat window' to be shown.

Parameters

  colour | The colour this message is to be shown in
  duration | The duration of the chat message in seconds
  message | message itself in printf() style

Definition at line 84 of file network_chat_gui.cpp.

References ChatMessage::colour, DRAW_STRING_BUFFER, GetChatMessageCount(), lastof, ChatMessage::message, strecpy(), TC_IS_PALETTE_COLOUR, Utf8TrimString(), and vseprintf().

## ◆ NetworkChatMessageLoop()

void NetworkChatMessageLoop | ( |  | ) |

Check if a message is expired.

Definition at line 180 of file network_chat_gui.cpp.

References _realtime_tick, MAX_CHAT_MESSAGES, ChatMessage::message, and ChatMessage::remove_time.

## ◆ NetworkInitChatMessage()

void NetworkInitChatMessage | ( |  | ) |

Initialize all buffers of the chat visualisation.

Definition at line 118 of file network_chat_gui.cpp.

References _settings_client, ClientSettings::gui, GUISettings::network_chat_box_height, GUISettings::network_chat_box_width_pct, and ReallocT().

## ◆ NetworkReInitChatBoxSize()

void NetworkReInitChatBoxSize | ( |  | ) |

Initialize all font-dependent chat box sizes.

Definition at line 110 of file network_chat_gui.cpp.

References FONT_HEIGHT_NORMAL, Blitter::GetBytesPerPixel(), BlitterFactory::GetCurrentBlitter(), NETWORK_CHAT_LINE_SPACING, and ReallocT().

## ◆ SendChat()

static void SendChat | ( | const char * | buf,
|  | DestType | type,
|  | int | dest
| ) |  |
| static

Send an actual chat message.

Parameters

  buf | The message to send.
  type | The type of destination.
  dest | The actual destination index.

Definition at line 272 of file network_chat_gui.cpp.

References _network_server, ClientNetworkGameSocketHandler::SendChat(), and StrEmpty().

Referenced by NetworkChatWindow::OnClick().

## ◆ ShowNetworkChatQueryWindow()

void ShowNetworkChatQueryWindow | ( | DestType | type,
|  | int | dest
| ) |  |

Show the chat window.

Parameters

  type | The type of destination.
  dest | The actual destination index.

Definition at line 560 of file network_chat_gui.cpp.

References DeleteWindowByClass(), and WC_SEND_NETWORK_MSG.

## Variable Documentation

## ◆ _chat_window_desc

WindowDesc _chat_window_desc(WDP_MANUAL, NULL, 0, 0, WC_SEND_NETWORK_MSG, WC_NONE, 0, _nested_chat_window_widgets, lengthof(_nested_chat_window_widgets))
| static

The description of the chat window.

## ◆ _chatmsg_box

PointDimension _chatmsg_box
| static

The chatbox grows from the bottom so the coordinates are pixels from the left and pixels from the bottom.

The height is the maximum height.

Definition at line 61 of file network_chat_gui.cpp.

## ◆ _nested_chat_window_widgets

const NWidgetPart _nested_chat_window_widgets[]
| static

Initial value:
= {
NWidget(NWID_HORIZONTAL),
NWidget(WWT_CLOSEBOX, COLOUR_GREY, WID_NC_CLOSE),
NWidget(WWT_PANEL, COLOUR_GREY, WID_NC_BACKGROUND),
NWidget(NWID_HORIZONTAL),
NWidget(WWT_TEXT, COLOUR_GREY, WID_NC_DESTINATION), SetMinimalSize(62, 12), SetPadding(1, 0, 1, 0), SetDataTip(STR_NULL, STR_NULL),
NWidget(WWT_EDITBOX, COLOUR_GREY, WID_NC_TEXTBOX), SetMinimalSize(100, 12), SetPadding(1, 0, 1, 0), SetResize(1, 0),
SetDataTip(STR_NETWORK_CHAT_OSKTITLE, STR_NULL),
NWidget(WWT_PUSHTXTBTN, COLOUR_GREY, WID_NC_SENDBUTTON), SetMinimalSize(62, 12), SetPadding(1, 0, 1, 0), SetDataTip(STR_NETWORK_CHAT_SEND, STR_NULL),
EndContainer(),
EndContainer(),
EndContainer(),
}
WID_NC_DESTINATION
Destination.
Definition: network_chat_widget.h:19
SetResize
static NWidgetPart SetResize(int16 dx, int16 dy)
Widget part function for setting the resize step.
Definition: widget_type.h:930
WID_NC_CLOSE
Close button.
Definition: network_chat_widget.h:17
NWID_HORIZONTAL
Horizontal container.
Definition: widget_type.h:75
WWT_EDITBOX
a textbox for typing
Definition: widget_type.h:71
WWT_CLOSEBOX
Close box (at top-left of a window)
Definition: widget_type.h:69
WWT_TEXT
Pure simple text.
Definition: widget_type.h:58
SetPadding
static NWidgetPart SetPadding(uint8 top, uint8 right, uint8 bottom, uint8 left)
Widget part function for setting additional space around a widget.
Definition: widget_type.h:1046
WID_NC_TEXTBOX
Textbox.
Definition: network_chat_widget.h:20
SetDataTip
static NWidgetPart SetDataTip(uint32 data, StringID tip)
Widget part function for setting the data and tooltip.
Definition: widget_type.h:1014
SetMinimalSize
static NWidgetPart SetMinimalSize(int16 x, int16 y)
Widget part function for setting the minimal size.
Definition: widget_type.h:947
WWT_PUSHTXTBTN
Normal push-button (no toggle button) with text caption.
Definition: widget_type.h:104
WWT_PANEL
Simple depressed panel.
Definition: widget_type.h:50
NWidget
static NWidgetPart NWidget(WidgetType tp, Colours col, int16 idx=-1)
Widget part function for starting a new &#39;real&#39; widget.
Definition: widget_type.h:1114
WID_NC_BACKGROUND
Background of the window.
Definition: network_chat_widget.h:18
EndContainer
static NWidgetPart EndContainer()
Widget part function for denoting the end of a container (horizontal, vertical, WWT_FRAME, WWT_INSET, or WWT_PANEL).
Definition: widget_type.h:999
WID_NC_SENDBUTTON
Send button.
Definition: network_chat_widget.h:21

The widgets of the chat window.

Definition at line 532 of file network_chat_gui.cpp.

## ◆ NETWORK_CHAT_LINE_SPACING

const uint NETWORK_CHAT_LINE_SPACING = 3
| static

Spacing between chat lines.

Definition at line 41 of file network_chat_gui.cpp.

Referenced by NetworkReInitChatBoxSize().