Exemplo n.º 1
0
/*static*/
IDataSource* JSonDB::openDB(const u8* source, u32 sourceLength) {
	JSonDB* newDB = KLBNEW(JSonDB);
	if (!newDB->readDBInternal(source, sourceLength)) {
		KLBDELETE(newDB);
		newDB = NULL;
	}
	return newDB;
}
Exemplo n.º 2
0
CKLBDeviceKeyEvent *
CKLBDeviceKeyEvent::create()
{
    CKLBDeviceKeyEvent * pTask = KLBNEW(CKLBDeviceKeyEvent);
	if (pTask) {
		pTask->regist(0, P_INPUT);    // 入力タスクは必ず入力フェーズに指定する。
	}
    return pTask;
}
Exemplo n.º 3
0
CKLBUIButton* CKLBUIButton::create(CKLBTask* pParentTask, const char * funcName) {
	CKLBUIButton* pTask = KLBNEW(CKLBUIButton);
	if(!pTask) return 0;

	if(!pTask->init(pParentTask, funcName)) {
		KLBDELETE(pTask);
		return 0;
	}
	return pTask;
}
Exemplo n.º 4
0
/*virtual*/
CKLBAbstractAsset*	KLBAudioAssetPlugin::loadByFileName(const char* url) {
	CKLBAudioAsset* pAudioAsset = KLBNEW(CKLBAudioAsset);
	if (pAudioAsset) {
		if (pAudioAsset->init(url)) {
			return pAudioAsset;
		}
		KLBDELETE(pAudioAsset);
	}
	return NULL;
}
Exemplo n.º 5
0
CKLBUISimpleItem* 
CKLBUISimpleItem::create(CKLBUITask* pParent, CKLBNode* pNode, u32 order, float x, float y, const char* asset) 
{
	CKLBUISimpleItem* pTask = KLBNEW(CKLBUISimpleItem);
    if(!pTask) { return NULL; }
	if(!pTask->init(pParent, pNode, order,x,y,asset)) {
		KLBDELETE(pTask);
		return NULL;
	}
	return pTask;
}
Exemplo n.º 6
0
CKLBPauseCtrl* 
CKLBPauseCtrl::create(CKLBTask* pParentTask, const char* pause, const char* resume) {
	CKLBPauseCtrl* pTask = KLBNEW(CKLBPauseCtrl);
    if(!pTask) { return NULL; }

	if(!pTask->init(pParentTask, pause,resume)) {
		KLBDELETE(pTask);
		return NULL;
	}
	return pTask;
}
Exemplo n.º 7
0
CKLBUIControl* 
CKLBUIControl::create(CKLBTask* pParentTask, const char* onClick, const char* onDrag) {
	CKLBUIControl* pTask = KLBNEW(CKLBUIControl);
    if(!pTask) { return NULL; }

	if(!pTask->init(pParentTask, onClick, onDrag)) {
		KLBDELETE(pTask);
		return NULL;
	}
	return pTask;
}
Exemplo n.º 8
0
CKLBLifeCtrlTask* 
CKLBLifeCtrlTask::create(CKLBTask* pParentTask, u32 mode, u32 limit) {
	CKLBLifeCtrlTask* pTask = KLBNEW(CKLBLifeCtrlTask);
    if(!pTask) { return NULL; }

	if(!pTask->init(pParentTask, mode, limit)) {
		KLBDELETE(pTask);
		return NULL;
	}
	return pTask;
}
Exemplo n.º 9
0
CKLBUIMultiImgItem* 
CKLBUIMultiImgItem::create(CKLBUITask* pParent, CKLBNode* pNode, u32 order, float x, float y, u32 idx, const char** pArrayAsset, u32* pArrayIndexes, u32 assetCount) 
{
	CKLBUIMultiImgItem* pTask = KLBNEW(CKLBUIMultiImgItem);
    if(!pTask) { return NULL; }

	if(!pTask->init(pParent, pNode, order, x,y,idx,pArrayAsset, pArrayIndexes, assetCount)) {
		KLBDELETE(pTask);
		return NULL;
	}
	return pTask;
}
Exemplo n.º 10
0
CKLBUITouchPad* 
CKLBUITouchPad::create(CKLBTask* pParentTask, const char * funcName, bool modal) 
{
	CKLBUITouchPad* pTask = KLBNEW(CKLBUITouchPad);
    if(!pTask) { return NULL; }

	if(!pTask->init(pParentTask, funcName, modal)) {
		KLBDELETE(pTask);
		return NULL;
	}
	return pTask;
}
Exemplo n.º 11
0
CKLBGenericTask*
CKLBGenericTask::create(CKLBTask* pParentTask, CKLBTask::TASK_PHASE phase, const char * name_exec, const char * name_die, const char * arr_index)
{
    CKLBGenericTask* pTask = KLBNEW(CKLBGenericTask);
    if(!pTask) {
        return NULL;
    }

    if(!pTask->init(pParentTask, phase, name_exec, name_die, arr_index)) {
        KLBDELETE(pTask);
        return NULL;
    }
    return pTask;
}
Exemplo n.º 12
0
CKLBUIScore *
CKLBUIScore::create(CKLBUITask * pParent, CKLBNode * pNode,
					u32 order, s32 order_offset, float x, float y, 
					const char ** tex_table, float stepX, float stepY, int column, 
					bool fillzero, bool anim_flags, u32 align, bool countclip)
{
	CKLBUIScore * pTask = KLBNEW(CKLBUIScore);
    if(!pTask) { return NULL; }

	if(!pTask->init(pParent, pNode, order, order_offset, x, y, tex_table, stepX, stepY, column, fillzero, anim_flags, align, countclip)) {
		KLBDELETE(pTask);
		return NULL;
	}
	return pTask;
}
Exemplo n.º 13
0
CKLBLuaLibMatrix::MATRIX *
CKLBLuaLibMatrix::newMatrix()
{
	MATRIX * pMat = KLBNEW(MATRIX);
	if(!pMat) return NULL;
	pMat->name = NULL;
	pMat->prev = m_pEnd;
	pMat->next = NULL;
	if(pMat->prev) {
		pMat->prev->next = pMat;
	} else {
		m_pBegin = pMat;
	}
	m_pEnd = pMat;
	return pMat;
}
Exemplo n.º 14
0
CKLBLuaLibFONT::FONTOBJ *
CKLBLuaLibFONT::create_font(int size, const char * fontname)
{
	IPlatformRequest& pForm = CPFInterface::getInstance().platform();
	void * font = pForm.getFont(size, fontname);
	FONTOBJ * fontobj = (!font) ? NULL : KLBNEW(FONTOBJ);
	if(fontobj) {
		fontobj->font = font;
		fontobj->size = size;
		fontobj->prev = ms_end;
		fontobj->next = NULL;
		if(fontobj->prev) {
			fontobj->prev->next = fontobj;
		} else {
			ms_begin = fontobj;
		}
		ms_end = fontobj;
	}
	return fontobj;
}
// Shaders.
CShader*	CKLBOGLWrapper::createShader		(const char* source, SHADER_TYPE type, const SParam* listParam) {
    CShader* pNewShader = KLBNEW(CShader);
    if (pNewShader) {
        GLuint shaderID = dglCreateShader(type == VERTEX_SHADER ? GL_VERTEX_SHADER : GL_FRAGMENT_SHADER);
        if (shaderID != 0) {
            GLint compiled;

            dglShaderSource(shaderID, 1, &source, null);
            // Compile the shader
            dglCompileShader(shaderID);
            // Check the compile status
            dglGetShaderiv(shaderID, GL_COMPILE_STATUS, &compiled);

            if (compiled) {
                //
                // Parse the list of parameters
                //
                const SParam* parser = listParam;

                bool type;

                if (parser) {
                    s32 uniCount = 0;
                    s32 verCount = 0;
                    while (parser->dType != END_LIST) {
                        if (parser->isUniform) {
                            uniCount++;
                        } else {
                            verCount++;
                        }
                        if (parser->dType & TEXTURE) {
                            pNewShader->enableTexture = true;
                        }
                        if (parser->dType & COLOR) {
                            pNewShader->enableColor = true;
                        }
                        parser++;
                    }

                    pNewShader->countUniform		= uniCount;
                    pNewShader->countStreamInfo		= verCount;

                    pNewShader->arrayParam			= KLBNEWA(CShader::SInternalParam,uniCount + verCount);

                    if (pNewShader->arrayParam) {
                        CShader::SInternalParam* pUniParam = pNewShader->arrayParam;
                        CShader::SInternalParam* pVerParam = &pNewShader->arrayParam[uniCount];
                        parser = listParam;

                        while (parser->dType != END_LIST) {
                            if (parser->isUniform) {
                                pUniParam->param = *parser++;
                                pUniParam++;
                            } else {
                                pVerParam->param = *parser++;
                                pVerParam++;
                            }
                        }

                    }

                    type							= true;
                } else {
                    pNewShader->countUniform		= 0;
                    pNewShader->countStreamInfo		= 0;
                    pNewShader->arrayParam			= null;
                    type							= false;
                }


                if ((pNewShader->arrayParam && type) || (!type)) {
                    pNewShader->refCount	= 0;
                    pNewShader->shaderObj	= shaderID;
                    pNewShader->pNext		= this->shaderList;
                    this->shaderList		= pNewShader;

                    return pNewShader;
                }
            }
            dglDeleteShader(shaderID);
        }

        KLBDELETE(pNewShader);
        pNewShader = null;
    }
    return pNewShader;
}
// Rendering Shader.
CShaderSet*	CKLBOGLWrapper::createShaderSet	(CShader* pVertexShader, CShader* pPixelShader) {
    CShaderSet* pNewShaderSet = KLBNEW(CShaderSet);
    if (pNewShaderSet) {
        s32 size = pVertexShader->countUniform + pPixelShader->countUniform;
        if (size) {
            pNewShaderSet->locationArray = KLBNEWA(s32,size);
        } else {
            pNewShaderSet->locationArray = null;
        }

        if ((pNewShaderSet->locationArray) || (size == 0)) {
            GLuint progID = dglCreateProgram();
            if (progID) {
                // Attach
                dglAttachShader(progID, pVertexShader->shaderObj);
                dglAttachShader(progID, pPixelShader->shaderObj);

                pNewShaderSet->pInstances	= null;
                pNewShaderSet->pMgr			= this;

                //
                // Iterate through vertex shader attribute
                //
                s32 iterator = 0;
                CShader::SInternalParam* pParam = &pVertexShader->arrayParam[pVertexShader->countUniform];
                while (iterator < pVertexShader->countStreamInfo) {
                    dglBindAttribLocation(progID, iterator, pParam->param.name);	// Actually only associated with vertex.
                    iterator++;
                    pParam++;
                }

                dglLinkProgram(progID);

                GLint success = 0;
                dglGetProgramiv(progID, GL_LINK_STATUS, &success);
                if (success)
                {
                    s32 uniformIndex = 0;
                    for (s32 n=0; n < 2; n++) {
                        CShader* pShader;
                        if (n==0) {
                            pShader = pVertexShader;
                        }
                        else {
                            pShader = pPixelShader;
                        }

                        CShader::SInternalParam* pParam = pShader->arrayParam;
                        iterator = 0;
                        while (iterator < pShader->countUniform) {
                            // Becomes UniformID
                            pNewShaderSet->locationArray[uniformIndex++] = dglGetUniformLocation(progID, pParam->param.name);
                            iterator++;
                            pParam++;
                        }
                    }

                    pNewShaderSet->programObj	= progID;
                    pNewShaderSet->pNext		= this->shaderSetList;
                    this->shaderSetList			= pNewShaderSet;

                    pVertexShader->refCount++;
                    pPixelShader->refCount++;

                    pNewShaderSet->pixelShader	= pPixelShader;
                    pNewShaderSet->vertexShader	= pVertexShader;

                    pNewShaderSet->enableTexture	= pPixelShader->enableTexture | pVertexShader->enableTexture;
                    pNewShaderSet->enableColor		= pPixelShader->enableColor   | pVertexShader->enableColor;

                    return pNewShaderSet;
                }
                dglDeleteProgram(progID);
            }

            if (pNewShaderSet->locationArray) {
                KLBDELETE(pNewShaderSet->locationArray);
            }
        }
        KLBDELETE(pNewShaderSet);
    }
    return null;
}
Exemplo n.º 17
0
bool
CKLBUIScore::initCore(u32 order, s32 order_offset, float x, float y, 
                      const char ** tex_table, float stepX, float stepY, int column, 
                      bool fillzero, bool anim_flag, u32 align, bool countclip)
{
	if(!setupPropertyList((const char**)ms_propItems,SizeOfArray(ms_propItems))) {
		return false;
	}

	setInitPos(x, y);
	m_order         = order;
	m_orderOffset   = order_offset;
	m_stepX         = (int)stepX;
	m_stepY         = (int)stepY;
	m_column        = column;
	m_bFillZero     = fillzero;
	m_anim          = anim_flag;
	m_align         = align;
	m_bCountClip    = countclip;
	m_dotStepX		= 0;
	m_dotStepY		= 0;
	m_value         = 0xFFFFFFFF;
	m_fValue        = -12345678.0f;
	setValue(0);
	setValueFloat(0.0f, 0);
	RESET_B;	// Reset flag done by setValueFloat.


	// align設定用の幅を計算
	m_width  = stepX * column;
	m_height = stepY * column;

	// 保持できる最大値+1を計算
	m_maxvalue = 1;
    for(int i = 0; i < column; i++) { m_maxvalue = m_maxvalue * 10; }

	for(int idx = 0; idx < 10; idx++) {
		setStrC(m_asset[idx], tex_table[idx]);
	}

	CKLBTextureAsset * pTexAsset;
	pTexAsset = (CKLBTextureAsset *)CKLBUtility::loadAssetScript( m_asset[0], &m_handle, NULL, true);

	const char * texname[10];
	for(int i = 0; i < 10; i++) {
		texname[i] = m_asset[i] + 8;
	}

	m_pScoreNode = KLBNEW(CKLBScoreNode);
    if(!m_pScoreNode) {
		CKLBDataHandler::releaseHandle(m_handle);
        return false;
    }
    
    for(int i = 0; i < 10; i++) {
        m_numTex[i] = pTexAsset->getImage(texname[i]);
        if(m_numTex[i] == 0) {
			CKLBScriptEnv::getInstance().error("TEXB differs from [%s] by [%s].", texname[0], texname[i]);
			CKLBDataHandler::releaseHandle(m_handle);
			return false;
		}
    }

    bool bResult = m_pScoreNode->init(	order,
			                            order_offset,
			                            m_numTex,
			                            m_stepX,
										m_stepY,
										column,
										fillzero,
									    anim_flag);
    
    getNode()->addNode(m_pScoreNode, 0);
	m_pScoreNode->markUpMatrix();
	m_bScoreUpdate = true;

	if(!bResult) CKLBDataHandler::releaseHandle(m_handle);

	return bResult;
}
Exemplo n.º 18
0
/*virtual*/
CKLBNode* CKLBNode::clone(CKLBNode* newItem, CKLBNode* parent, CKLBNode* brother, bool transferSpriteOwnership) {
	if (newItem == NULL) {
		newItem = KLBNEW(CKLBNode);
	}

	if (newItem) {
		//
		// Recursive parse tree.
		//
		CKLBNode* pChild	= m_pChild;
		CKLBNode* pBrother	= NULL;
		while (pChild) {
			pBrother = pChild->clone(NULL, newItem, pBrother, transferSpriteOwnership);
			newItem->addNode(pBrother,pBrother->getLayer());
			pChild		= pChild->m_pBrother;
		}
		newItem->m_parent					= parent;

		newItem->m_matrix					= m_matrix;
		newItem->m_localColorMatrix			= m_localColorMatrix;

	//	Disconnected by default : CTOR default.
	//  Recomputed when tree connect.
	//	SMatrix2D			m_composedMatrix;
	//	SColorVector		m_colorMatrix;

		if (m_name) {
			newItem->m_name = CKLBUtility::copyString(m_name);
		}
		newItem->m_uitask					= m_uitask;

	//	Disconnected by default : CTOR default
	//	CKLBNode*			m_pAnimationNext;
	//	CKLBNode*			m_pAnimationPrev;
	//	m_isAnimated;

		if (m_pColorMatrix != &m_colorMatrix) {
			if (parent) {
				newItem->m_pColorMatrix = parent->m_pColorMatrix;
			}
		}

		if (m_pRender != &m_renderSlot) {
			newItem->m_pRender = KLBNEWA(CKLBRenderCommand*,m_renderCount);
		}

		for (u32 n=0; n < m_renderCount; n++) {
			if (transferSpriteOwnership) {
				newItem->setRenderRef	(this->getRender(n),n);
			} else {
				newItem->setRender		(this->getRender(n),n);
			}
		}

		newItem->m_rot				= m_rot;
		newItem->m_scaleX			= m_scaleX;
		newItem->m_scaleY			= m_scaleY;
		newItem->m_renderCount		= m_renderCount;

		newItem->m_groupID			= m_groupID;
		newItem->m_status			= m_status | INVISIBLE_UPPER;

		if (parent == NULL) {
			newItem->m_status |= ANY_CHANGE | MARKED;
		}

		newItem->m_layer			= m_layer;
		newItem->m_movieID			= m_movieID;
		newItem->m_updateFrame		= m_updateFrame;
		newItem->m_nameLength		= m_nameLength;

		if (transferSpriteOwnership) {
			// Clone now own the sprite
			newItem->m_deleteRender		= true;
			this->m_deleteRender		= false;
		} else {
			// Original own the sprite
			newItem->m_deleteRender		= false;
		}

		newItem->m_bInternalNode	= m_bInternalNode;
		newItem->m_useParentColor	= m_useParentColor;
		newItem->m_reject			= m_reject;
	}