Mercurial > projects > mde
view mde/content/miscContent.d @ 132:264028f4115a
Cleaned up mde.imde and a couple of widget functions.
New mde.menus module to add default menus.
The input singleton is now created in mde.input.Input instead of mde.imde.
author | Diggory Hardy <diggory.hardy@gmail.com> |
---|---|
date | Fri, 23 Jan 2009 14:59:05 +0000 |
parents | 9cff74f68b84 |
children | 9f035cd139c6 |
line wrap: on
line source
/* LICENSE BLOCK Part of mde: a Modular D game-oriented Engine Copyright © 2007-2008 Diggory Hardy This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ /****************************************************************************** * The content system − a few content classes. *****************************************************************************/ module mde.content.miscContent; public import mde.content.Content; import tango.util.log.Log : Log, Logger; private Logger logger; static this () { logger = Log.getLogger ("mde.content.miscContent"); } /** A generic way to handle a list of type IContent. */ class ContentList : Content, IContentList { this (char[] symbol, Content[] list = null) { list_ = list; super (symbol); } this (char[] symbol, Content[char[]] l) { list_.length = l.length; size_t i; foreach (c; l) list_[i++] = c; super (symbol); } override Content[] list () { return list_; } ContentList append (Content x) { size_t l = list_.length; list_.length = l + 1; list_[l] = x; return this; } ContentList append (Content[] x) { list_ ~= x; return this; } protected: final Content[] list_; } /** Created on errors to display and log a message. */ class ErrorContent : Content { this (char[] name, char[] msg) { super (name); this.msg = msg; logger.error (name ~ ": " ~ msg); } override char[] toString (uint i) { return i == 0 ? msg : i == 1 ? name_ : null; } protected: char[] msg; } /** A Content with no value but able to pass on an event. * * The point being that a button can be tied to one of these. */ class EventContent : Content { this (char[] symbol) { super (symbol); } }