view webGL/dandy/resources/parse.js~ @ 16:527eac9a7d0b

update
author NOBUYASU Oshiro
date Sat, 17 Jul 2010 12:56:57 +0900
parents a2b31fe50d9d
children 2018ad94fd9b
line wrap: on
line source

function parseXml(gl)
{

    //    loadCharaXml(gl, "./xml/character.xml");//gl.charaにxmlファイルの中身を入れる

    loadEffectXml(gl, "./xml/effect.xml");//gl.effectにxmlファイルの中身をいれる


    loadCharaXml(gl, "./xml/boss.xml");//gl.bossにxmlファイルの中身を入れる

    loadCharaXml(gl, "./xml/titlefont.xml");//gl.effectにxmlファイルの中身をいれる
    loadCharaXml(gl, "./xml/font_pushstart.xml");//gl.effectにxmlファイルの中身をいれる
    loadCharaXml(gl, "./xml/font_superdandy.xml");//gl.effectにxmlファイルの中身をいれる
    loadCharaXml(gl, "./xml/font_0.xml");//gl.effectにxmlファイルの中身をいれる
    loadCharaXml(gl, "./xml/font_1.xml");//gl.effectにxmlファイルの中身をいれる
    loadCharaXml(gl, "./xml/font_2.xml");//gl.effectにxmlファイルの中身をいれる
    loadCharaXml(gl, "./xml/font_3.xml");//gl.effectにxmlファイルの中身をいれる
    loadCharaXml(gl, "./xml/font_4.xml");//gl.effectにxmlファイルの中身をいれる
    loadCharaXml(gl, "./xml/font_5.xml");//gl.effectにxmlファイルの中身をいれる
    loadCharaXml(gl, "./xml/font_6.xml");//gl.effectにxmlファイルの中身をいれる
    loadCharaXml(gl, "./xml/font_7.xml");//gl.effectにxmlファイルの中身をいれる
    loadCharaXml(gl, "./xml/font_8.xml");//gl.effectにxmlファイルの中身をいれる
    loadCharaXml(gl, "./xml/font_9.xml");//gl.effectにxmlファイルの中身をいれる
    loadCharaXml(gl, "./xml/font_hige.xml");//gl.effectにxmlファイルの中身をいれる
    loadCharaXml(gl, "./xml/font_1997yas_k.xml");//gl.effectにxmlファイルの中身をいれる
    loadCharaXml(gl, "./xml/font_gameover.xml");//gl.effectにxmlファイルの中身をいれる

    loadEffectXml(gl, "./xml2/bullets.xml");//gl.effectにxmlファイルの中身をいれる
    loadCharaXml(gl, "./xml2/enemy.xml");//gl.charaにxmlファイルの中身を入れる
    loadCharaXml(gl, "./xml2/player.xml");//gl.charaにxmlファイルの中身を入れる
    loadEffectXml(gl, "./xml2/redbomb_anim.xml");//gl.charaにxmlファイルの中身を入れる
    loadCharaXml(gl, "./xml2/boss1.xml");//gl.charaにxmlファイルの中身を入れる
    loadCharaXml(gl, "./xml2/boss2.xml");//gl.charaにxmlファイルの中身を入れる


    jiki = new makePlayer(gl.chara);//自機の情報をいれておくクラス、グローバル

    gamesyokika();
    
    enemy = [];//敵の情報を入れておく配列を用意、グローバル
    pushEnemy(gl,enemy);//配列enemy[]に敵をpush
    //    pushEnemyBullets(gl, enemy);//配列enemy[]に敵の弾情報をpush

    boss = [];//bossの情報を入れておく配列を用意,グローバル
    pushBoss(gl, boss);//配列boss[]にbossの情報をpush

    bullets = [];//弾の情報を入れておく配列を用意、グローバル
    pushPlayerBullets(gl,bullets);//配列bullets[]に弾をpush

    bomImage = [];//撃破時の爆発の情報をいれておく配列を用意。グローバル
    pushBom(gl, bomImage);//配列 bom[]に爆発をpush

    font = [];//fontを入れておく配列
    pushFont(gl, font);//
    //    ebullets = [];//敵の弾の情報を入れておく配列を用意、グローバル
    //    pushEnemyBullets(gl, ebullets);
}



function loadCharaXml(gl,url)
{
    if(gl.chara == undefined) gl.chara = new Object();
    var xmlChara = new Object();
    xmlChara = parsePanel(url);
    for (var name in xmlChara)
	{
            gl.chara[name] = makeXmlObj(gl, xmlChara[name]);
            gl.chara[name].texture = loadImageTexture(gl, xmlChara[name].image);
	}
}

