void RippleNode::draw() { CCNodeRGBA::draw(); ccGLBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); ccDrawInit(); ccDrawColor4B(getColor().r, getColor().g, getColor().b, getOpacity()); glLineWidth(3.f * SCREEN_SCALE()); ccPointSize(3.f * SCREEN_SCALE() * 0.5f); Rig rig; rig.reserve(RIG_VERTEXES()); for(int i = 0; i < RIG_VERTEXES(); i++) { CCPoint vertex = ccpRotateByAngle(CCPointMake(0, 200.f * SCREEN_SCALE()), CCPointZero, M_PI * 2 * i / RIG_VERTEXES() + getRotation()); rig.push_back(vertex); } ccDrawPoly(&rig[0], rig.size(), true); ccDrawPoint(CCPointZero); ccDrawFree(); ccGLBlendFunc(CC_BLEND_SRC, CC_BLEND_DST); CC_INCREMENT_GL_DRAWS(1); }
void Gleed2DLayer::draw() { SpriteBatchNode::draw(); ccDrawInit(); int numItem=_layerInfo->Items->count(); for(int i=0;i<numItem;i++) { Gleed2DItem * item=(Gleed2DItem *)_layerInfo->Items->getObjectAtIndex(i); switch (item->_itemType) { case GLEED2D_ITEM_CIRCLE: { Gleed2DCircleItem * circleItem=(Gleed2DCircleItem *)item; ccDrawColor4B(circleItem->FillColor.r,circleItem->FillColor.g,circleItem->FillColor.b,circleItem->FillColor.a); ccDrawSolidCircle(Point(circleItem->Position.x,-(circleItem->Position.y)) ,circleItem->Radius ,0 ,25 ); }break; case GLEED2D_ITEM_RECTANGLE: { Gleed2DRectangleItem * rectItem=(Gleed2DRectangleItem *)item; ccDrawColor4B(rectItem->FillColor.r,rectItem->FillColor.g,rectItem->FillColor.b,rectItem->FillColor.a); ccDrawSolidRect(Point(rectItem->Position.x,-(rectItem->Position.y)) ,Point(rectItem->Position.x+rectItem->Width,-(rectItem->Position.y)-rectItem->Height) ,Color4F(rectItem->FillColor)); }break; case GLEED2D_ITEM_PATH: { Gleed2DPathItem * pathItem=(Gleed2DPathItem *)item; int numPoint=pathItem->WorldPoints.size()-1; ccDrawColor4B(pathItem->LineColor.r,pathItem->LineColor.g,pathItem->LineColor.b,pathItem->LineColor.a); float old_width; glGetFloatv(GL_LINE_WIDTH,&old_width); glLineWidth(pathItem->LineWidth); for(int i=0;i<numPoint;i++) { ccDrawLine(Point(pathItem->WorldPoints[i].x,-(pathItem->WorldPoints[i].y)) ,Point(pathItem->WorldPoints[i+1].x,-(pathItem->WorldPoints[i+1].y))); } glLineWidth(old_width); }break; default: break; } } ccDrawFree(); }
//virtual void SpellDiagramNode::draw() { CCNode::draw(); float ptSz = 5; ccDrawInit(); ccPointSize(ptSz); glLineWidth(ptSz); //ccDrawColor4B(0, 0, 256, 256); ccDrawColor4F(0.0f, 0.0f, 1.0f, 1.0f); //ccDrawLine(ccp(0,0), ccp(100, 100)); Json::Value& lines = m_spellDiagrams[m_type]["lines"]; for( int i=0; i< lines.size(); i++) { std::string type = lines[i].get("type", "circle").asString(); if( type.compare("circle") == 0 ) { ccDrawCircle(ccp(0,0), size/2, 0, 32, false); }else if( type.compare("bezier") == 0 ) { Json::Value& pts = lines[i]["points"]; ccDrawCubicBezier(ccp(size*pts[0u].asDouble(), size*pts[1].asDouble()), ccp(size*pts[2].asDouble(), size*pts[3].asDouble()), ccp(size*pts[4].asDouble(), size*pts[5].asDouble()), ccp(size*pts[6].asDouble(), size*pts[7].asDouble()), 32); }else if( type.compare("line") == 0 ) { Json::Value& pts = lines[i]["points"]; ccDrawLine(ccp(size*pts[0u].asDouble(), size*pts[1].asDouble()), ccp(size*pts[2].asDouble(), size*pts[3].asDouble()) ); } } /* if( m_type == SD_08_FORTRESS ) { //square shape ccDrawLine(ccp(-size/2 - ptSz/2, size/2), ccp(size/2 + ptSz/2, size/2)); //top ccDrawLine(ccp(-size/2 - ptSz/2, -size/2), ccp(size/2 + ptSz/2, -size/2)); //btm ccDrawLine(ccp(size/2, size/2), ccp(size/2 , -size/2)); //right ccDrawLine(ccp(-size/2, size/2), ccp(-size/2 , -size/2)); //left } if( m_type == SD_06_LESSER_TRIQUESTRA || m_type == SD_11_LEAF || m_type == SD_13_GREATER_TRIQUETRA ) { float topY = tA.y; float botY = tB.y; float midY = 0; CCPoint lcp1 = ccp(size*0.1666, -size*0.2167); CCPoint lcp2 = ccp(size*0.3335, size*0.1233); ccDrawCubicBezier(tC, lcp1, lcp2, tA, 32); //left CCPoint rcp1 = ccp(-size*0.1666, -size*0.2167); CCPoint rcp2 = ccp(-size*0.3335, size*0.1233); ccDrawCubicBezier(tB, rcp1, rcp2, tA, 32); //right CCPoint bcp1 = ccp(-size*0.25, size*0.286); CCPoint bcp2 = ccp( size*0.25, size*0.286); ccDrawCubicBezier(tC, bcp1, bcp2, tB, 32); //bottom } if( m_type == SD_07_COMPASS || m_type == SD_03_ADEPTS_CIRCLE ) { ccDrawLine(ccp(0, size/2), ccp(0, -size/2)); } if( m_type == SD_05_SERPENTS_EYE ) { //shorter verticle line for eye ccDrawLine( seT, seB); } if( m_type == SD_11_LEAF ) { //offset verticle line for leaf ccDrawLine(leT, leB); } if( m_type == SD_09_DRAGONS_EYE ) { //shorter eye CCPoint t = ccp(0, size*0.38); CCPoint b = ccp(0, -size*0.38); CCPoint rcp1 = ccp(size/3,size/5); CCPoint rcp2 = ccp(size/3,-size/5); ccDrawCubicBezier(t, rcp1, rcp2, b, 32); CCPoint lcp1 = ccp(-size/3,size/5); CCPoint lcp2 = ccp(-size/3,-size/5); ccDrawCubicBezier(t, lcp1, lcp2, b, 32); } if( m_type == SD_10_SEEING_EYE ) { //shorter eye ccDrawCubicBezier(ccp(-size/2, 0), ccp(-size/3, size/4), ccp(size/3,size/4), ccp(size/2,0), 32); ccDrawCubicBezier(ccp(-size/2, 0), ccp(-size/3, -size/4), ccp(size/3,-size/4), ccp(size/2,0), 32); } if( m_type == SD_07_COMPASS ) { //horizontal line ccDrawLine(ccp(-size/2, 0), ccp(size/2, 0)); } */ }