//=========================================================================
// Summary  :
// Filename : MMMissionName.cc
// Author   : Gil Jones
// Project  :
// Revision : 1
// Created  : 2001/11/30
// Modified : 2001/11/30
//=========================================================================
// Description :  Mission Name
//=========================================================================

#include <stdio.h>
#include "MMMissionName.h"

//////////////////////////////////////////////
MMMissionName::MMMissionName(const ModemMessage *pMM)
{
	Assert(pMM);
	Assert(pMM->getType()==tGetMessageType());
	const char* pcEnd = pcRead(pMM->getBuffer());
	Assert(pcEnd==pMM->getBuffer()+pMM->getBufferSize());
}

MMMissionName::MMMissionName(short nameSize, char* name, short m, short jumpNum)
{
    _nameSize = nameSize;
    if(_nameSize != 0) {
	memset(_missionName, 0, _nameSize);
	strncpy(_missionName, name, _nameSize);
    }
    _missionType = m;
    _jumpNum = jumpNum;
    _success = 0;
}

MMMissionName::MMMissionName(short success, short m)
{
    _nameSize = 0;
    memset(_missionName, 0, 128);
    _missionType = m;
    _success = success;
}

MMMissionName::~MMMissionName()
{
    //delete[] _missionName;
}

const char* MMMissionName::pcRead(const char* sourceBuffer)
{
    const char* pcEnd = ::pcRead(sourceBuffer, &_missionType);
    pcEnd = ::pcRead(pcEnd, &_nameSize);
    if(_nameSize != 0) {
	memset(_missionName, 0, _nameSize);
	memcpy(_missionName,pcEnd,_nameSize);
	pcEnd+=_nameSize;
    }
    pcEnd = ::pcRead(pcEnd, &_jumpNum);
    pcEnd = ::pcRead(pcEnd, &_success);
    return pcEnd;
}

char* MMMissionName::pcWrite(char* destBuffer) const
{
    char* pcEnd = ::pcWrite(destBuffer, _missionType);
    pcEnd = ::pcWrite(pcEnd, _nameSize);
    if(_nameSize != 0) {
	memcpy(pcEnd, _missionName,_nameSize);
	pcEnd+=_nameSize;
    }
    pcEnd = ::pcWrite(pcEnd, _jumpNum);
    pcEnd = ::pcWrite(pcEnd, _success);
    return pcEnd;
}

MMJumpBehavior::MMJumpBehavior(const ModemMessage *pMM)
{
	Assert(pMM);
	Assert(pMM->getType()==tGetMessageType());
	const char* pcEnd = pcRead(pMM->getBuffer());
	Assert(pcEnd==pMM->getBuffer()+pMM->getBufferSize());
}

MMJumpBehavior::MMJumpBehavior(short jumpNum) 
{
    setJumpNum(jumpNum);
}

const char* MMJumpBehavior::pcRead(const char* sourceBuffer) 
{
    const char* pcEnd = ::pcRead(sourceBuffer, &_jumpNum);
    return pcEnd;
}

char* MMJumpBehavior::pcWrite(char *destBuffer) const {
    char *pcEnd = ::pcWrite(destBuffer, _jumpNum);
    return pcEnd;
}
	