function loadEffectXml(gl,url)
{
    if(gl.effect == undefined)gl.effect = new Object();
    var xmlChara = new Object();
    xmlChara = parsePanel(url);
    for (var name in xmlChara)
        {
            gl.effect[name] = makeXmlObj(gl, xmlChara[name]);
            gl.effect[name].texture = loadImageTexture(gl, xmlChara[name].image);
        }
}

function loadBossXml(gl,url)
{
    if(gl.boss == undefined)gl.boss = new Object();
    var xmlChara = new Object();
    xmlChara = parsePanel(url);
    for (var name in xmlChara)
        {
            gl.boss[name] = makeXmlObj(gl, xmlChara[name]);
            gl.boss[name].texture = loadImageTexture(gl, xmlChara[name].image);
        }
}

function pushBoss(gl, boss)
{
    /*
    for(var name in gl.boss)
        {
            boss.push(gl.boss[name]);
        }
    */
    boss.push(gl.chara["blackhole"]);
    boss.push(gl.chara["boss2_body"]);
    boss.push(gl.chara["boss2_lefthand"]);
    boss.push(gl.chara["boss2_rightshoulder"]);
    boss.push(gl.chara["boss_orgun"]);
    boss.push(gl.chara["boss2_left_s_gird"]);
    boss.push(gl.chara["boss2_r_shoulderup"]);
    boss.push(gl.chara["boss2_leftbattery"]);
    boss.push(gl.chara["boss_corpse"]);
    boss.push(gl.chara["boss_4"]);
    boss.push(gl.chara["boss2_brokenhatch"]);
    boss.push(gl.chara["boss2_righthand"]);
    boss.push(gl.chara["boss2_openbattery"]);
    boss.push(gl.chara["boss2_battery"]);
    boss.push(gl.chara["boss2_rightarm_b"]);
    boss.push(gl.chara["boss2_leftpalm"]);
    boss.push(gl.chara["boss2_left_s_up"]);
    boss.push(gl.chara["boss2_leftshoulder"]);
    boss.push(gl.chara["boss3_body"]);
    boss.push(gl.chara["boss2_leftarm"]);
    boss.push(gl.chara["boss2_dummy"]);
    boss.push(gl.chara["boss2_rightpalm"]);
    boss.push(gl.chara["boss2_rightarm"]);
}


function pushEnemy(gl, enemy)
{
    enemy.push(gl.chara["meteo"]);
    enemy.push(gl.chara["enemy_greencrab"]);
    enemy.push(gl.chara["enemy_plane"]);
    enemy.push(gl.chara["gunbattery"]);
    enemy.push(gl.effect["enemy_redbullet"]);
    enemy.push(gl.effect["enemy_bluebullet"]);
    enemy.push(gl.effect["tama_s_01"]);
    enemy.push(gl.effect["tama_s_02"]);
    enemy.push(gl.effect["tama_s_03"]);
    enemy.push(gl.effect["tama_s_04"]);
    enemy.push(gl.effect["tama_l_02"]);
    enemy.push(gl.effect["tama_l_03"]);
    enemy.push(gl.chara["enemy_lightning"]);
    enemy.push(gl.chara["enemy_lasersplosh.001"]);
    enemy.push(gl.chara["enemy_lasersplosh.002"]);
    enemy.push(gl.chara["enemy_lasersplosh.003"]);
    enemy.push(gl.chara["missile"]);
    enemy.push(gl.chara["spacefish"]);

}



function pushPlayerBullets(gl,bullets)
{
    bullets.push(gl.effect["bluebarrier"]);
    bullets.push(gl.effect["lockon_sight"]);
    bullets.push(gl.effect["bulebullet_right"]);
    bullets.push(gl.effect["bulebullet_left"]);
    bullets.push(gl.effect["redbullet"]);
    bullets.push(gl.effect["greenbullet"]);
    bullets.push(gl.effect["lonlaser"]);
}

function pushBom(gl, bomImage)
{
    bomImage.push(gl.effect["redbomb_anim_0"]);
    bomImage.push(gl.effect["redbomb_anim_1"]);
    bomImage.push(gl.effect["redbomb_anim_2"]);
    bomImage.push(gl.effect["redbomb_anim_3"]);
    bomImage.push(gl.effect["redbomb_anim_4"]);
    bomImage.push(gl.effect["redbomb_anim_5"]);
    bomImage.push(gl.effect["redbomb_anim_6"]);
    bomImage.push(gl.effect["redbomb_anim_7"]);
}

function pushEnemyBullets(gl, ebullets)
{
    ebullets.push(gl.effect["enemy_redbullet"]);
    ebullets.push(gl.effect["enemy_bluebullet"]);
    ebullets.push(gl.effect["tama_s_01"]);
    ebullets.push(gl.effect["tama_s_02"]);
    ebullets.push(gl.effect["tama_s_03"]);
    ebullets.push(gl.effect["tama_s_04"]);
    ebullets.push(gl.effect["tama_l_02"]);
    ebullets.push(gl.effect["tama_l_03"]);
    ebullets.push(gl.effect["tama_l_04"]);
}

