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

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

?? tintinparse.cpp

?? Windows上的MUD客戶端程序
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
/*----------------------------------------------------------------------------
                        _                              _ _       
        /\             | |                            | (_)      
       /  \   _ __   __| |_ __ ___  _ __ ___   ___  __| |_  __ _ 
      / /\ \ | '_ \ / _` | '__/ _ \| '_ ` _ \ / _ \/ _` | |/ _` |
     / ____ \| | | | (_| | | | (_) | | | | | |  __/ (_| | | (_| |
    /_/    \_\_| |_|\__,_|_|  \___/|_| |_| |_|\___|\__,_|_|\__,_|

    The contents of this file are subject to the Andromedia Public
	License Version 1.0 (the "License"); you may not use this file
	except in compliance with the License. You may obtain a copy of
	the License at http://www.andromedia.com/APL/

    Software distributed under the License is distributed on an
	"AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
	implied. See the License for the specific language governing
	rights and limitations under the License.

    The Original Code is Pueblo client code, released November 4, 1998.

    The Initial Developer of the Original Code is Andromedia Incorporated.
	Portions created by Andromedia are Copyright (C) 1998 Andromedia
	Incorporated.  All Rights Reserved.

	Andromedia Incorporated                         415.365.6700
	818 Mission Street - 2nd Floor                  415.365.6701 fax
	San Francisco, CA 94103

    Contributor(s):
	--------------------------------------------------------------------------
	   Chaco team:  Dan Greening, Glenn Crocker, Jim Doubek,
	                Coyote Lussier, Pritham Shetty.

					Wrote and designed original codebase.

------------------------------------------------------------------------------

	TinTin class main & parsing methods.  Originally modified from TinTin++,
	(T)he K(I)cki(N) (T)ickin D(I)kumud Clie(N)t, originally coded by
	Peter Unold 1992.

----------------------------------------------------------------------------*/

// $Header: /home/cvs/chaco/modules/client/msw/ChWorld/TinTinParse.cpp,v 2.32 1996/09/12 19:10:20 pritham Exp $

#include "headers.h"
#if !defined(CH_PUEBLO_PLUGIN)
#include "resource.h"
#else
#include "vwrres.h"
#endif

#include <ChCore.h>

#include "TinTin.h"
#include "World.h"


/*----------------------------------------------------------------------------
	TinTin protected methods
----------------------------------------------------------------------------*/

/*----------------------------------------------------------------------------
	TinTin::ParseInput
				Checks for TinTin commands and aliases.
----------------------------------------------------------------------------*/

