+void CapsuleNameMenu::AddChar() {
+ if (first) {
+ cursor = 1;
+ buffer[0] = select.Selected();
+ for (int i = 1; i < 5; ++i) {
+ buffer[i] = '_';
+ }
+ first = false;
+ } else {
+ if (cursor < 5) {
+ buffer[cursor] = select.Selected();
+ ++cursor;
+ } else {
+ // noise
+ }
+ }
+}
+
+void CapsuleNameMenu::RemoveChar() {
+ first = false;
+ if (cursor > 0) {
+ --cursor;
+ buffer[cursor] = '_';
+ }
+}
+
+void CapsuleNameMenu::StoreName() {
+ // NOTE: this will leak the memory allocated for the new name
+ char *name = 0;
+ for (int i = 0; i < 6; ++i) {
+ if (buffer[i] == '_' || buffer[i] == '\0') {
+ buffer[i] = '\0';
+ name = new char[i + 1];
+ std::strncpy(name, buffer, i + 1);
+ break;
+ }
+ }
+ if (name != 0) {
+ GetCapsule().SetName(name);
+ }
+}
+
+void CapsuleNameMenu::UpdateWorld(Uint32 deltaT) {