亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? offclient.cpp

?? 2002年
?? CPP
字號:
//#ifdef _OffClient
/* -*- Off Client -*-
 * Custom initialization and destruction
 *	Only one thread is created to both parse server info and do decision-making.
 *  To capture the desired cycle in ExecuteAI.
 */

#include "client.h"
#include "stopwatch.h"
#include "log.h"
#include "worldmodel.h"
#include <fstream>
#include "perceptron.h"
#include "skill.h"
#include "agent.h"
#include "utils.h"
#include "netif.h"

using namespace World;

#ifndef WIN32
#include <time.h>
#include <pthread.h>
#include <iostream>
#endif

#ifdef WIN32
	#include <process.h>
	HANDLE sigoffclient = NULL;
#else // _LINUX
	pthread_t sigoffclient;	
#endif



FILE *fp_mat = NULL;		

#ifdef WIN32
unsigned int WINAPI OffProcWindows(LPVOID lpParameter);
#endif

void * OffProc(void *);

void ExecuteAI();
void Assitant(char* buf);
int Readline(char* &buf);

/*This function is called in the same order with behave() in normal client mode.
*/
void ExecuteAI(){	
	Agent::behave();
}


void Assistant(char* buf){
	int type;
	int  subtype, time;
	float x,y, power;
	UniformTime ut;
	TIME_T tt;
	
	int width, quality;

	type = get_int(&buf);

	switch(type){
	case Ass_Vinfo:
		subtype = get_int(&buf);
		visualsystem.Vinfo_coming = bool(subtype == 1);
		if(visualsystem.Vinfo_coming){
			visualsystem.Vcominginfo_angle = get_float(&buf);
			visualsystem.Vcominginfo_width = get_float(&buf);
		}
		break;
	case Ass_ActEffect:
		subtype = get_int(&buf);
		time = get_int(&buf);
		switch(subtype){
		case CMD_kick:
			x = get_float(&buf); y = get_float(&buf); power = get_float(&buf);
			Skill::action.SetKickEffect(x, y, power,  time);
			break;
		case CMD_dash:
			x = get_float(&buf); y = get_float(&buf); power = get_float(&buf);
			Skill::action.SetDashEffect(x, y, power,  time);
			break;
		case CMD_turn:
			x = get_float(&buf);
			Skill::action.SetTurnEffect(x, time);
			break;
		case CMD_turn_neck:
			x = get_float(&buf);
			Skill::action.SetTurnNeckEffect(x, time);
			break;
		case CMD_change_view:
			Self.NextViewCycle = get_int(&buf);
			sensory.NextViewWidth = VIEWWIDTH(get_int(&buf));
		}
		break;
	case Ass_Chview:

#ifdef WIN32
		sscanf(buf, "%d %I64d %d %d", &subtype, &ut.QuadPart, &width, &quality);
#else // _LINUX
		sscanf(buf, "%d %lld %d %d", &subtype, &ut.QuadPart, &width, &quality);
#endif
		tt = stopwatch.DeFormatTime(ut);
		stopwatch.SetRawData_Event(tt,  subtype);
		if(!situation.ClockStopped){
			float nextsight_time;
			int LatestTime = sensory.LatestTime;
			//note: if no change view, the nextviewwidth is just my current viewwidth.
			nextsight_time = sensory.SightInterval((VIEWWIDTH)width, (VIEWQUALITY)quality) - stopwatch.MsFromEvent(SW_Event_ChangeView, SW_CycleStart, LatestTime);
			
			Self.NextViewCycle=LatestTime + nextsight_time / ServerParam::simulator_step;
		}
		break;
	}
}

void SetWatch(char* buf){
	UniformTime tmp;
#ifdef WIN32
	sscanf(buf,"%I64d", &tmp.QuadPart);
#else //_LINUX
	sscanf(buf,"%lld", &tmp.QuadPart);
#endif
	//set into cache time identified in the following parse
	TIME_T t = stopwatch.DeFormatTime(tmp);
	stopwatch.SetRawData_Cache(t);
}
/*Read a valid line from mat file, return state and valuable buffer point. 
 *
 * Return Value:
 *		-1:fail
 *		LM_Init: init info
 *		LM_Info: Msg received from server
 *		LM_Ctrl: Log when Ctrl proc start to update
 *		buf: point to valuable msg (log label has been stripped)
 */
int Readline(char* &buf){
	while(true){
		if(fgets(StringBuffer::matbuf, MAXMESG, fp_mat) == NULL) 
			return -1;
		//string format "(p%d,t%d)[label] info..."
		buf = StringBuffer::matbuf;
		//advance to '['
		while(*buf != '[' && *buf != 0) buf ++;
		if(*buf != 0) break;
	}
	buf ++;
	//look label
	char* channel_str[] = LM_Channel_Label;
	for(int i=0; i<LM_Num_Channels; i++){
		int len = strlen(channel_str[i]);
		if(!strncmp(buf, channel_str[i], len)){
			buf += len;
			buf ++;
			return LM_Channel(i);
		}
	}
	return -1;
}