void TinTin::ParseInput( const string& strInput )
{
	string			strWorking( strInput );
	const char*		pstrTemp;
	const char*		pstrStart;
	const char*		pstrWorking = strWorking;
	TinTinListNode*	pNode;
	string			strCommand;
	const char*		pstrCommand;
	string			strArgs;

	if (++m_iRecurseLevel > MAX_RECURSE)
	{
		string		strMessage;

		LOADSTRING( IDS_TINTIN_RECURSE_ERR, strMessage );
		ErrMessage( strMessage );
	}
	else if (strWorking.IsEmpty())
	{										// Empty line
		Send( strWorking );
	}
	else
	{
		pstrTemp = GetArgStopAtSpaces( strWorking, strCommand );
		pstrStart = strCommand;

		if ((*pstrStart == GetTinTinChar()) &&
				IsAbrev( pstrStart + 1, "verbatim" ))
		{
											// Toggle verbatim status

			pstrTemp = GetArgInBraces( pstrTemp, strArgs, true );

			ToggleVerbatim( strArgs );
		}
		else if (IsVerbatim())
		{
			Send( strWorking );
		}
		else if (*pstrWorking == GetVerbatimChar())
		{									/* Line starts with verbatim
												escape, so send it 'as is'
												to the world */
			strWorking = ++pstrWorking;
			Send( strWorking );
		}
		else
		{
			SubstituteMyVars( strWorking, strWorking );

			pstrWorking = strWorking;
			while (*pstrWorking)
			{
				if (*pstrWorking == ';')
				{
					pstrWorking++;
				}

				pstrWorking = GetArgStopAtSpaces( pstrWorking, strCommand );
				pstrWorking = GetArgAll( pstrWorking, strArgs );

				pstrCommand = strCommand;

				if (*pstrCommand == GetTinTinChar())
				{
					ParseTinTinCommand( pstrCommand + 1, strArgs );
				}
				else if (pNode = GetListAliases()->SearchBegin( strCommand ))
				{
											// Alias found
					int			iLoop;
					const char*	pstrBeginArg;
					const char*	pstrEndArg;
					char		cEnd;
					string		strNewCommand;
											// Strip out the arguments
					m_strVars[0] = strArgs;
					for (iLoop = 1, pstrBeginArg = strArgs; iLoop < 10; iLoop++)
					{
						string		strTemp;
											// Find the beginning of the arg

						while (*pstrBeginArg == ' ')
						{
							pstrBeginArg++;
						}
											// Find the end of the argument

						cEnd = (*pstrBeginArg == '{') ? '}' : ' ';
						pstrBeginArg = (*pstrBeginArg == '{') ?
											pstrBeginArg + 1 : pstrBeginArg;
						for (pstrEndArg = pstrBeginArg;
								*pstrEndArg && (*pstrEndArg != cEnd); pstrEndArg++)
							;
											// Chop out the argument
						strTemp = pstrBeginArg;
						m_strVars[iLoop] = strTemp.Left( pstrEndArg - pstrBeginArg );

											// Move to the next argument

						pstrBeginArg = (*pstrEndArg) ? pstrEndArg + 1 : pstrEndArg;
					}

					PrepareActionAlias( pNode->GetRight(), strNewCommand );

					if(!strcmp( pNode->GetRight(), strNewCommand ) &&
						!strArgs.IsEmpty())
					{						// Append arguments
						strNewCommand += " ";
						strNewCommand += strArgs;
					}

					ParseInput( strNewCommand );
				}
				else if (IsSpeedwalk() && strArgs.IsEmpty() &&
							IsSpeedwalkDirective( strCommand ))
				{
					DoSpeedwalk( strCommand );
				}
				else
				{
					GetArgWithSpaces( strArgs, strArgs );
					Send( strCommand, strArgs );
				}
			}
		}
	}

	m_iRecurseLevel--;
}


void TinTin::Send( const string& strCmd )
{
	CheckInsertPath( strCmd );
	SendToWorld( strCmd );
}


void TinTin::Send( const string& strCmd, const string& strArgs )
{
	string	strTemp( strCmd );

	if (!strArgs.IsEmpty())
	{
		strTemp += ' ' + strArgs;
	}

	Send( strTemp );
}


/*----------------------------------------------------------------------------
	TinTin::ParseTinTinCommand
				Parses and processes most of the TinTin commands.
----------------------------------------------------------------------------*/

