#!/usr/bin/env php findUnit("DataPlayer"); assert($u->object instanceof mtgMetaStruct); assert($u->object->getName() == "DataPlayer"); assert($u->object->getTokens() == array('POD' => null, 'table' => 'player', 'pkey' => 'id')); assert(sizeof($u->object->getFields()) == 4); assert($u->object->getFields()["id"]->getType() == "uint32"); assert($u->object->getFields()["version"]->getType() == "string"); assert($u->object->getFields()["version"]->getTokens() == array('strmax' => 16)); assert($u->object->getFields()["gold"]->getType() == "uint8"); assert($u->object->getFields()["gold"]->getTokens() == array('default' => 0)); assert($u->object->getFields()["registered"]->getType() == "bool"); assert($u->object->getFields()["registered"]->getTokens() == array('default' => 'true')); assert(sizeof($u->object->getFuncs()) == 1); assert($u->object->getFuncs()["Equals"]->getTokens() == array('bhl_ret_type' => "bool,bool")); assert(sizeof($u->object->getFuncs()["Equals"]->getArgs()) == 2); assert($u->object->getFuncs()["Equals"]->getArgs()["o"]->getType() == "DataPlayer"); assert($u->object->getFuncs()["Equals"]->getArgs()["v"]->getType() == "uint32"); assert($u->object->getFuncs()["Equals"]->getReturnType() instanceof mtgMultiType); assert($u->object->getFuncs()["Equals"]->getReturnType()->getValues()[0] == "bool"); assert($u->object->getFuncs()["Equals"]->getReturnType()->getValues()[1] == "bool"); $u = $meta->findUnit("GetPlayer"); assert($u->object instanceof mtgMetaFunc); assert($u->object->getName() == "GetPlayer"); assert($u->object->getReturnType() == "DataPlayer"); assert(sizeof($u->object->getArgs()) == 1); assert($u->object->getArgs()["id"]->getName() == "id"); assert($u->object->getArgs()["id"]->getType() == "uint32"); $u = $meta->findUnit("Apply"); assert($u->object instanceof mtgMetaFunc); assert($u->object->getName() == "Apply"); assert($u->object->getReturnType() === null); assert($u->object->getArgs()["fn"]->getName() == "fn"); assert($u->object->getArgs()["fn"]->getType() == "func (float,DataPlayer):uint32"); $u = $meta->findUnit("ProtoBase"); assert($u->object instanceof mtgMetaStruct); assert(sizeof($u->object->getFields()) == 2); assert($u->object->getFields()["id"]->getType() == "uint32"); assert($u->object->getFields()["title"]->getType() == "string"); assert($u->object->getFields()["title"]->getTokens() == array('strmax' => 16, 'default' => "\"`'Hello\"")); $u = $meta->findUnit("ProtoBuilding"); assert($u->object instanceof mtgMetaStruct); assert($u->object->getParent() == "ProtoBase"); $u = $meta->findUnit("ProtoTags"); assert($u->object instanceof mtgMetaStruct); assert(sizeof($u->object->getFields()) == 2); assert($u->object->getFields()["children"]->getType() instanceof mtgArrType); assert($u->object->getFields()["children"]->getType() == "ProtoBase[]"); assert($u->object->getFields()["tags"]->getType() == "string[]"); //NOTE: RPCs are identified by ids $u = $meta->findUnit("10"); assert($u->object instanceof mtgMetaRPC); assert($u->object->getName() == "RPC_GET_ALL_PROTO"); assert($u->object->getNumericCode() == 10); assert(sizeof($u->object->getReq()->getFields()) == 1); assert($u->object->getReq()->getFields()["ticket"]->getType() == "string"); assert(sizeof($u->object->getRsp()->getFields()) == 1); assert($u->object->getRsp()->getFields()["list"]->getType() == "ProtoBase[]"); $u = $meta->findUnit("EnumStock"); assert($u->object instanceof mtgMetaEnum); assert($u->object->getValues() == array('GOLD' => 108683766, 'XP' => 90110385)); $u = $meta->findUnit("ConfStock"); assert($u->object instanceof mtgMetaStruct); assert(sizeof($u->object->getFields()) == 1); assert($u->object->getFields()["id"]->getType() == "EnumStock"); mtg_run(new mtgCsGenerator(), array( "meta" => $meta, "out-dir" => __DIR__ . "/autogen", "bundle" => __DIR__ . "/autogen/bundle.cs" )); mtg_run(new mtgGoGenerator(), array( "meta" => $meta, "out-dir" => __DIR__ . "/autogen", "bundle" => __DIR__ . "/autogen/bundle.go" )); mtg_run(new mtgPHPGenerator(), array( "meta" => $meta, "out-dir" => __DIR__ . "/autogen", "inc-dir" => __DIR__ . "/autogen", "bundle" => __DIR__ . "/autogen/bundle.inc.php" )); //TODO: было бы хорошо реализовать //require_once(__DIR__ . '/../../gme/src/utils.inc.php'); //require_once(__DIR__ . '/autogen/bundle.inc.php'); // //$man = new ProtoMan(); //assert(count($man->right_hands) == 1); //assert($man->right_hands[0]->skill == 100); //assert($man->right_hands[0]->fingers == 1); //assert($man->right_hands[0]->fingers2 == 77);