#ifdef WIN32
/*Offclient  process	
 *		Simulate Match on the basis of mat file
 */
unsigned int WINAPI OffProcWindows(LPVOID lpParameter){
	OffProc(NULL);
	_endthreadex(0);
	return 0;
}
#endif


extern int NoResponseFromServer;

void * OffProc(void *){
	char* buf;
        int state;
        while(true){
                state = Readline(buf);
                switch(state){
                case LM_Init:
                case LM_Info:
                        sensory.Parse(buf);
                        break;
                case LM_Upd:
                        DoLog(LOG_NONE, "******** Cycle %d **********", sensory.LatestTime);
                        sensory.Update();

                        break;
                case LM_Exec:
                        ExecuteAI();
                        break;
                case LM_Ass:
                        Assistant(buf);
                        break;
                case LM_Watch:
                        SetWatch(buf);
                        break;
                case -1:
#ifdef WIN32
                        PostMessage(hWND, WM_DESTROY, 0, 0);
#else //_LINUX
						pthread_exit(0);
#endif
                        return 0;
                default :
                        break;
                }
        }
}

/* Initialization of OffClient Mode
 *		prepare the mat file, and create thread.
 */
int InitInstance_E(){
	Log::InitLog();
	Network::sock = NULL;

	fp_mat = fopen(ClientParam::matfile, "r");
	if(fp_mat == NULL) return 0;

	char* buf;
//1)read team name from mat file
	if(Readline(buf) != LM_Init) return 0;
	int buflen = strlen(buf);
	buf[buflen-1] = 0; //skip the newline character
	strcpy(MyTeamName, buf);
	MyTeamNameLen = strlen(MyTeamName);

//2)read init infos (including server's and players' param)
	if(Readline(buf) != LM_Init) return 0;
	if(!sensory.Parse_initialize_message(buf)){
		return 0;
	}
	my_error("Connected!");

	Agent::Initialize();

#ifdef WIN32
	sigoffclient = (HANDLE)_beginthreadex(NULL, 0, OffProcWindows, NULL, 0, NULL);
	if(sigoffclient == NULL){
		my_error("create thread off error");
		return false;
	}

	SetThreadPriority(sigoffclient,THREAD_PRIORITY_BELOW_NORMAL);
#else // _LINUX
	pthread_attr_t attr;
	pthread_attr_init(&attr);
	pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
	if (pthread_create(&sigoffclient, &attr, OffProc, NULL) != 0){
                my_error("create thread error");
                return false;    
	}
	
	pthread_join(sigoffclient, NULL);
#endif

	return true;
}

/* Desctruction
 *		Terminate thread and Close mat file.
 */
