⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tmonitor.c

📁 地球模拟器
💻 C
字号:
/* tmonitor.c   9-9-92 monitor/reporting routines for the Tierra Simulator *//* Tierra Simulator V4.0: Copyright (c) 1991, 1992 Tom Ray & Virtual Life */#ifndef lintstatic char	tmonitor_sccsid[] = "@(#)tmonitor.c	1.5	7/21/92";#endif#include <sys/types.h>#include "license.h"#include "tierra.h"#include "extern.h"#include "tmonitor.h"#include "trequest.h"#include <mlayer.h>/*** These two (TRepBirth, TRepDeath) could really be made one function. ***/void TRepBirth( ulStart, ulLength )  u_long	ulStart;  u_long	ulLength;{  TtOrgEvent		OEV;  MtStatus		iRet;  OEV.event = htonl('b');  OEV.start = htonl(ulStart);  OEV.length = htonl(ulLength);  /* DAN ALGripe( "birth", "%lu x %lu\n", ulStart, ulLength ); */  if (( iRet = MDistributeDataflow( TrtOrgLifeEvent, (pMtOpaque)&OEV,				    sizeof( OEV ) )) != MsOK )    /* ALGripe( "TRepBirth", "MDistDF. error (%d)\n", iRet ); */    { FEError(-1100,NOEXIT,NOWRITE,        "Tierra TRepBirth() MDistDF. error (%d)\n", iRet );}} /* end TRepBirth() */void TRepDeath( ulStart, ulLength )  u_long	ulStart;  u_long	ulLength;{  TtOrgEvent		OEV;  MtStatus		iRet;  OEV.event = htonl('d');  OEV.start = htonl(ulStart);  OEV.length = htonl(ulLength);  /* DAN ALGripe( "death", "%lu x %lu\n", ulStart, ulLength ); */  if (( iRet = MDistributeDataflow( TrtOrgLifeEvent, (pMtOpaque)&OEV,				    sizeof( OEV ) )) != MsOK )    { FEError(-1101,NOEXIT,NOWRITE,          "Tierra TRepDeath() MDistDF. error (%d)\n", iRet );}} /* end TRepDeath() */void TMoveIP( ulStart, ulPosition)  u_long	ulStart;  u_long	ulPosition;{  TtIPEvent		IEV;  MtStatus		iRet;  IEV.event = htonl('m');  IEV.start = htonl(ulStart);  IEV.position = htonl(ulPosition);#ifdef _DBG_   if(Log) {fprintf(tfp_log,"MOVEIP: critter @ %ld ip @ %ld\n",ulStart,		  ulPosition);	    fflush(tfp_log);	}#endif  if (( iRet = MDistributeDataflow( TrtIPEvent, (pMtOpaque)&IEV,				    sizeof( IEV ) )) != MsOK )    { FEError(-1102,NOEXIT,NOWRITE,          "Tierra TMoveIP() MDistDF. error (%d)\n", iRet );}} /* end TMoveIP() */void TMoveD( ulStart, ulFrom, ulTo)  u_long	ulStart;  u_long	ulFrom;  u_long	ulTo;{  TtMVEvent		MEV;  MtStatus		iRet;  MEV.event = htonl('M');  MEV.start = htonl(ulStart);  MEV.from = htonl(ulFrom);  MEV.to = htonl(ulTo);#ifdef _BDG_    if(Log) {fprintf(tfp_log,"MOVED: critter @ %ld from %ld to %ld\n",		   ulStart, ulFrom, ulTo);	    fflush(tfp_log);	}#endif   if (( iRet = MDistributeDataflow( TrtMVEvent, (pMtOpaque)&MEV,				    sizeof( MEV ) )) != MsOK )    { FEError(-1103,NOEXIT,NOWRITE,          "Tierra TMoveD() MDistDF. error (%d)\n", iRet );}} /* end TMoveD() */void TPlan(){  TtPlanEvent		PEV;  MtStatus		iRet;  PEV.m_i_exec = htonl(InstExe.m);  PEV.num_cells = htonl(NumCells);  PEV.num_gen = htonl(NumGenotypes);  PEV.num_sizes = htonl(NumSizes);#ifdef _BDG_    if(Log) {fprintf(tfp_log,"TPLAN: iem %ld nc %ld ng %ld ns %ld\n",           PEV.m_i_exec , PEV.num_cells , PEV.num_gen , PEV.num_sizes );	   fflush(tfp_log);	}#endif  if (( iRet = MDistributeDataflow( TrtPlanEvent, (pMtOpaque)&PEV,				    sizeof( PEV ) )) != MsOK )    { FEError(-1103,NOEXIT,NOWRITE,          "Tierra TPlan() MDistDF. error (%d)\n", iRet );}} /* end TPlan() */void TInitOrgLifeEvents( ucOp, hLink )  u_char	ucOp;  hMtLinkInfo	hLink;{  TtOrgEvent		OEV;  MtStatus		iRet;  I32s			ar,ci;  Pcells		ce;  OEV.event = 'I';  if (( iRet = MGenRequest( hLink, MrDataflowEvent, TrtOrgLifeEvent,			    (pMtOpaque)&OEV, sizeof( OEV )) ) != MsOK )    { sprintf(mes[0], 	     "TInitOrgLifeEvents MGenReq. init begin error (%d)\n", iRet );    FEMessage(1,mes); } for (ar = 0; ar < NumCelAr; ar++) for (ci = 0; ci < CelArSiz; ci++)    {   if (ar == 0 && ci < 2)            continue;        ce = &cells[ar][ci];    if ( ce->ld ) {      if ( ce->mm.s ) {	OEV.event = htonl('b');	OEV.start = htonl(ce->mm.p);	OEV.length = htonl(ce->mm.s);	/* ALGripe( "birth", "%lu x %lu\n", OEV.start, OEV.length ); */	if (( iRet = MGenRequest( hLink, MrDataflowEvent, TrtOrgLifeEvent,				  (pMtOpaque)&OEV, sizeof( OEV ) )) != MsOK )    { sprintf(mes[0], 	      "TInitOrgLifeEvents MGenReq. df error (%d)\n", iRet );    FEMessage(1,mes); }      }      if ( ce->md.s ) {	OEV.event = htonl('b');	OEV.start = htonl(ce->md.p);	OEV.length = htonl(ce->md.s);	/* DAN ALGripe( "birth", "%lu x %lu\n", OEV.start, OEV.length );*/	if (( iRet = MGenRequest( hLink, MrDataflowEvent, TrtOrgLifeEvent,				  (pMtOpaque)&OEV, sizeof( OEV ) )) != MsOK )    { sprintf(mes[0], 	  "TInitOrgLifeEvents MGenReq. df error (%d)\n", iRet );    FEMessage(1,mes); }      }    }  }    OEV.event = htonl('i');  if (( iRet = MGenRequest( hLink, MrDataflowEvent, TrtOrgLifeEvent,			    (pMtOpaque)&OEV, sizeof( OEV )) ) != MsOK )    { sprintf(mes[0],               "TInitOrgLifeEvents MGenReq. init end error (%d)\n", iRet );    FEMessage(1,mes); }} /* end TInitOrgLifeEvents() */void TQueryGeneralStats( ucQ, pData, hLink )  u_char	ucQ;  pMtOpaque	pData;  hMtLinkInfo	hLink;{  TtGenStats		GS;  MtStatus		iRet;  GS.memsize = htonl(SoupSize);  if (( iRet = MGenReply( hLink, ucQ, (pMtOpaque)&GS, sizeof( GS ) )      ) != MsOK )    { sprintf(mes[0],               "TQueryGeneralStats MGenReply error (%d)\n", iRet );    FEMessage(1,mes); }} /* end TGenStatusQuery() */void TQueryOrganism( ucQ, pData, hLink )  u_char	ucQ;  pMtOpaque	pData;  hMtLinkInfo	hLink;{} /* end TQueryOrganism() */void TSimRuncontrol( ucM, pData, hLink )  u_char	ucM;  pMtOpaque	pData;  hMtLinkInfo	hLink;{if ( ucM == TrtPauseSim )    AL_run_flag = 0;  else if ( ucM == TrtResumeSim )    AL_run_flag = 1;  else {    FEError(-1104,NOEXIT,NOWRITE,        "Tierra TSimRuncontrol() unknown operation (%d)", ucM );  }  TPlan();} /* end TSimRuncontrol() *//* ---------------------------------------------------------------------- *//* ---------------------------------------------------------------------- */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -