The following commit has been merged in the master branch:
commit 97cf7519db476bae719fffb07c829b6ce2ac18b9
Author: Miriam Ruiz <[email protected]>
Date:   Thu Apr 30 15:44:05 2009 +0200

    Finished filter configuration loader
    Added support for minimal recommended age

diff --git a/filter.cfg b/filter.cfg
index ff9fba1..0a3ad42 100644
--- a/filter.cfg
+++ b/filter.cfg
@@ -1,18 +1,27 @@
 <gofind version="1">
-       <filter target="black" id="B 1">
+       <filter class="hidden" id="invisible">
+       </filter>
+       <filter class="highlight" id="gold">
+       </filter>
+       <filter class="intolerable" id="black">
                <rule condition="sex::violent" />
        </filter>
-       <filter target="red" id="R 1">
-               <rule condition="violence::non-realistic-optional" />
-               <rule condition="violence::non-realistic" id="R 1 b" />
+       <filter class="dangerous" id="red">
+               <rule condition="violence::realistic" />
+               <rule condition="violence::against-humans | 
violence::against-players" />
+               <rule condition="sex::realistic" />
+       </filter>
+       <filter class="warning" id="yellow">
+               <rule condition="violence::realistic-optional | 
violence::non-realistic | violence::non-realistic-optional" />
+       </filter>
+       <filter class="safe" id="green">
+               <rule condition="violence::none & sex::none" />
        </filter>
-       <filter target="yellow" id="Y 1">
-               <rule condition=" ! issues::horror" />
+       <filter class="recommended" id="blue">
        </filter>
-       <filter target="yellow" id="Y 2">
-               <rule 
condition="issues::horror&(issues::horror|issues::cruelty)" />
+       <filter class="normal" id="white">
        </filter>
-       <filter target="green" id="G 1">
-               <rule condition="violence::none & sex::none & 
!issues::bad-words & !  issues::discrimination    " />
+       <filter age="6" id="reading skills">
+               <rule condition="!cognitive::no-reading & 
!cognitive::minimal-reading" />
        </filter>
 </gofind>
diff --git a/filter.cpp b/filter.cpp
index c0fd46e..3dc49b2 100644
--- a/filter.cpp
+++ b/filter.cpp
@@ -50,6 +50,9 @@ PackageFilter::~PackageFilter()
        DeleteList();
 }
 
+const char *const PackageFilter::TypeNames[16] = { NULL, "Unknown", 
"Recommended", "Safe", "Normal",
+       "Warning", "Dangerous", "Intolerable", "Highlight", "Hidden", NULL };
+
 using namespace std;
 
 bool PackageFilter::Load(FILE *fd)
@@ -79,23 +82,39 @@ bool PackageFilter::Load(FILE *fd)
        if (atoi(version->value()) != 1) return false;
 
        Type type = PackageFilter::Unknown;