void destruction_E(){	
#ifdef WIN32
	if(sigoffclient){
		CloseHandle(sigoffclient);
	}
#endif
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91在线视频播放| 国产成人鲁色资源国产91色综 | 一本一道波多野结衣一区二区| 国产成人小视频| 波多野结衣欧美| 99精品久久免费看蜜臀剧情介绍| 国产馆精品极品| 99久久免费精品| 精品视频色一区| 日韩欧美一区二区三区在线| 久久色.com| 中文字幕日韩欧美一区二区三区| 亚洲精品大片www| 日韩精品一卡二卡三卡四卡无卡| 青青国产91久久久久久| 国产精品91xxx| 色久优优欧美色久优优| 欧美日本在线看| 久久免费看少妇高潮| 日韩一区在线看| 日韩中文字幕区一区有砖一区 | 国产精品小仙女| 成人福利电影精品一区二区在线观看| av在线这里只有精品| 在线观看视频一区二区 | 成人做爰69片免费看网站| 91麻豆免费看片| 日韩亚洲欧美综合| 国产精品视频一二三| 亚洲va欧美va国产va天堂影院| 蜜臀av性久久久久蜜臀aⅴ流畅 | 一本久道中文字幕精品亚洲嫩| 欧美色偷偷大香| 国产午夜亚洲精品午夜鲁丝片| 亚洲激情成人在线| 久久成人18免费观看| 99在线视频精品| 欧美一区二区三区男人的天堂| 国产精品久久久久久久久免费桃花 | 一本到高清视频免费精品| 日韩免费看的电影| 亚洲美女免费视频| 国产伦精品一区二区三区视频青涩 | 成人av网站在线观看免费| 欧美日韩你懂的| 亚洲欧美一区二区三区孕妇| 麻豆91小视频| 欧美日韩卡一卡二| 中文字幕一区二区三区四区| 狠狠色狠狠色综合| 717成人午夜免费福利电影| 中文字幕在线不卡一区 | 中文字幕在线不卡一区| 久久99精品网久久| 日韩亚洲欧美在线| 亚洲自拍偷拍综合| 91免费版在线看| 日本一区二区视频在线| 久久精品国产精品亚洲精品| 欧美精品乱人伦久久久久久| 中文字幕日本不卡| 成人高清免费观看| 国产精品网站在线播放| 国产成人精品一区二区三区网站观看 | 最新高清无码专区| av中文字幕亚洲| 中文在线资源观看网站视频免费不卡| 久草精品在线观看| 精品三级av在线| 日韩成人午夜电影| 欧美一区午夜精品| 日韩电影在线免费观看| 欧美精品一卡二卡| 日韩av中文字幕一区二区| 欧美丰满高潮xxxx喷水动漫| 亚洲成人黄色小说| 欧美一区二区黄| 日本欧美大码aⅴ在线播放| 91精品国产色综合久久不卡蜜臀| 天堂久久一区二区三区| 69成人精品免费视频| 美女久久久精品| 久久综合久久99| 成人激情小说网站| 亚洲精品视频免费看| 欧美性生活久久| 丝袜美腿高跟呻吟高潮一区| 91麻豆精品国产自产在线观看一区| 爽好久久久欧美精品| 精品久久久久久久久久久久久久久 | 欧美揉bbbbb揉bbbbb| 美女精品一区二区| 久久久久成人黄色影片| 97精品久久久久中文字幕| 亚洲一区在线观看免费观看电影高清| 欧美色综合天天久久综合精品| 日韩黄色在线观看| 国产婷婷色一区二区三区| 一本色道a无线码一区v| 日本不卡1234视频| 国产欧美日韩在线看| 在线亚洲欧美专区二区| 热久久国产精品| 欧美国产一区二区| 欧美日韩一区二区三区四区| 男女视频一区二区| 中文字幕一区av| 欧美精品日日鲁夜夜添| 成人黄页在线观看| 污片在线观看一区二区| 日本一区二区久久| 91精品国产色综合久久不卡蜜臀| 国产精品系列在线播放| 亚洲国产日产av| 国产亚洲成aⅴ人片在线观看| 欧美日韩综合不卡| 成人视屏免费看| 久久99精品网久久| 亚洲国产精品视频| 国产精品久久久久四虎| 欧美一区二区啪啪| 欧美三级蜜桃2在线观看| 国产电影一区在线| 麻豆国产精品一区二区三区 | 亚洲精品成人a在线观看| 久久综合国产精品| 717成人午夜免费福利电影| 91色乱码一区二区三区| 国内精品自线一区二区三区视频| 亚洲一区二区欧美激情| 国产精品麻豆久久久| 久久精品亚洲一区二区三区浴池| 欧美精品在线观看一区二区| 在线观看欧美日本| av电影在线观看完整版一区二区| 久久国产精品免费| 免费成人av在线| 天堂影院一区二区| 香蕉久久夜色精品国产使用方法 | 丝袜美腿亚洲一区| 亚洲不卡在线观看| 亚洲成av人片| 午夜精品影院在线观看| 伊人婷婷欧美激情| 亚洲黄色av一区| 夜夜精品视频一区二区| 亚洲免费电影在线| 亚洲免费三区一区二区| 亚洲欧洲国产专区| 亚洲九九爱视频| 亚洲乱码国产乱码精品精小说| 亚洲欧洲无码一区二区三区| 国产精品少妇自拍| 亚洲欧洲精品天堂一级| 亚洲乱码国产乱码精品精98午夜 | 国产精品一区在线观看乱码| 国产一本一道久久香蕉| 成人一区二区三区视频在线观看 | 亚洲精品免费视频| 亚洲激情五月婷婷| 日产国产欧美视频一区精品| 麻豆成人久久精品二区三区红| 另类小说色综合网站| 激情成人午夜视频| 国产成人av电影在线播放| 丰满放荡岳乱妇91ww| 9久草视频在线视频精品| 在线看国产一区| 日韩视频一区二区三区 | 国产成人av一区| 99视频热这里只有精品免费| 91久久精品一区二区二区| 欧美在线观看18| 欧美一级搡bbbb搡bbbb| 久久综合精品国产一区二区三区| 国产亚洲一区字幕| 一区二区三区四区高清精品免费观看| 亚洲国产wwwccc36天堂| 免费在线观看精品| 国产91丝袜在线观看| 91官网在线观看| 欧美一级理论片| 亚洲欧美怡红院| 视频一区视频二区在线观看| 国产一区二区看久久| 一本到高清视频免费精品| 欧美一级免费观看| 亚洲视频资源在线| 韩国毛片一区二区三区| 不卡视频免费播放| 日韩亚洲国产中文字幕欧美| 日本一区二区三区国色天香| 亚洲电影你懂得| 成人精品亚洲人成在线| 8x福利精品第一导航| 国产精品沙发午睡系列990531| 日韩高清不卡在线| 色婷婷综合激情| 久久精品亚洲国产奇米99| 亚洲bt欧美bt精品777|