function pushFont(gl, font)
{
    font.push(gl.chara["font_0"]);
    font.push(gl.chara["font_1"]);
    font.push(gl.chara["font_2"]);
    font.push(gl.chara["font_3"]);
    font.push(gl.chara["font_4"]);
    font.push(gl.chara["font_5"]);
    font.push(gl.chara["font_6"]);
    font.push(gl.chara["font_7"]);
    font.push(gl.chara["font_8"]);
    font.push(gl.chara["font_9"])
    font.push(gl.chara["titlefont"]);
    font.push(gl.chara["font_pushstart"]);
    font.push(gl.chara["font_superdandy"]);
    font.push(gl.chara["font_hige"]);
    font.push(gl.chara["font_font_1997yas_k"]);
    font.push(gl.chara["font_gameover"]);
}

function PutSpriteF(ctx, x, y, scale, glObj)
{

    // setup VBOs
    ctx.enableVertexAttribArray(0);
    ctx.enableVertexAttribArray(1);
    ctx.enableVertexAttribArray(2);
				
    ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.vertexObject);
    ctx.vertexAttribPointer(2, 3, ctx.FLOAT, false, 0, 0);
    ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.normalObject);
    ctx.vertexAttribPointer(0, 3, ctx.FLOAT, false, 0, 0);
    
    ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.texCoordObject);
    ctx.vertexAttribPointer(1, 2, ctx.FLOAT, false, 0, 0);
				
    ctx.bindBuffer(ctx.ELEMENT_ARRAY_BUFFER, glObj.indexObject);

    // generate the model-view matrix
    var mvMatrix = new CanvasMatrix4();
    mvMatrix.scale(scale, scale, scale);
    mvMatrix.translate( x, y, 10);
    
    // construct the normal matrix from the model-view matrix
    var normalMatrix = new CanvasMatrix4(mvMatrix);
    normalMatrix.invert();
    normalMatrix.transpose();
    ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_normalMatrix"), false, normalMatrix.getAsWebGLFloatArray());
    
    // construct the model-view * projection matrix
    var mvpMatrix = new CanvasMatrix4(mvMatrix);
    mvpMatrix.multRight(ctx.perspectiveMatrix);
    ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_modelViewProjMatrix"), false, mvpMatrix.getAsWebGLFloatArray());
    
    ctx.bindTexture(ctx.TEXTURE_2D, glObj.texture);
    ctx.drawElements(ctx.TRIANGLES, glObj.numIndices, ctx.UNSIGNED_SHORT, 0);


}

function PutSpriteLock(ctx, x, y, scale, angle,  glObj)
{

    // setup VBOs
    ctx.enableVertexAttribArray(0);
    ctx.enableVertexAttribArray(1);
    ctx.enableVertexAttribArray(2);
				
    ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.vertexObject);
    ctx.vertexAttribPointer(2, 3, ctx.FLOAT, false, 0, 0);
    ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.normalObject);
    ctx.vertexAttribPointer(0, 3, ctx.FLOAT, false, 0, 0);
    
    ctx.bindBuffer(ctx.ARRAY_BUFFER, glObj.texCoordObject);
    ctx.vertexAttribPointer(1, 2, ctx.FLOAT, false, 0, 0);
				
    ctx.bindBuffer(ctx.ELEMENT_ARRAY_BUFFER, glObj.indexObject);

    // generate the model-view matrix
    var mvMatrix = new CanvasMatrix4();
    mvMatrix.scale(scale, scale, scale);
    mvMatrix.rotate(angle, 0, 0, 1);
    mvMatrix.translate( x, y, 10);
    
    // construct the normal matrix from the model-view matrix
    var normalMatrix = new CanvasMatrix4(mvMatrix);
    normalMatrix.invert();
    normalMatrix.transpose();
    ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_normalMatrix"), false, normalMatrix.getAsWebGLFloatArray());
    
    // construct the model-view * projection matrix
    var mvpMatrix = new CanvasMatrix4(mvMatrix);
    mvpMatrix.multRight(ctx.perspectiveMatrix);
    ctx.uniformMatrix4fv(ctx.getUniformLocation(ctx.program, "u_modelViewProjMatrix"), false, mvpMatrix.getAsWebGLFloatArray());
    
    ctx.bindTexture(ctx.TEXTURE_2D, glObj.texture);
    ctx.drawElements(ctx.TRIANGLES, glObj.numIndices, ctx.UNSIGNED_SHORT, 0);
 
}