+       int min_age = 0;
 
        for (rapidxml::xml_node<> *filter = data->first_node("filter");
                        filter; filter = filter->next_sibling("filter"))
        {
-               rapidxml::xml_attribute<> *target = 
filter->first_attribute("target");
-               if (!target) break;
-               std::cout << target->name() << " = " << target->value() << 
std::endl;
-
-               if (strcasecmp(target->value(), "black") == 0)       type = 
PackageFilter::Black;
-               else if (strcasecmp(target->value(), "red") == 0)    type = 
PackageFilter::Red;
-               else if (strcasecmp(target->value(), "yellow") == 0) type = 
PackageFilter::Yellow;
-               else if (strcasecmp(target->value(), "green") == 0)  type = 
PackageFilter::Green;
-               else if (strcasecmp(target->value(), "white") == 0)  type = 
PackageFilter::White;
-               else if (strcasecmp(target->value(), "blue") == 0)   type = 
PackageFilter::Blue;
-               else if (strcasecmp(target->value(), "hidden") == 0) type = 
PackageFilter::Hidden;
+               rapidxml::xml_attribute<> *target = 
filter->first_attribute("class");
+
+               if (target)
+               {
+                       std::cout << target->name() << " = " << target->value() 
<< std::endl;
+
+                       if (strcasecmp(target->value(), "intolerable") == 0)    
   type = PackageFilter::Intolerable;
+                       else if (strcasecmp(target->value(), "dangerous") == 0) 
   type = PackageFilter::Dangerous;
+                       else if (strcasecmp(target->value(), "warning") == 0) 
type = PackageFilter::Warning;
+                       else if (strcasecmp(target->value(), "normal") == 0)  
type = PackageFilter::Normal;
+                       else if (strcasecmp(target->value(), "safe") == 0)  
type = PackageFilter::Safe;
+                       else if (strcasecmp(target->value(), "recommended") == 
0)  type = PackageFilter::Recommended;
+                       else if (strcasecmp(target->value(), "highlight") == 0) 
  type = PackageFilter::Highlight;
+                       else if (strcasecmp(target->value(), "hidden") == 0) 
type = PackageFilter::Hidden;
+                       else type = PackageFilter::Unknown;
+               }
                else type = PackageFilter::Unknown;
 
+               rapidxml::xml_attribute<> *age = filter->first_attribute("age");
+
+               if (age)
+               {
+                       std::cout << age->name() << " = " << age->value() << 
std::endl;
+                       int age_num = atoi(age->value());
+                       if (min_age < age_num)
+                               min_age = age_num;
+               }
+
                rapidxml::xml_attribute<> *tid = filter->first_attribute("id");
                if (tid)
                        std::cout << tid->name() << " = " << tid->value() << 
std::endl;
@@ -108,10 +127,12 @@ bool PackageFilter::Load(FILE *fd)
                        rapidxml::xml_attribute<> *rid = 
rule->first_attribute("id");
                        if (rid)
                                std::cout << rid->name() << " = " << 
rid->value() << std::endl;
+                               std::cout << type << std::endl;
                        std::cout << condition->name() << " = " << 
condition->value() << std::endl;
                        if (!AddLast(
                                rid ? rid->value() : tid ? tid->value() : "?" ,
                                type,
+                               min_age,
                                condition->value()
                        ))
                                std::cerr << "Error Adding '"<< 
condition->value() << "'" << std::endl;
@@ -144,18 +165,21 @@ int PackageFilter::TagValue(const Tag &tag)
        //std::string facet_name = tag.facet().name();
        //std::string tag_name = tag.name();
 
+       Type type = PackageFilter::Unknown;
+
        // The order is important
        PackageFilter::ResultList *item = list;
        while (item != NULL) {
                if (tagdata.CheckTag(&item->positive, name))
                {
                        //std::cout << "ITEM = " << item->name << std::endl;
-                       return item->type;
+                       if (type < item->type)
+                               type = item->type;
                }
                item = item->next;
        }
 
-       return PackageFilter::Unknown;
+       return type;
 }
 
 /* Find out the color of a set of tags */
@@ -174,6 +198,8 @@ int PackageFilter::TagsValue(const TagSet &tags)
                tagdata.SetTagIfExists(&t, name);
        }
 
+       Type type = PackageFilter::Unknown;
+
        // The order is important
        PackageFilter::ResultList *item = list;
        while (item != NULL) {
@@ -185,12 +211,13 @@ int PackageFilter::TagsValue(const TagSet &tags)
                if (t.CompareAll(item->positive) && 
!t.CompareAny(item->negative))
                {
                        //std::cout << "ITEM = " << item->name << std::endl;
-                       return item->type;
+                       if (type < item->type)
+                               type = item->type;
                }
                item = item->next;
        }
 
-       return PackageFilter::Unknown;
+       return type;
 }
 
 
@@ -229,7 +256,7 @@ bool PackageFilter::AddLastAndHelper(ResultList *element, 
boolstuff::BoolExpr<st
        return success;
 }
 