void TinTin::ParseTinTinCommand( const string& strCommand, string& strArgs )
{
	const char*			pstrCommand = strCommand;

	if (isdigit( *pstrCommand ))
	{
		int		iCount = atoi( pstrCommand );

		if (iCount > 0)
		{
			GetArgInBraces( strArgs, strArgs );

			while (iCount-- > 0)
			{								// Recurse to process the strCommand
				ParseInput( strArgs );
			}
		}
		else
		{
			ErrMessage( "# Yeah right!  Go repeat that yourself dude." );
		}
	}
	else
	{
		bool		boolProcessed = true;
		TTCommand	cmd;

		cmd = ParseTinTinCmd( strCommand );

		switch( cmd )
		{
			case ttAction:
			{
				DoAction( strArgs );
				break;
			}

			case ttAlert:
			{
				DoAlert();
				break;
			}

			case ttAlias:
			{
				DoAlias( strArgs );
				break;
			}

			case ttAll:
			{
				DoAll( strArgs );
				break;
			}

			case ttBell:
			{
				DoBell();
				break;
			}

			case ttChar:
			{
				DoChar( strArgs );
				break;
			}

			case ttCr:
			{
				DoCR();
				break;
			}

			case ttEcho:
			{
				ToggleEcho();
				break;
			}

			case ttEnd:
			{
				DoEnd( strCommand );
				break;
			}

			case ttGag:
			{
				if (strArgs[0] != DEF_OPEN)
				{
					string		strTemp( strArgs );

					strArgs = DEF_OPEN + strTemp + DEF_CLOSE;
				}
				
				strArgs += " .";

				DoSubstitute( strArgs );
				break;
			}

			case ttHelp:
			{
				DoHelp( strArgs );
				break;
			}

			case ttIf:
			{
				DoIf( strArgs );
				break;
			}

			case ttIgnore:
			{
				ToggleIgnore();
				break;
			}

			case ttInfo:
			{
				DoInfo();
				break;
			}

			case ttKillall:
			{
				DoKillAll( false );
				break;
			}

			case ttLog:
			{
				DoLog( strArgs );
				break;
			}

			case ttLoop:
			{
				DoLoop( strArgs );
				break;
			}

			case ttMap:
			{
				DoMap( strArgs );
				break;
			}

			case ttMark:
			{
				DoMark();
				break;
			}

			case ttMath:
			{
				DoMath( strArgs );
				break;
			}

			case ttMbox:
			{
				DoMbox( strArgs );
				break;
			}

			case ttMessage:
			{
				DoMessage( strArgs );
				break;
			}

			case ttName:
			{
				DoName( strArgs );
				break;
			}

			case ttNop:
			{
				break;
			}

			case ttPath:
			{
				DoPath();
				break;
			}

			case ttPathdir:
			{
				DoPathdir( strArgs );
				break;
			}

			case ttPlaySound:
			{
				DoPlaySound( strArgs );
				break;
			}

			case ttRandom:
			{
				DoRandom( strArgs );
				break;
			}

			case ttRead:
			{
				DoRead( strArgs, true );
				break;
			}

			case ttReturn:
			{
				DoReturn();
				break;
			}

			case ttSavepath:
			{
				DoSavepath( strArgs );
				break;
			}

			case ttSession:
			{
				DoSession( strArgs );
				break;
			}

			case ttShowme:
			{
				DoShowMe( strArgs );
				break;
			}

			case ttSpeedwalk:
			{
				ToggleSpeedwalk();
				break;
			}

			case ttSplit:
			{
				DoSplit( strArgs );
				break;
			}

			case ttSubstitute:
			{
				DoSubstitute( strArgs );
				break;
			}

			case ttTextin:
			{
				DoRead( strArgs, true );
				break;
			}

			case ttTick:
			{
				DoTick();
				break;
			}

			case ttTickkey:
			{
				DoTickKey( strArgs );
				break;
			}

			case ttTickoff:
			{
				DoTickOff();
				break;
			}

			case ttTickon:
			{
				DoTickOn();
				break;
			}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久国产精麻豆99网站| 国产成a人亚洲| 国产精品99久久久久久久女警 | 国产91丝袜在线观看| 日韩一区二区三区四区五区六区| 国产香蕉久久精品综合网| ...中文天堂在线一区| 麻豆成人在线观看| 一本到三区不卡视频| 久久五月婷婷丁香社区| 亚洲第一激情av| 91女人视频在线观看| 久久精品在这里| 麻豆91在线看| 欧美日韩视频在线一区二区| 国产精品国模大尺度视频| 韩国精品主播一区二区在线观看 | 欧美三级资源在线| 天堂在线一区二区| 自拍偷在线精品自拍偷无码专区| 肉色丝袜一区二区| 91麻豆成人久久精品二区三区| 国产欧美综合色| 精品一区二区在线免费观看| 91精品中文字幕一区二区三区| 亚洲欧美电影一区二区| 99精品视频一区| 最新国产成人在线观看| 国产成人在线视频免费播放| 精品国产精品网麻豆系列| 青青草精品视频| 欧美精品久久一区二区三区| 日日夜夜免费精品视频| 欧美日韩第一区日日骚| 亚洲国产精品视频| 欧美人妇做爰xxxⅹ性高电影| 一区二区三区四区高清精品免费观看| 另类中文字幕网| 在线成人av影院| 亚洲va国产天堂va久久en| 欧美中文字幕一区| 视频一区二区中文字幕| 91精品在线观看入口| 免费三级欧美电影| 久久综合色一综合色88| 国产91精品露脸国语对白| 国产精品三级久久久久三级| 一本大道久久a久久综合| 亚洲精品高清视频在线观看| 欧洲生活片亚洲生活在线观看| 亚洲成在人线在线播放| 欧美一区二区三区白人| 国产在线视频一区二区三区| 国产精品萝li| 在线观看欧美精品| 久热成人在线视频| 欧美国产综合一区二区| 97精品超碰一区二区三区| 亚洲一区二区三区视频在线| 日韩欧美国产精品一区| 国产盗摄女厕一区二区三区| 亚洲美女在线一区| 这里只有精品99re| 国产精品456| 亚洲乱码国产乱码精品精的特点 | 色综合久久88色综合天天| 亚洲品质自拍视频网站| 欧美丰满嫩嫩电影| 国产成人在线色| 亚洲欧美激情插| 日韩免费高清视频| 91麻豆成人久久精品二区三区| 日日夜夜免费精品视频| 国产精品无圣光一区二区| 欧美三级电影网| 国产v综合v亚洲欧| 亚洲h精品动漫在线观看| 久久婷婷久久一区二区三区| 色乱码一区二区三区88| 国产精品2024| 亚洲国产日韩a在线播放性色| 国产亚洲欧美在线| 欧美男生操女生| 99麻豆久久久国产精品免费| 日韩电影在线免费观看| 99久久精品国产网站| 国产成人在线视频网址| 亚洲高清视频中文字幕| 久久亚洲精品国产精品紫薇| 在线精品视频免费播放| 国产成人午夜精品5599| 亚洲成av人在线观看| 国产精品卡一卡二卡三| 91精品国产品国语在线不卡| 99这里只有久久精品视频| 久久激情五月激情| 日韩av中文字幕一区二区三区 | 奇米影视一区二区三区小说| 亚洲欧美一区二区久久| 国产亚洲精品福利| 久久亚洲影视婷婷| 日韩午夜激情视频| 欧美精品一级二级三级| 欧美亚洲动漫另类| 色av成人天堂桃色av| 91视频观看视频| 国产成都精品91一区二区三| 免费高清视频精品| 香蕉成人啪国产精品视频综合网| 亚洲欧美电影院| 中文字幕视频一区| 最新日韩av在线| 中文字幕视频一区二区三区久| 国产精品久久综合| 国产精品国产三级国产普通话三级| 久久久久久免费网| 国产色产综合色产在线视频 | 美女免费视频一区二区| 亚洲国产日韩综合久久精品| 亚洲一区成人在线| 午夜精品一区二区三区电影天堂| 亚洲综合免费观看高清完整版在线| 日韩美女久久久| 亚洲美女视频在线| 亚洲午夜在线电影| 视频一区二区三区入口| 蜜臀久久99精品久久久久久9 | 欧美乱熟臀69xxxxxx| 欧美精品123区| 日韩精品中文字幕在线一区| 欧美一级久久久久久久大片| 日韩一区二区在线看| 欧美一级淫片007| 欧美精品一区二区精品网| 国产三级欧美三级| 国产精品国产三级国产a| 亚洲精品欧美综合四区| 亚洲大片一区二区三区| 日本午夜精品视频在线观看| 国产制服丝袜一区| jizz一区二区| 欧美色区777第一页| 日韩欧美国产小视频| 日本一区二区三区电影| 亚洲国产精品欧美一二99| 老司机精品视频一区二区三区| 国产乱子伦视频一区二区三区| av资源站一区| 欧美日韩午夜精品| 国产色产综合色产在线视频| 亚洲免费观看高清| 老司机免费视频一区二区| 成人精品一区二区三区中文字幕| 欧美视频一二三区| 久久精品视频在线看| 久久99精品国产麻豆婷婷洗澡| 日本在线不卡视频| 懂色av中文字幕一区二区三区| 国产婷婷色一区二区三区| 亚洲人成网站色在线观看| 奇米一区二区三区av| 国产91丝袜在线播放| 欧美男同性恋视频网站| 欧美韩国一区二区| 欧美aaaaaa午夜精品| 99国产精品久久久久久久久久 | 欧美色老头old∨ideo| 26uuu色噜噜精品一区| 亚洲午夜在线视频| 99久久精品国产导航| 精品国产一区二区三区不卡| 亚洲无人区一区| av一二三不卡影片| 26uuu欧美| 日韩精品一二三区| 欧美性色黄大片| 综合欧美亚洲日本| 国产一区二区三区日韩| 欧美丰满一区二区免费视频 | 日韩女优制服丝袜电影| 亚洲综合色视频| 成人18精品视频| 久久久精品国产免大香伊| 麻豆国产欧美一区二区三区| 欧美无乱码久久久免费午夜一区 | 欧美日韩精品一区二区天天拍小说 | 成人涩涩免费视频| 欧美电影免费观看高清完整版在| 亚洲在线免费播放| 色一区在线观看| 国产精品剧情在线亚洲| 国产成人亚洲综合色影视| 精品三级av在线| 日本女人一区二区三区| 欧美年轻男男videosbes| 午夜视频久久久久久| 欧美日韩小视频| 午夜一区二区三区在线观看| 欧美在线你懂得| 亚洲一区日韩精品中文字幕|