分析Cocos2d-x横版ACT手游源码 1、公共
直接上代码 不说什么 这一款源码 凝视及多 PublicDef.h 公共头文件
#define NF_PLATFORM 1 //当前版本号(默觉得普通版) //版本号列表
#define NF_PLATFORM_NORMAL 1 //normal
#define NF_PLATFORM_91 2 //91 playform
#define NF_PLATFORM_PP 3 //PP playform
#define NF_PLATFORM_UC_ANDROID 4 //UC playform
#define NF_PLATFORM_360_ANDROID 5 //360 playform
#define NF_PLATFORM_DK_ANDROID 6 //DK playform
#define NF_PLATFORM_MI_ANDROID 7 //MI playform
#define NF_PLATFORM_WDJ_ANDROID 8 //WDJ playform
#define NF_PLATFORM_OPPO_ANDROID 9 //OPPO playform
#define NF_PLATFORM_WYX_ANDROID 10 //WYX playform //静态数据管理
#define _TR_STATIC_DATABASE_FILE_NAME_ "nf_static.db"
std::string GetStaticDataName(); //存储数据管理
#define _NF_SAVE_DATABASE_FILE_NAME_ "nf_save.db"
std::string GetSaveDataName(); #define SCREEN_WIDTH CCDirector::sharedDirector()->getWinSize().width //屏幕宽(指定分辨率)
#define SCREEN_HEIGHT 480 //屏幕高(指定分辨率)
#define SCREEN_CENTER ccp(SCREEN_WIDTH*0.5f,SCREEN_HEIGHT*0.5f) //屏幕中心
#define NAME_LEN 128
#define _NF_ABS(x) ( (x)>=0 ? (x) : -(x) ) //非Win32平台的一些数据类型定义
#if (CC_TARGET_PLATFORM != CC_PLATFORM_WIN32)
typedef unsigned int UINT;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef unsigned char BYTE;
#endif //消息接收
class CMsgReceiver
{
public:
virtual void RecMsg(int nMsgID,void* pInfo,int nSize)
{ }
}; //消息发送
class CMsgSender
{
protected:
CMsgReceiver * m_pReceiver;; public:
void SetMsg(CMsgReceiver * pReceiver)
{
m_pReceiver = pReceiver;
} bool SendMsg(int nMsgID,void* pInfo,int nSize)
{
if (m_pReceiver == NULL)
{
return false;
}
else
{
m_pReceiver->RecMsg(nMsgID,pInfo,nSize);
return true;
}
}
}; //z轴
enum
{
enZOrderBack=100,
enZOrderMid=100000,
enZOrderFront=300000,
}; //玩家控制的角色
enum
{
enTagProtagonist,
}; ///=======================================================================
//消息标签
enum
{
enMsgCommonAttack, //普通攻击
enMsg_Hit_Enemy, //击中敌人
enMsg_RemoveEnemy, //移除敌人
enMsg_RemoveProtagonist, //移除主角
enMsgEnemyCommonAttack, //敌人普通攻击
enMsgProtagonistSkill, //技能
enMsgProtagonistTransfer, //传送门
enMsgCreateEnemy, //创建敌人
enMsgGameWin, //游戏胜利
enMsgCreateGameWinLayer, //创建游戏胜利页
enMsgCreateGameOverLayer, //创建游戏失败页
}; //城镇消息标签
enum
{
enMsgCreateFbSelectLayer, //创建副本选择页
}; //消息标签:依据server数据,进行操作
enum
{
enHttpMsg_CheckUserExist = 1, //用户角色检測
enHttpMsg_CreateHero,
}; //敌人创建结构体
struct Cmd_CreateEnemyInfo
{
int nEnemyID; //敌人ID
int nEnemyLevel; //敌人等级
float fPosX; //敌人创建x轴位置
float fPosY; //敌人创建y轴位置
}; //
struct tagTransferDoor
{
int nID;
tagTransferDoor(){
nID = 0;
}
}; //移除人物的结构体
class CNFBasicPerson;
struct tagRemovePerson
{
CCArray* pArrayTarget;
CNFBasicPerson* pPerson;
tagRemovePerson(){
pArrayTarget = NULL;
}
}; //区分城镇和副本的ID范围 ID:0-10000为城镇。10001-19999为副本 ,20000以上为城镇副本
#define _NF_TOWN_OR_BATTLE_ID_ 10000
#define _NF_TOWN_FB_ID_ 20000 /************************************************************************/
/* 力量,智力与hp,mp的转化量 */
/************************************************************************/
#define _NF_POWER_HP_ 16
#define _NF_WIT_MP_ 14
#define _NF_ATTACK_UP_RATE_POWER_ 14
#define _NF_ATTACK_UP_RATE_WIT_ 14
#define _NF_ATTACK_UP_RATE_AGILITY_ 14
#define _NF_DOMINATION_UP_RATE_POWER_ 20
#define _NF_DOMINATION_UP_RATE_WIT_ 20
#define _NF_DOMINATION_UP_RATE_AGILITY_ 20 #define _NF_HIT_CD_ 180 //毅力计算系数
#define _NF_PERSEVERANCE_COEFFICIENT_ 4285 //防御计算系数
#define _NF_DEFENSE_COEFFICIENT_ 2857 /************************************************************************/
/* buff编号 */
/************************************************************************/
#define _NF_BUFF_TREATFORMULA_ID 1 //治疗
#define _NF_BUFF_SIPERARMOR_ID 2 //霸体
#define _NF_BUFF_ASTHENIA_ID 3 //衰弱
#define _NF_BUFF_ATTACKSPEEDCUT_ID 4 //缓慢
#define _NF_BUFF_MOVESPEEDCUT_ID 5 //减速
#define _NF_BUFF_POISONING_ID 6 //中毒
#define _NF_BUFF_BFB_TREATFORMULA_ID 7 //百分比治疗
#define _NF_BUFF_SINGLE_ATTACKUP_ID 8 //添加单体攻击力
#define _NF_BUFF_ATTACKUP_ID 9 //添加群体攻击力
#define _NF_BUFF_S_SIPERARMOR_ID 10 //群体霸体
#define _NF_BUFF_S_MP_RECOVER_ID 11 //群体百分比恢复MP //拳花类型
enum
{
enTagAttackType_Common = 1, //普通
enTagAttackType_Sharp = 2, //锐利
enTagAttackType_Fire = 3, //火焰
enTagAttackType_Electricity = 4, //雷电 }; /************************************************************************/
/* 技能摇杆 */
/************************************************************************/ //技能CD结构体
struct tagSkillCDInfo
{
int nSkill_SkillItemID; //技能块ID
int nSkill_CD_Time; //技能的CD时间
int nSkill_CD_Time_Temp; //技能的当前CD时间
string strSkill_AniName; //动画名
float fCostMp; //消耗魔法值
}; /************************************************************************/
/* UI */
/************************************************************************/
//屏幕适配,宽度差值
#define _NF_SCREEN_WIDTH_DIS_ ( CCDirector::sharedDirector()->getWinSize().width*0.5f - 360 ) //server选择结构体
struct tagServerSelect
{
int nServerID; //serverID
}; //消息发送:外部UI
enum enUI_Msg
{
enMsg_ServerSelect, //server选择
}; /************************************************************************/
/* 结构体 */
/************************************************************************/
//景深地图信息结构体
struct tagTmxStaticInfo
{
string strTmxName; //景深地图名字
float fStartPosX; //景深地图x轴初始位置
float fStartPosY; //景深地图y轴初始位置
};
typedef map<int,tagTmxStaticInfo> CNFTmxStaticInfoMap; //景深地图静态信息map //敌人AI
enum enumEnemyAIKind //行动种类
{
enEnemyAIHold, //待机
enEnemyAICrosswiseApproach, //直线接近
enEnemyAICrosswiseDisapproach, //直线远离
enEnemyLengthwaysApproach, //并线接近
enEnemyLengthwaysDisapproach, //并线远离
enEnemyDirectlyApproach, //斜角靠近
enEnemyCircuity, //绕背
enEnemyAttackTypeShort, //攻击-近
enEnemyAttackTypeLong, //攻击-远
};
enum enumEnemyAICondition //AI条件
{
enEnemyCondition_SameCrosswise_InRangeLong, //同线 且范围处于 远距离攻击 和近距离攻击范围之间
enEnemyCondition_SameCrosswise_InRangeShort, //同线 且范围处于 近距离攻击范围内
enEnemyCondition_SameCrosswise_NotInRange, //同线 且范围处于 远距离攻击 范围外
enEnemyCondition_NotSameCrosswiss_Near, //不同线 但距离非常近
enEnemyCondition_NotSameCrosswiss_Far_FacePlayer, //不同线 距离远 面对玩家正面
enEnemyCondition_NotSameCrosswiss_Far_NotFacePlayer, //不同线 距离远 面对玩家背面
}; typedef map<enumEnemyAIKind,int> CMapAIActionOnKind; //敌人行动类型map
typedef map<enumEnemyAICondition,CMapAIActionOnKind> CMapAI; //敌人AI条件map
typedef map<int,CMapAI> CEnemyAIStaticInfoMap; //通过ID,得到敌人AI信息 //buff(debuff)静态信息结构体
struct tagBuffStaticInfo
{
int nBuffID; //buffID
int nBuffTime; //buff持续时间
int nBuffTime_g; //buff持续时间成长
float fBuffPoint1; //buff点数1
float fBuffPoint1_g; //buff点数1成长
float fBuffPoint2; //buff点数2
float fBuffPoint2_g; //buff点数2成长
};
typedef map<int,tagBuffStaticInfo> CNFBuffStaticInfoMap; //buff静态信息map
typedef vector<tagBuffStaticInfo> CNFBuffStaticInfoVec; //buff静态信息 //buff(debuff)信息结构体
struct tagBuffInfo
{
int nBuffID; //buffID
int nBuffTime; //buff持续时间
float fBuffPoint1; //buff点数1
float fBuffPoint2; //buff点数2
};
typedef vector<tagBuffInfo> CNFBuffInfoVec; //buff信息 //技能块自身的变化信息
struct tagSkillChangeInfo
{
float fChangeTime; //变化时间
int nIsGravity; //是否开启重力 1.开启 0.不开启 float fOldX; //技能块,旧x轴位置
float fOldY; //技能块,旧y轴位置
float fOldZ; //技能块,旧z轴位置
float fOldLength; //技能块,旧长度
float fOldWidth; //技能块。旧宽度
float fOldHeight; //技能块,旧高度 float fNewX; //技能块。新x轴位置
float fNewY; //技能块。新y轴位置
float fNewZ; //技能块,新z轴位置
float fNewLength; //技能块,新长度
float fNewWidth; //技能块,新宽度
float fNewHeight; //技能块。新高度 }; //技能块伤害信息
struct tagSkillDamageInfo
{
CNFBuffStaticInfoVec vecTargetBuff; //被攻击者的buff或debuff
float fDamagePoint; //基础攻击力
float fDamagePoint_g; //攻击力系数
float fDamagePercent; //技能百分比
float fDamagePercent_g; //技能百分比成长
float fXDis; //被攻击者x轴的变化量
float fXTime; //被攻击者x轴的变化时间
float fYDis; //被攻击者y轴的变化量
float fYTime; //被攻击者y轴的变化时间
float fZSpeed; //被攻击者z轴的速度变化
int nIsConversely; //被攻击者是否倒地 1.倒地 0.不倒地
int nCrickAdd; //被攻击者硬直添加量
int nAttackSpeed; //攻击之间的间隔(帧)
int nIsExplodeMode; //是否为爆炸模式 1.是 0.不是
int nIsPullMode; //是否为拉近到面前模式 1.是 0.不是 int nCritAdd; //暴击率添加量
float fCritDamageAdd; //暴击伤害添加量
int nHitTargetAdd; //命中添加量
int nIsDirection; //是否有方向 1.有 0.没有 int nIsSuctionMode; //是否为吸引模式 1.是 0.不是
float fSuctionSpeed; //吸引的速度
float fSuctionTime; //吸引的时间(秒)
float fSuctionPosX; //吸引到的x轴位置:相对于角色,面部向右
float fSuctionPosY; //吸引到的y轴位置 int nIsOnlyDamageNotHit; //是否仅仅受到伤害,但不播放被击动画(用于地面AOE) 1.是 0.不是
int nIsSuctionSkillItemCenter; //是否吸引到技能块中心 1.是 0.不是 ps:若“是”。则fSuctionPosX和fSuctionPosY无意义。 int nIsDamage; //是否计算伤害 1.是 0.不是
int nIsFollow; //技能块是否尾随释放者 1.是 0.不是 int nIsBreakSiperarmor; //是否破霸体
int nHitEffectType; //拳花类型 }; //技能Item结构体
struct tagSkillItemStaticInfo
{
bool bIsCommonSkill; //是否为普通攻击
float fDelayTime; //延迟时间
float fDisX; //释放者。x轴位移量
float fTimeX; //释放者,x轴时间
float fDisY; //释放者,y轴位移量
float fTimeY; //释放者,y轴时间
float fSpeedZ; //释放者,z轴速度
int nScreenIsShake; //屏幕是否震动 1.震动 0.不震动
float fShakeDurTime; //屏幕震动持续时间(秒)
float fShakeDegree; //屏幕震动幅度
int nShakeCount; //屏幕震动次数
int nIsLensfeatrue; //屏幕是否拉伸
float fLensfeatureTime; //屏幕拉伸时间(秒)
int nIsScreenChangeColor; //屏幕是否改变颜色 0.不改变 1.变黑
float fScreenChangeColorTime; //屏幕颜色改变时间(秒)
int nIsTurnRound; //释放者是否转头 1.是 0.不是 CNFBuffStaticInfoVec vecBuff; //释放者的buff或debuff
tagSkillChangeInfo tSkillChange; //技能块,自身变化信息
tagSkillDamageInfo tSkillDamage; //技能块,伤害信息 int nIsArmature; //技能块,是否有骨骼动画:1.有 0,没有
string strArmatureName; //骨骼动画名称
int nIsSound; //技能块。是否有音效:1.有 0,没有
string strSoundName; //音效名称
};
typedef vector<tagSkillItemStaticInfo> CNFSkillItemVec; //技能块容器 //技能静态信息结构体
struct tagSkillStaticInfo
{
int nSkillID; //技能ID
int nIsCommonSkill; //是否为普通攻击:1.是 0.不是
int nSkillCD; //技能CD(帧)
int nSkillCD_g; //技能CD成长
float fCostMp; //魔法消耗
float fCostMp_g; //魔法消耗成长
string strAniName; //动画名称
string strSkillName; //技能名称
string strSkillIntroduce; //技能介绍
CNFSkillItemVec vecSkillItem; //技能块容器 };
typedef map<int,tagSkillStaticInfo> CNFSkillStaticMapBySkillID; //通过技能ID,得到tagSkillStaticInfo
typedef map<int,CNFSkillStaticMapBySkillID> CNFSkillStaticInfoMapByProtagonistID; //通过主角ID,得到CNFSkillStaticMapBySkillID
typedef vector<tagSkillStaticInfo> CNFSkillStaticInfoVec; //技能静态信息vec //攻击的结构体
struct tagTakeABeating
{
CNFBuffInfoVec vecBuff; //目标的buff或debuff
float fDamagePoint; //攻击力
int nHitTarget; //命中
int nCrit; //暴击
float fCritDamage; //暴击伤害
int nXDis; //被攻击者x轴的变化量
float fXTime; //被攻击者x轴的变化时间
int nYDis; //被攻击者y轴的变化量
float fYTime; //被攻击者y轴的变化时间
float fZSpeed; //被攻击者z轴的速度变化
bool bIsConversely; //被攻击者是否倒地
int nCrickAdd; //被攻击者硬直添加量
int nAttackSpeed; //攻击之间的间隔(帧)
bool bIsExplodeMode; //是否是爆炸模式
bool bIsPullMode; //是否是拉倒面前模式
bool bIsSuctionMode; //是否为吸引模式
float fSuctionSpeed; //吸引的速度
float fSuctionTime; //吸引的时间(秒)
float fSuctionPosX; //吸引到的x轴位置:相对于角色,面部向右
float fSuctionPosY; //吸引到的y轴位置
bool bIsOnlyDamageNotHit; //是否仅仅受到伤害。但不播放被击动画(用于地面AOE)
bool bIsSuctionSkillItemCenter; //是否吸引到技能块中心 ps:若“是”。则fSuctionPosX和fSuctionPosY无意义。
bool bIsDamage; //是否计算伤害
bool bIsFollow; //是否尾随释放者
bool bIsBreakSiperarmor; //是否破霸体
int nHitEffectType; //拳花类型 tagTakeABeating()
{
bIsExplodeMode = false;
bIsPullMode = false;
bIsDamage = true;
}
}; //普通攻击结构体
class CNFBasicPerson;
struct tagCommonAttack
{
CNFBasicPerson* pReleaser; //释放者
CCArray *pArrayTarget; //目标数组
float fChangeTime; //变化时间
int nIsGravity; //是否开启重力 1.开启 0.不开启
float fOldX; //技能块,旧x轴位置
float fOldY; //技能块。旧y轴位置
float fOldZ; //技能块,旧z轴位置
float fOldLength; //技能块。旧长度
float fOldWidth; //技能块。旧宽度
float fOldHeight; //技能块,旧高度 float fNewX; //技能块,新x轴位置
float fNewY; //技能块。新y轴位置
float fNewZ; //技能块,新z轴位置
float fNewLength; //技能块。新长度
float fNewWidth; //技能块,新宽度
float fNewHeight; //技能块,新高度 int nIsArmature; //技能块,是否有骨骼动画:1.有 0,没有
string strArmatureName; //骨骼动画名称 tagTakeABeating tTakeABeating;
tagCommonAttack(CNFBasicPerson* pReleaserU,tagSkillItemStaticInfo* pInfo,int nSkillLV);
tagCommonAttack(){
}
}; /************************************************************************/
/* 主角AI */
/************************************************************************/
//治疗技能
struct tagTreatSkillInfo
{
int nSkillID; //技能ID
float fBloodPer; //触发加血技能的hp最低百分比
};
typedef vector<tagTreatSkillInfo> CNFTreatSkillVec; //治疗技能容器 //必定技能
struct tagMustSkillInfo
{
int nSkillID; //技能ID
};
typedef vector<tagMustSkillInfo> CNFMustSkillVec; //必定技能容器 //距离技能块
struct tagDistanceItem
{
int nSkillID; //技能ID
int nDelayTime; //延迟时间(帧)。总时间
};
typedef vector<tagDistanceItem> CNFDistanceItemVec; //距离技能块容器 //距离技能
struct tagDistanceSkillInfo
{
float fSkillDistance; //释放技能的距离范围
CNFDistanceItemVec vecDistanceItem; //距离技能块容器
};
typedef vector<tagDistanceSkillInfo> CNFDistanceSkillVec; //距离技能容器 //主角Ai结构体
struct tagProtagonistAIInfo
{
CNFTreatSkillVec vecTreatSkill; //治疗技能
CNFMustSkillVec vecMustSkill; //必定技能
CNFDistanceSkillVec vecDistanceSkill; //距离技能
};
//typedef map<int,tagProtagonistAIInfo> CNFProtagonistAIMap; //主句ai容器 /************************************************************************/
/* NPC */
/************************************************************************/
//ncp静态信息结构体
struct tagNPCStaticInfo
{
string strArmatureName; //NPC 动画名称
float fLength; //NPC 长度
float fWidth; //NPC 宽度
float fHeight; //NPC 高度
};
typedef map<int,tagNPCStaticInfo> CNFNPCStaticInfoMap; //NPC静态信息容器 //npc Json信息
struct tagNPCJsonInfo
{
int nNPCID; //NPC ID
float fPosX; //NPC x轴位置
float fPosY; //NPC y轴位置
float fPosZ; //NPC z轴位置
tagNPCStaticInfo NPCStaticInfo; //NPC 静态信息
};
typedef vector<tagNPCJsonInfo> CNFNPCJsonInfoVec; //NPC Json 信息容器 /************************************************************************/
/* DOOR */
/************************************************************************/
//door静态信息结构体
struct tagDoorStaticInfo
{
string strArmatureName; //Door 动画名称
float fLength; //Door 长度
float fWidth; //Door 宽度
float fHeight; //Door 高度
int nRelaceStageID; //Door 跳转到的关卡ID
};
typedef map<int,tagDoorStaticInfo> CNFDoorStaticInfoMap; //Door静态信息容器 //door Json信息
struct tagDoorJsonInfo
{
int nDoorID; //Door ID
float fPosX; //Door x轴位置
float fPosY; //Door y轴位置
float fPosZ; //Door z轴位置
tagDoorStaticInfo DoorStaticInfo; //Door 静态信息
};
typedef vector<tagDoorJsonInfo> CNFDoorJsonInfoVec; //Door Json 信息容器 /************************************************************************/
/* http消息发送结构体 */
/************************************************************************/
//注冊
struct THttpRegister
{
string strUserName; //username称
string strPassWord; //用户password
}; //登录
struct THttpLogin
{
string strUserName; //username称
string strPassWord; //用户password
}; //创建角色
struct TTHttpCreateHero
{
int nHeroID; //角色ID
string strHeroName; //角色名称
}; #endif
<span style="white-space:pre"> </span>公共 PublicDef.cpp 文件
#include "PublicDef.h"
#include "../gameunit/person/NFProtagonist.h" //静态数据库
std::string GetStaticDataName()
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
<span style="white-space:pre"> </span>return _TR_STATIC_DATABASE_FILE_NAME_;
#else
<span style="white-space:pre"> </span>std::string strResult = CCFileUtils::sharedFileUtils()->getWritablePath();
<span style="white-space:pre"> </span>strResult+= _TR_STATIC_DATABASE_FILE_NAME_;
<span style="white-space:pre"> </span>return strResult;
#endif
} //存储数据库
std::string GetSaveDataName()
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
<span style="white-space:pre"> </span>return _NF_SAVE_DATABASE_FILE_NAME_;
#else
<span style="white-space:pre"> </span>std::string strResult = CCFileUtils::sharedFileUtils()->getWritablePath();
<span style="white-space:pre"> </span>strResult+= _NF_SAVE_DATABASE_FILE_NAME_;
<span style="white-space:pre"> </span>return strResult;
#endif
} tagCommonAttack::tagCommonAttack(CNFBasicPerson* pReleaserU,tagSkillItemStaticInfo* pInfo,int nSkillLV)
{
<span style="white-space:pre"> </span>pReleaser = pReleaserU;
<span style="white-space:pre"> </span>pArrayTarget = NULL;
<span style="white-space:pre"> </span>fChangeTime = pInfo->tSkillChange.fChangeTime;
<span style="white-space:pre"> </span>nIsGravity = pInfo->tSkillChange.nIsGravity;
<span style="white-space:pre"> </span>fOldX = pInfo->tSkillChange.fOldX;
<span style="white-space:pre"> </span>fOldY = pInfo->tSkillChange.fOldY;
<span style="white-space:pre"> </span>fOldZ = pInfo->tSkillChange.fOldZ;
<span style="white-space:pre"> </span>fOldLength = pInfo->tSkillChange.fOldLength;
<span style="white-space:pre"> </span>fOldWidth = pInfo->tSkillChange.fOldWidth;
<span style="white-space:pre"> </span>fOldHeight = pInfo->tSkillChange.fOldHeight;
<span style="white-space:pre"> </span>fNewX = pInfo->tSkillChange.fNewX;
<span style="white-space:pre"> </span>fNewY = pInfo->tSkillChange.fNewY;
<span style="white-space:pre"> </span>fNewZ = pInfo->tSkillChange.fNewZ;
<span style="white-space:pre"> </span>fNewLength = pInfo->tSkillChange.fNewLength;
<span style="white-space:pre"> </span>fNewWidth = pInfo->tSkillChange.fNewWidth;
<span style="white-space:pre"> </span>fNewHeight = pInfo->tSkillChange.fNewHeight;
<span style="white-space:pre"> </span>tTakeABeating.bIsConversely = pInfo->tSkillDamage.nIsConversely==0?false:true;
<span style="white-space:pre"> </span>if(pReleaser!=NULL)
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>if(pInfo->bIsCommonSkill){
<span style="white-space:pre"> </span>tTakeABeating.fDamagePoint = pReleaser->GetAttack();
<span style="white-space:pre"> </span>}else{
<span style="white-space:pre"> </span>//技能攻击力 = 施放者掌控力 + (技能基础攻击力 + 技能攻击力成长*技能等级)+ 施放者攻击力*(技能基础百分比倍数 + 技能成长百分比倍数*技能等级)
<span style="white-space:pre"> </span>tTakeABeating.fDamagePoint = pReleaser->GetDomination() + (pInfo->tSkillDamage.fDamagePoint + pInfo->tSkillDamage.fDamagePoint_g*nSkillLV) + pReleaser->GetAttack()*(1 + pInfo->tSkillDamage.fDamagePercent + pInfo->tSkillDamage.fDamagePercent_g*nSkillLV);
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>tTakeABeating.nCrit = pReleaser->GetCrit() + pInfo->tSkillDamage.nCritAdd;
<span style="white-space:pre"> </span>tTakeABeating.fCritDamage = pReleaser->GetCritDamage() + pInfo->tSkillDamage.fCritDamageAdd;
<span style="white-space:pre"> </span>tTakeABeating.nHitTarget = pReleaser->GetHitTarget() + pInfo->tSkillDamage.nHitTargetAdd;
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>tTakeABeating.fXTime = pInfo->tSkillDamage.fXTime;
<span style="white-space:pre"> </span>tTakeABeating.nXDis = pInfo->tSkillDamage.fXDis;
<span style="white-space:pre"> </span>if(pInfo->tSkillDamage.nIsDirection>0){
<span style="white-space:pre"> </span>fOldX = fOldX*pReleaser->GetDirection();
<span style="white-space:pre"> </span>fNewX = fNewX*pReleaser->GetDirection();
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>tTakeABeating.nXDis = tTakeABeating.nXDis*pReleaser->GetDirection();
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>tTakeABeating.fYTime = pInfo->tSkillDamage.fYTime;
<span style="white-space:pre"> </span>tTakeABeating.nYDis = pInfo->tSkillDamage.fYDis;
<span style="white-space:pre"> </span>tTakeABeating.fZSpeed = pInfo->tSkillDamage.fZSpeed;
<span style="white-space:pre"> </span>tTakeABeating.nCrickAdd = pInfo->tSkillDamage.nCrickAdd;
<span style="white-space:pre"> </span>tTakeABeating.nAttackSpeed = pInfo->tSkillDamage.nAttackSpeed;
<span style="white-space:pre"> </span>tTakeABeating.bIsExplodeMode = pInfo->tSkillDamage.nIsExplodeMode>0? true:false;
<span style="white-space:pre"> </span>tTakeABeating.bIsPullMode = pInfo->tSkillDamage.nIsPullMode>0?true:false; <span style="white-space:pre"> </span>tTakeABeating.bIsSuctionMode = pInfo->tSkillDamage.nIsSuctionMode>0?true:false;
<span style="white-space:pre"> </span>tTakeABeating.fSuctionSpeed = pInfo->tSkillDamage.fSuctionSpeed;
<span style="white-space:pre"> </span>tTakeABeating.fSuctionTime = pInfo->tSkillDamage.fSuctionTime;
<span style="white-space:pre"> </span>tTakeABeating.fSuctionPosX = pInfo->tSkillDamage.fSuctionPosX;
<span style="white-space:pre"> </span>tTakeABeating.fSuctionPosY = pInfo->tSkillDamage.fSuctionPosY;
<span style="white-space:pre"> </span>tTakeABeating.bIsOnlyDamageNotHit = pInfo->tSkillDamage.nIsOnlyDamageNotHit>0? true:false;
<span style="white-space:pre"> </span>tTakeABeating.bIsSuctionSkillItemCenter = pInfo->tSkillDamage.nIsSuctionSkillItemCenter>0? true:false;
<span style="white-space:pre"> </span>tTakeABeating.bIsDamage = pInfo->tSkillDamage.nIsDamage>0?true:false;
<span style="white-space:pre"> </span>tTakeABeating.bIsFollow = pInfo->tSkillDamage.nIsFollow>0?true:false;
<span style="white-space:pre"> </span>tTakeABeating.bIsBreakSiperarmor = pInfo->tSkillDamage.nIsBreakSiperarmor>0?true:false;
<span style="white-space:pre"> </span>tTakeABeating.nHitEffectType = pInfo->tSkillDamage.nHitEffectType; <span style="white-space:pre"> </span>for (CNFBuffStaticInfoVec::iterator iter = pInfo->tSkillDamage.vecTargetBuff.begin();iter != pInfo->tSkillDamage.vecTargetBuff.end();iter++)
<span style="white-space:pre"> </span>{
<span style="white-space:pre"> </span>tagBuffInfo BuffInfo;
<span style="white-space:pre"> </span>BuffInfo.nBuffID = iter->nBuffID;
<span style="white-space:pre"> </span>BuffInfo.nBuffTime = iter->nBuffTime + nSkillLV*iter->nBuffTime_g;
<span style="white-space:pre"> </span>BuffInfo.fBuffPoint1 = iter->fBuffPoint1 + nSkillLV*iter->fBuffPoint1_g;
<span style="white-space:pre"> </span>BuffInfo.fBuffPoint2 = iter->fBuffPoint2 + nSkillLV*iter->fBuffPoint2_g; <span style="white-space:pre"> </span>tTakeABeating.vecBuff.push_back(BuffInfo);
<span style="white-space:pre"> </span>} <span style="white-space:pre"> </span>nIsArmature = pInfo->nIsArmature;
<span style="white-space:pre"> </span>strArmatureName = pInfo->strArmatureName; }
个人博客 www.sundaboke.com
分析Cocos2d-x横版ACT手游源码 1、公共的更多相关文章
- 分析Cocos2d-x横版ACT手游源 1、登录
我自己的游戏代码 因为 游戏源 盯着外面的 我们能够能够理解 /******************************************************************** ...
- 分析Cocos2d-x横版ACT手游源 2、server场景
仍然一样 直接在代码 资源 下一个 上传 你可以看到自己 NFServerChangeLayer.h </pre><pre name="code" class=& ...
- 出售一套Unity ARPG手游源码
项目已经上线,在越南App Store曾经排名第一.客户端Unity C#开发,Android可以热更新,IOS可以更新资源,服务器 C++ + lua开发,文档齐全,欢迎咨询. QQ:7734952 ...
- 【CC2530入门教程-增强版】基础技能综合实训案例(基础版)-上位机源码
[CC2530入门教程-增强版]基础技能综合实训案例(基础版)-上位机源码 广东职业技术学院 欧浩源 一.需求分析 按照指定参数打开串口,与测控终端建立数据传输通道,并根据应用要求实现程序逻辑,具体 ...
- html5 canvas简易版捕鱼达人游戏源码
插件描述:html5利用canvas写的一个js版本的捕鱼,有积分统计,鱼可以全方位移动,炮会跟着鼠标移动,第一次打开需要鼠标移出背景图,再移入的时候就可以控制炮的转动,因为是用的mouseover触 ...
- ios版弹珠游戏源码
这个是我们比较喜欢玩的一直小游戏的,ios版弹珠游戏源码,该游戏源码来着IOS教程网其他网友提供上传的,大家可以了解一下吧. nore_js_op> <ignore_js_op&g ...
- Android版的疯狂猜图游戏源码完整版分享
这个游戏源码是在安装教程网那么分享过来的,Android版的疯狂猜图游戏源码完整版分享,也是本人之前很早以前发的一款游戏源码的,大家如果想了解一下,可以看看吧,不说多了,上一个图先吧. > ...
- IOS版新闻客户端应用源码项目
IOS版新闻客户端应用源码,这个是一款简单的新闻客户端源码,该应用实现没采用任何第三方类库的 ,并且这个应用的UI做得很不错的,值得我们的参考和学习,希望大家可以更加完善这款新闻类的应用吧. 源码下载 ...
- Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装
原文:Linux内核分析(一)---linux体系简介|内核源码简介|内核配置编译安装 Linux内核分析(一) 从本篇博文开始我将对linux内核进行学习和分析,整个过程必将十分艰辛,但我会坚持到底 ...
随机推荐
- PAT Basic 1055
1055 集体照 拍集体照时队形很重要,这里对给定的 N 个人 K 排的队形设计排队规则如下: 每排人数为 N/K(向下取整),多出来的人全部站在最后一排: 后排所有人的个子都不比前排任何人矮: 每排 ...
- 流编辑器sed知识点总结
sed(流文本编辑器) 每次读取一行到模式空间中, 修改的sed模式空间中的内容,并不会修改源文件, 继而输出模式空间的内容, 最后删除模式空间中的内容. sed [O ...
- 【01】国内外git托管平台(总结by魔芋)
[01]国内git托管平台介绍 01, github:代码协作平台,协同开发. 代码托管平台. git:项目版本控制系统 02, 最好的托管方式: github 关闭或小众的托管方式: geakit( ...
- BRVAH(让RecyclerView变得更高效)(1)
本文来自网易云社区 作者:吴思博 对于RecyclerView, 我们重复编写着那一个又一个的列表界面,有的要分组,有的要添加广告头部.有的要不同类型item排列.等等需求,主要代码有大部分是重复的, ...
- nw.js学习地址
http://blog.sina.com.cn/s/blog_600e56a60102vqj2.html https://github.com/nwjs/nw.js/wiki/Manifest-For ...
- tensorflow 如何限制显存大小
Python在用GPU跑模型的时候最好开多进程,因为很明显这种任务就是计算密集型的. 用进程池好管理,但是tensorflow默认情况会最大占用显存,尽管该任务并不需要这么多,因此我们可以设置显存的按 ...
- 2017ACM/ICPC广西邀请赛-重现赛(感谢广西大学)
上一场CF打到心态爆炸,这几天也没啥想干的 A Math Problem Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/3 ...
- TOJ 假题之 Cow Brainiacs
1570: Cow Brainiacs Time Limit(Common/Java):1000MS/10000MS Memory Limit:65536KByteTotal Submit: ...
- SPOJ-COLONY - Linearian Colony!简单二分思想
COLONY - Linearian Colony 一道很水的题却坑我两天!在CF上做过类似的题,用递归可以找到答案,但感觉不会这么麻烦,于是看看有没有什么规律,对Y分奇偶貌似可以找到规律,但WA了三 ...
- linux移动硬盘unmount报错处理
备份数据用的移动硬盘unmount时报: 通过fuser命令来kill掉设备进程,再unmount移动设备 先看fuser命令帮助信息: [root@athenadb2 ~]# fuser -help ...