-bool PackageFilter::AddLastOrHelper(const std::string str, Type t, 
boolstuff::BoolExpr<std::string> *expr)
+bool PackageFilter::AddLastOrHelper(const std::string str, Type type, int age, 
boolstuff::BoolExpr<std::string> *expr)
 {
        bool success = true;
 
@@ -242,7 +269,7 @@ bool PackageFilter::AddLastOrHelper(const std::string str, 
Type t, boolstuff::Bo
                case boolstuff::BoolExpr<std::string>::NOT:
                case boolstuff::BoolExpr<std::string>::AND:
                        if (!success) break;
-                       element = new ResultList(str, t);
+                       element = new ResultList(str, type, age);
                        success &= AddLastAndHelper(element, expr);
                        if (success) AddLast(element);
                        else delete element;
@@ -250,9 +277,9 @@ bool PackageFilter::AddLastOrHelper(const std::string str, 
Type t, boolstuff::Bo
                case boolstuff::BoolExpr<std::string>::OR:
                        if (!success) break;
                        if (expr->getLeft())
-                               success &= AddLastOrHelper(str, t, 
expr->getLeft());
+                               success &= AddLastOrHelper(str, type, age, 
expr->getLeft());
                        if (expr->getRight())
-                               success &= AddLastOrHelper(str, t, 
expr->getRight());
+                               success &= AddLastOrHelper(str, type, age, 
expr->getRight());
                        break;
                default:
                        success = false;
@@ -262,7 +289,7 @@ bool PackageFilter::AddLastOrHelper(const std::string str, 
Type t, boolstuff::Bo
        return success;
 }
 
-bool PackageFilter::AddLast(const std::string str, Type t, const std::string 
&bool_expr)
+bool PackageFilter::AddLast(const std::string str, Type type, int age, const 
std::string &bool_expr)
 {
        bool success = true;
        BoolParser parser;
@@ -280,7 +307,7 @@ bool PackageFilter::AddLast(const std::string str, Type t, 
const std::string &bo
                else
                {
                        //std::cout << "expr = " << expr << std::endl;
-                       success &= AddLastOrHelper(str, t, expr);
+                       success &= AddLastOrHelper(str, type, age, expr);
                }
 
                delete expr;
@@ -289,6 +316,7 @@ bool PackageFilter::AddLast(const std::string str, Type t, 
const std::string &bo
        {
                std::cout << "? column " << err.index + 1
                        << " : ";
+               success = false;
                switch (err.code)
                {
                        case BoolParser::Error::GARBAGE_AT_END:
@@ -299,10 +327,12 @@ bool PackageFilter::AddLast(const std::string str, Type 
t, const std::string &bo
                                break;
                        case BoolParser::Error::STRING_EXPECTED:
                                std::cout << "string expected";
+                               ResultList *element = new ResultList(str, type, 
age);
+                               AddLast(element);
+                               success = true;
                                break;
                }
                std::cout << std::endl;
-               success = false;
        }
        
        if (success)
diff --git a/filter.h b/filter.h
index ad2f79e..967b364 100644
--- a/filter.h
+++ b/filter.h
@@ -39,15 +39,19 @@ public:
 
        typedef enum {
                Unknown = 1,   // The calification for the tag/package is 
unknown
-               Blue,          // Especially remarkable for some reason
-               Green,         // Green light, the tag/package is safe
-               White,         // Normal package, nothing special about it
-               Yellow,        // Yellow light, handle with care
-               Red,           // Green light, the tag/package is definitely 
unsafe
-               Black,         // Mayday, mayday, the tag/package might be 
really dangerous!
+               Recommended,   // The tag/package is recommended
+               Safe,          // Green light, the tag/package is safe
+               Normal,        // Normal package, nothing special about it
+               Warning,       // Yellow light, handle with care
+               Dangerous,     // Red light, the tag/package is definitely 
unsafe
+               Intolerable,   // Mayday, mayday, the tag/package might be 
really dangerous!
+               Highlight,     // Especially remarkable for some reason
                Hidden         // Invisible, hidden, not shown
        } Type;
 
+       static const char *const TypeNames[16];
+       inline static const char * TypeName(int i) { return TypeNames[i]; }
+
        typedef ept::debtags::Tag Tag;
        typedef std::set<Tag> TagSet;
 
@@ -58,9 +62,10 @@ protected:
        class ResultList
        {
                public:
-                       inline ResultList(const std::string str, Type t) {
+                       inline ResultList(const std::string str, Type t, int 
age) {
                                name = str;
                                type = t;
+                               minimal_age = age;
                                next= NULL;
                        }
 
@@ -72,6 +77,7 @@ protected:
 
                        std::string name;
                        Type type;
+                       int minimal_age;
                        FilterTagHandler::Result positive;
                        FilterTagHandler::Result negative;
                        PackageFilter::ResultList *next;
@@ -96,8 +102,8 @@ protected:
        }
 
        bool AddLastAndHelper(ResultList *element, 
boolstuff::BoolExpr<std::string> *expr);
-       bool AddLastOrHelper(const std::string str, Type t, 
boolstuff::BoolExpr<std::string> *expr);
-       bool AddLast(const std::string str, Type t, const std::string 
&bool_expr);
+       bool AddLastOrHelper(const std::string str, Type type, int age, 
boolstuff::BoolExpr<std::string> *expr);
+       bool AddLast(const std::string str, Type type, int age, const 
std::string &bool_expr);
 
        inline void AddLast(PackageFilter::ResultList *new_list) {
                if (!list) { list = new_list; }
@@ -117,7 +123,8 @@ protected:
                inline void Print(std::ostream &out) const {
                        PackageFilter::ResultList *item = list;
                        while (item) {
-                               out << item->name << ": " << std::endl;
+                               out << item->name << ": CLASS=" << 
PackageFilter::TypeName(item->type) << " (" << item->type
+                                       << "), AGE=" << item->minimal_age << 
std::endl;
                                out << " +: ";
                                tagdata.Print(out, &item->positive);
                                out << " -: ";
diff --git a/fltk/pkgbrowser.cpp b/fltk/pkgbrowser.cpp
index 83f1912..7070628 100644
--- a/fltk/pkgbrowser.cpp
+++ b/fltk/pkgbrowser.cpp
@@ -244,19 +244,21 @@ void PackageBrowser::item_select(void *p, int s)
 
                                switch (pkgdata.GetPackageFilter().TagValue(*i))
                                {
-                                       case PackageFilter::Blue:
-                                               fr = FL_BLACK; bk = FL_BLUE; 
break;
-                                       case PackageFilter::Green:
-                                               fr = FL_BLACK; bk = FL_GREEN; 
break;
-                                       case PackageFilter::Yellow:
-                                               fr = FL_BLACK; bk = FL_YELLOW; 
break;
-                                       case PackageFilter::Red:
-                                               fr = FL_WHITE; bk = FL_RED; 
break;
-                                       case PackageFilter::Black:
-                                               fr = FL_WHITE; bk = FL_BLACK; 
break;
                                        case PackageFilter::Hidden:
-                                               fr = FL_CYAN; bk = FL_BLACK; 
break;
-                                       case PackageFilter::White:
+                                               fr = FL_CYAN; bk = FL_WHITE; 
break;
+                                       case PackageFilter::Highlight:
+                                               fr = FL_WHITE; bk = 
FL_DARK_MAGENTA; break;
+                                       case PackageFilter::Intolerable:
+                                               fr = FL_WHITE; bk = FL_BLACK; 
break;
+                                       case PackageFilter::Dangerous:
+                                               fr = FL_WHITE; bk = FL_RED; 
break;
+                                       case PackageFilter::Warning:
+                                               fr = FL_BLACK; bk = FL_YELLOW; 
break;
+                                       case PackageFilter::Safe:
+                                               fr = FL_BLACK; bk = FL_GREEN; 
break;
+                                       case PackageFilter::Recommended:
+                                               fr = FL_BLACK; bk = FL_BLUE; 
break;
+                                       case PackageFilter::Normal:
                                        default:
                                                fr = FL_BLACK; bk = FL_WHITE; 
break;
                                }
diff --git a/gui_cli.cpp b/gui_cli.cpp
index b0dd3da..2b75bf9 100644
--- a/gui_cli.cpp
+++ b/gui_cli.cpp
@@ -175,14 +175,6 @@ static bool Go(PackageData &pkgdata)
                                                set<Tag> tags = 
pkgdata.debtags().getTagsOfItem((const char *)rec.package().c_str());
                                        switch 
(pkgdata.GetPackageFilter().TagsValue(tags))
                                        {
-                                               case PackageFilter::Green:
-                                                       break;
-                                               case PackageFilter::Yellow:
-                                                       break;
-                                               case PackageFilter::Red:
-                                                       break;
-                                               case PackageFilter::Black:
-                                                       break;
                                                default:
                                                        break;
                                        }
diff --git a/gui_fltk.cpp b/gui_fltk.cpp
index 4085498..36dc006 100644
--- a/gui_fltk.cpp
+++ b/gui_fltk.cpp
@@ -126,19 +126,23 @@ static void UpdateUILists(GamesUI& ui)
                PackageData::TagSet tags = 
pkgdata.debtags().getTagsOfItem((const char *)rec.package().c_str());
                switch (pkgdata.GetPackageFilter().TagsValue(tags))
                {
-                       case PackageFilter::Blue:
-                               fr = FL_BLACK; bk = FL_BLUE; break;
-                       case PackageFilter::Green:
-                               fr = FL_BLACK; bk = FL_GREEN; break;
-                       case PackageFilter::Yellow:
-                               fr = FL_BLACK; bk = FL_YELLOW; break;
-                       case PackageFilter::Red:
-                               fr = FL_WHITE; bk = FL_RED; break;
-                       case PackageFilter::Black:
-                               fr = FL_WHITE; bk = FL_BLACK; break;
                        case PackageFilter::Hidden:
-                               showPkg = false; break;
-                       case PackageFilter::White:
+                               fr = FL_CYAN; bk = FL_WHITE;
+                               showPkg = false;
+                               break;
+                       case PackageFilter::Highlight:
+                               fr = FL_WHITE; bk = FL_DARK_MAGENTA; break;
+                       case PackageFilter::Intolerable:
+                               fr = FL_WHITE; bk = FL_BLACK; break;
+                       case PackageFilter::Dangerous:
+                               fr = FL_WHITE; bk = FL_RED; break;
+                       case PackageFilter::Warning:
+                               fr = FL_BLACK; bk = FL_YELLOW; break;
+                       case PackageFilter::Safe:
+                               fr = FL_BLACK; bk = FL_GREEN; break;
+                       case PackageFilter::Recommended:
+                               fr = FL_BLACK; bk = FL_BLUE; break;
+                       case PackageFilter::Normal:
                        default:
                                fr = FL_BLACK; bk = FL_WHITE; break;
                }
diff --git a/vocabulary.openrating b/vocabulary.openrating
new file mode 100644
index 0000000..6180068
--- /dev/null
+++ b/vocabulary.openrating
@@ -0,0 +1,438 @@
+Facet: violence
+Description: violence contents
+ No kind of violence appears in any part of the program. The package
+ does not contain any violence, nor does any kind of reference or
+ apology of violence. It does not refer to violence as a possible way of
+ solving conflicts and no kind of fight or usage of weapons appear.
+ 
+Facet: sex
+Description: sexual contents
+ Reflects whether the package shows any sexual related contents.
+ 
+Facet: social
+Description: social relationship issues
+ Reflects what kind of social relational issues are promoted.
+ 
+Facet: sensory
+Description: sensory issues
+ Sensory issues of any kind: Visual, acustical, etc.
+ 
+Facet: issues
+Description: sensitive issues and themes
+ Issues and themes that might be sensitive for some groups of people.
+ 
+Facet: cognitive
+Description: cognitive skills needed
+ Cognitive skills needed to use the program.
+ 
+Facet: physical
+Description: physical and coordination skills needed
+ Physical and coordination skills needed to use the program.
+ 
+Facet: skills
+Description: skills developed
+ Skills that the game helps to develop.
+ 
+Facet: educational
+Description: educational usage
+ Educational purposes for which the game can be useful.
+ 
+Tag: violence::none
+Description: no violence
+ No kind of violence appears in any part of the program. The package
+ does not contain any violence, nor does any kind of reference or
+ apology of violence. It does not refer to violence as a possible way of
+ solving conflicts and no kind of fight or usage of weapons appear.
+ 
+Tag: violence::minor
+Description: minor violence
+ The package includes violence that do not result in bloodshed or
+ death, and the main goal of the game is not to promote violence itself.
+ The violence shown is not especially cruel nor sadistic, and it is not
+ encouraged or promoted. Violence might be a core part of the program,
+ but in a very light kind of way, like platform games in which the
+ character must jump over other characters or shot at them to make them
+ disappear or space invaders type of games.
+ 
+Tag: violence::minor-optional
+Description: optional minor violence
+ The software involves minor violence contents, but they can be
+ removed. The program allows the user to remove the violence of this kind
+ through the program configuration, command line switches or similar
+ means, without hurting functionality or gameplay severely.
+ 
+Tag: violence::non-realistic
+Description: non-realistic violence
+ Non-realistic characters are shown commiting acts of violence that
+ might result in bloodshed or death. Violence itself might be the goal of
+ the game, or take an important part in it
+ 
+Tag: violence::non-realistic-optional
+Description: optional non-realistic violence
+ Non-realistic characters commiting acts of violence, but it can be
+ removed. The program allows the user to remove the violence of this kind
+ through the program configuration, command line switches or similar
+ means, without hurting functionality or gameplay severely.
+ 
+Tag: violence::realistic
+Description: realistic violence
+ Realistic characters are shown committing acts of violence that might
+ result in bloodshed or death. Violence is a core part of the program.
+ The characters might be shown or not, but the program shows the
+ violence in a way that is felt as real.
+ 
+Tag: violence::realistic-optional
+Description: optional realistic violence
+ Realistic characters committing acts of violence, but it can be
+ removed. The program allows the user to remove the violence of this kind
+ through the program configuration, command line switches or similar
+ means, without hurting functionality or gameplay severely.
+ 
+Tag: violence::against-objects
+Description: violence against objects
+ Violence is directed non-living things.
+ 
+Tag: violence::against-animals
+Description: violence against animals
+ Violence is directed towards animals or non-rational living species.
+ 
+Tag: violence::against-humans
+Description: violence against human-like species
+ Violence is directed towards rational or human-like species.
+ 
+Tag: violence::against-players
+Description: violence against players
+ Violence is used against other players.
+ 
+Tag: violence::against-players-optional
+Description: optional violence against players
+ 
+ 
+Tag: sex::none
+Description: no sex
+ No sexual contents of any kind appear in the game.
+ 
+Tag: sex::innuendo
+Description: no sexual contents, but they're suggested
+ No sexual contents appear directly in the game, but they're suggested.
+ 
+Tag: sex::nudity
+Description: nudity
+ Graphical depictions of nudity.
+ 
+Tag: sex::nudity-optional
+Description: optional nudity
+ Graphical depictions of nudity, but they can be removed through the
+ program configuration, command line switches or similar means, without
+ hurting functionality or gameplay severely.
+ 
+Tag: sex::non-realistic
+Description: non-realistic sexual contents
+ Non-realistic depictions of sexual activity.
+ 
+Tag: sex::non-realistic-optional
+Description: optional non-realistic sexual contents
+ Non-realistic depictions of sexual activity, but they can be removed
+ through the program configuration, command line switches or similar
+ means, without hurting functionality or gameplay severely.
+ 
+Tag: sex::realistic
+Description: realistic sexual contents
+ Realistic depictions of sexual activity without violence of sexual
+ nature.
+ 
+Tag: sex::realistic-optional
+Description: optional realistic sexual contents
+ Realil charge implied.
+ 
+Tag: sex::violent
+Description: violent sexual contents
+ Violence of a sexual nature or references to it.
+ 
+Tag: sex::violent-optional
+Description: optional violent sexual contents
+ Violence of a sexual nature or references to it, but it can be
+ removed through the program configuration, command line switches or similar
+ means, without hurting functionality or gameplay severely.
+ 
+Tag: issues::breaks-social-values
+Description: breaks social values
+ The software breaks commonly accepted social values. Transgression is
+ violently breaking commonly accepted social values, like advocating
+ crime, encouraging murder and so forth. The program might reward acts
+ of violence, especially against humans (as opposed to monsters),
+ innocents and not in self-defence, or even immoral acts might be mandatory.
+ 
+Tag: issues::genocide
+Description: genocide
+ Deliberate and systematic destruction of a racial, political, or
+ cultural group.
+ 
+Tag: issues::gambling
+Description: gambling
+ Promotes gambling, or gambling is a core element.
+ 
+Tag: issues::religion
+Description: religion, sacred matters or religious institutions
+ Religious matters play a core and major part in the program. The
+ goals or main usage of the program involves taking into account the
+ supernatural, sacred or divine, or the moral codes, practices and
+ institutions associated with some religious belief.
+ 
+Tag: issues::politics
+Description: politics
+ Political matters play a core and major part in the program.
+ 
+Tag: issues::drugs
+Description: drugs
+ Promotes or encourages the usage of other drugs, including tobacco
+ and alcoholic drinks.
+ 
+Tag: issues::unsafe-sex
+Description: unsafe sex
+ Promotes or encourages unsafe sexual acts.
+ 
+Tag: issues::bad-words
+Description: profane language
+ Promotes or encourages the usage of insults, crude language or bad
+ words. Might include verbal violence, harassing, despective talking,
+ verbal aggressions or verbal violence in general.
+ 
+Tag: issues::discrimination
+Description: discrimination
+ Discrimination or prejudiced based on race, gender, social class,
+ age, or any other reason. Includes the promotion of discrimination,
+ especially the belief that some people are superior to another. It might
+ include the stereotyping of the members of some group, or the belief
+ that genetic or inherited differences produce the inherent superiority or
+ inferiority between people. The program purposedly attacks other
+ people's ideology, sexuality, religious beliefs, tastes or way of life. 
+ 
+Tag: issues::mocks-religion
+Description: mocks about religion
+ The program makes mocks about some religion. Parodying or making a
+ mockery about some religion plays a core and major part in the program.
+ 
+Tag: cognitive::sensorimotor
+Description: sensorimotor cognitive skills needed
+ The software involves the usage of just sensorimotor cognitive
+ skills. Infants are born with a set of congenital reflexes. This stage marks
+ the development of essential spatial abilities and understanding of
+ the world.
+ 
+Tag: cognitive::preconceptual
+Description: preoperational preconceptual cognitive skills needed
+ The software needs the usage of just preoperational preconceptual
+ cognitive skills. This period is marked by egocentric thinking and
+ animistic thought and usually extends between 2-4 years old.
+ 
+Tag: cognitive::intuitive
+Description: preoperational intuitive cognitive skills needed
+ The software involves the usage of just preoperational intuitive
+ cognitive skills. Children start employing mental activities to solve
+ problems and obtain goals but they are unaware of how they came to their
+ conclusions. This period usually extends around 4-7 years old.
+ 
+Tag: cognitive::concrete
+Description: concrete cognitive skills needed
+ The software involves the usage of concrete cognitive skills. This
+ stage occurs between the ages of 7 and 12 years and is characterized by
+ the appropriate use of logic. Important processes during this stage
+ are:
+  * Seriation (the ability to sort objects in an order)
+  * Classification (the ability to name and identify sets of objects)
+  * A child is no longer subject to the illogical limitations of
+    animism (the belief that all objects are alive and therefore have 
feelings).
+  * Decentering (take into account multiple aspects of a problem to
+    solve it)
+  * Reversibility (numbers or objects can be changed, then returned to
+    their original state) 
+  * Conservation (understanding that quantity, length or number of
+    items is unrelated to the arrangement or appearance) 
+  * Elimination of Egocentrism
+ 
+Tag: cognitive::formal
+Description: formal cognitive skills needed
+ The software needs the usage of formal cognitive skills. This stage
+ commences at around 11 years of age (puberty) and continues into
+ adulthood. It is characterized by acquisition of the ability to think
+ abstractly, reason logically and draw conclusions from the information
+ available.
+ 
+Tag: cognitive::time-to-think
+Description: time to think
+ User has unlimited time to think the next move, either because time
+ is not relevant, because it is an unlimited-time turn-based game, or a
+ pause in the game can be triggered without darkening the screen.
+ 
+Tag: cognitive::no-reading
+Description: reading is not needed at all
+ The player does not need to read at all, neither for playing the game
+ nor for learning or getting started to it.
+ 
+Tag: cognitive::minimal-reading
+Description: reading is not needed for playing
+ The game can be played even if the user cannot read. It is possible
+ that reading might be needed for learning how to play, though, and
+ maybe the player might need a helping hand to get started.
+ 
+Tag: physical::locomotor
+Description: locomotor movement skills needed
+ Involves movement of the body from place to place. Physical abilities
+ such as crawling, walking, hopping, jumping, running, leaping,
+ galloping and skipping are examples of this. This type of movement involves
+ gross-motor skills.
+ 
+Tag: physical::non-locomotor
+Description: non-locomotor movement skills needed
+ Involves movement of the body while staying in one place. Physical
+ abilities such as pushing, pulling, twisting, turning, wiggling, sitting
+ and rising are examples of nonlocomotor movement. This type of
+ movement involves balance and coordination skills.
+ 
+Tag: physical::manipulative
+Description: manipulative movement skills needed
+ Involves movement that requires controlled use of the hands or feet.
+ Physical abilities such as grasping, opening and closing hands,
+ waving, throwing and catching are examples of manipulative movement. It
+ involves motor skills and hand-eye coordination. Manipulating a computer
+ keyboard or a joystick are manipulative movements.
+ 
+Tag: physical::low-coordination
+Description: simple physical coordination skills needed
+ The program controls are simple and do not neet any special
+ coordination skills. Only one key must be pressed at once, a single joystick
+ must be used, or very simple movements are needed for interacting with
+ it.
+ 
+Tag: physical::synchronous-coordination
+Description: synchronous coordination skills
+ Different movements must be executed at the same time, but they're
+ not  unrelated. The game is either playable with a single hand, or if
+ both are  needed then.
+ 
+Tag: physical::asynchronous-coordination
+Description: different unrelated movements must be coordinated
+ Different unrelated movements must be executed at the same time. The
+ user must be able to command different movements at the same time to
+ control different aspects of the game, usually with both hands at once.
+ 
+Tag: physical::slow-movements
+Description: slow movement capable
+ Movements can be as slow as needed by the user.
+ 
+Tag: physical::accurate-time
+Description: high time accuracy needed
+ Actions must be executed in the right time with high time accuracy.
+ 
+Tag: physical::accurate-movements
+Description: accurate and precise movements are needed
+ Movements must be quite accurate for being successful.
+ 
+Tag: physical::quick-reflexes
+Description: quick reflexes are needed
+ It is neccesary to have quick reflexes. The program needs a quick
+ reaction to some events for success.
+ 
+Tag: physical::voice
+Description: controlled by voice
+ The program needs talking/singing skills from the user
+ 
+Tag: skills::spatial
+Description: develops spatial vision
+ Useful to develop spatial vision.
+ 
+Tag: skills::coordination
+Description: improves coordination skills
+ Useful for improving hand-eye coordination skills.
+ 
+Tag: skills::logic
+Description: development of logical skills
+ Useful for developing logical skills and deductive reasoning, based
+ on the principles of valid demonstration and inference.
+ 
+Tag: skills::abstraction
+Description: mental development, reasoning and problem-solving
+ Aids in the mental development by encouraging reasoning,
+ problem-solving and abstract thinking. Abstraction is the process or result of
+ generalization by reducing the information content of a concept or an
+ observable phenomenon, typically in order to retain only information
+ which is relevant for a particular purpose.
+ 
+Tag: skills::multitask
+Description: capacity of taking care of different tasks at the same time
+ Useful for developing the capacity of taking care of different tasks
+ at the same time, and managing different events that take place
+ simultaneously.
+ 
+Tag: skills::strategy
+Description: improves analysis, strategy and planning skills
+ Useful for improving analysis, strategy and planning skills, as well
+ as deductive capacity predicting events. Develops problem-solving
+ skills. A Strategy is a long term plan of action designed to achieve a
+ particular goal.
+ 
+Tag: skills::leadership
+Description: improves leadership skills
+ Helps to develop the capacity for setting goals and making decisions
+ on how to achieve them and how to manage the resources available.
+ 
+Tag: skills::responsiveness
+Description: improves quick decision making
+ Useful for developing quick decision making and improving speed in
+ taking decisions.
+ 
+Tag: skills::social
+Description: improves social skills
+ Useful for developing positive social skills such as team play, team
+ building and collaboration and social interaction in general.
+ 
+Tag: skills::creativity
+Description: improves creativity
+ Improves the creative expression and to become problem solvers.
+ Develops the imagination and lateral thinking in a constructive way.
+ Creativity is a mental and social process involving the generation of new
+ ideas or concepts, or new associations of the creative mind between
+ existing ideas or concepts.
+ 
+Tag: skills::rhythm
+Description: improves rhythmic skills
+ Useful to improve skills related to rhythm or measured regularity
+ tasks.
+ 
+Tag: skills::music
+Description: improves music skills
+ Useful to improve the sense of music or musical skills.
+ 
+Tag: educational::languages
+Description: useful for learning languages
+ Useful for learning languages.
+ 
+Tag: educational::technology
+Description: useful for learning technology
+ Useful for learning technology.
+ 
+Tag: educational::geography
+Description: useful for learning geography
+ Useful for learning geography.
+ 
+Tag: educational::history
+Description: useful for learning history
+ Useful for learning history.
+ 
+Tag: educational::science
+Description: useful for learning science
+ Useful for learning science.
+ 
+Tag: educational::social
+Description: useful for learning social matters
+ Useful for learning social and cultural matters.
+ 
+Tag: educational::mathematics
+Description: useful for learning mathematics
+ Useful for learning mathematics.
+ 
+Tag: educational::programming
+Description: useful for learning computer programming
+ Useful for learning computer programming.
+ 

-- 
Development fot GoFind!

_______________________________________________
Pkg-games-commits mailing list
[email protected]
http://lists.alioth.debian.org/mailman/listinfo/pkg-games-commits

Reply via email to