烈焰遮天 cocos 手游mmo 源码 解析

引擎: cocos2.x

代码: c++ 混合 lua

游戏类型: mmo


工程结构:

game : 游戏启动地方

gamelogic:接sdk相关,登陆支付统计等

libFramework:主要本游戏相关c++库

uicontrol:

zpack:一个开源的打包文件工具


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

分析libFramework:

base目录

sfapp.h : 框架app,继承了一个scene,这是本游戏的主scene基类。

cpp: 

#include "sofia/utils/SFLog.h"
#include "include/utils/SFTimeAxis.h"
#include "map/StructCommon.h"
#include "base/SFApp.h"
#include "SFSimulator.h"
//#include "download/mfDownloader.h"

using namespace cocos2d;


SFApp::SFApp()
{
	//this->init();
}

SFApp::~SFApp()
{
}

void SFApp::startRun()
{
	cocos2d::CCSize size = cocos2d::CCEGLView::sharedOpenGLView()->getFrameSize();
	m_width = size.width;
	m_height = size.height;
	//执行update循环!
	getScheduler()->scheduleUpdateForTarget(this, kCCPrioritySystem, false);
	//虚函数,调用子类的实现
	this->onInit();
}


// void SFApp::stopRun()
// {
// 	getScheduler()->unscheduleUpdateForTarget(this);
// }

//屏幕宽,
int SFApp::getScreenResolutionX()
{
	return m_width;
}

int SFApp::getScreenResolutionY()
{
	return m_height;
}

//这个simulator,难道是cocos3.x 增加的simulator,待会看看
void SFApp::onTick( int microSecs )
{
	//SFLog("SFApp::onTick %d", microSecs);
	SFGameSimulator::sharedGameSimulator()->tick();//网络tick//难道这里只是网络监听而已?
	//MFDownloader::instance()->tick();			// 下载的回调依赖tick
}

void SFApp::onDraw()
{

}

void SFApp::update( float dt )
{
	//一个定时器实现。用来干嘛呢?
	//字面意思,就是在Timer里面,设了一个delaytime,这个应该全局一致
	SFTimeAxis* pTimeAxis = SFTimeAxis::getInstancePtr();
	pTimeAxis->advance(dt* 1000);

	onTick(pTimeAxis->getDelayTime());
}

void SFApp::draw( void )
{
	cocos2d::CCScene::draw();
	onDraw();
}

void SFApp::onDestory()
{

}

void SFApp::onExit()
{
	this->removeAllChildrenWithCleanup(true);
	onDestory();
	cocos2d::CCScene::onExit();
}

bool SFApp::init()
{
	cocos2d::CCScene::init();
	startRun();
	return true;
}
先把基础的一些代码看完,

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

utils目录:
ccstrconv.h 对字符串的一些基本转换处理;不错,这些平时都可以收集起来,自己写的项目可以用到

ccstrutil.h  更多的字符串处理

csvfile.h  csv文件的读写

httptools.h  对cocos提供的http进行了一些封装,这个3.x cocos有xmlhttp,本身都封装过

sfeasymail  调用curl库,直接发email,这个蛮吊的嘛!!!给客服发邮件吗?

sfthread  封装了一个线程类,分别为win和android-ios写了不同的实现,信号量,互斥锁,读写锁

singleton 单例模板

streamdataadapter c++和lua直接传递复杂数据的适配器,搞这么复杂。。。

sfminihtml html解析,不知哪里用到

sfexecutionthreadservice  线程的进一步封装

sfprioritynotificationcenter 

sfstringutil 更详细的string处理

sftouchdispatcher

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

stream目录  二进制文件读写操作封装

package  热更新相关

scene scene管理

net 网络

eventset  事件

core 单独写了一个sprite类;用来显示地图上的sprite,有什么好处?

map 主要的mmo地图等元素逻辑






阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页