DungeonCleanerGame.DungeonCollissions.java Source code

Java tutorial

Introduction

Here is the source code for DungeonCleanerGame.DungeonCollissions.java

Source

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package DungeonCleanerGame;

import DevRandEnginePkg.ConstantEngine;
import DevRandEnginePkg.DevRandEngine;
import DungeonCleanerGame.GameMapPkg.GameMap;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.physics.box2d.Body;
import com.badlogic.gdx.physics.box2d.Contact;
import com.badlogic.gdx.physics.box2d.ContactImpulse;
import com.badlogic.gdx.physics.box2d.ContactListener;
import com.badlogic.gdx.physics.box2d.Fixture;
import com.badlogic.gdx.physics.box2d.Manifold;
import com.badlogic.gdx.physics.box2d.WorldManifold;

/**
 *
 * @author ArclorenSarth
 */
public class DungeonCollissions implements ContactListener {
    private static final DevRandEngine eng = DevRandEngine.getInstance();
    private static final ConstantEngine cons = eng.gameConstant();
    private static final short gP = cons.getShortConstant("GROUP_PLAYER");
    private static final short gPW = cons.getShortConstant("GROUP_PLAYER_WEAPON");
    private static final short gM = cons.getShortConstant("GROUP_MONSTER");
    private static final short gMV = cons.getShortConstant("GROUP_MONSTER_VISION");
    private static final short gB = cons.getShortConstant("BULLET");
    private final CombatManager combat;
    private final GameMap gmap;
    int numPlyHits;
    int numMonHits;
    int numMonDetect;

    public DungeonCollissions(CombatManager combat, GameMap gmap) {
        this.combat = combat;
        this.gmap = gmap;
        numPlyHits = 0;
        numMonHits = 0;
    }

    @Override
    public void beginContact(Contact contact) {
        Fixture fixA = contact.getFixtureA();
        Fixture fixB = contact.getFixtureB();
        Body Player;
        Body Monster;
        if ((fixA.getFilterData().groupIndex == gPW && fixB.getFilterData().groupIndex == gM)
                || (fixA.getFilterData().groupIndex == gM && fixB.getFilterData().groupIndex == gPW)) {
            ++numPlyHits;
            eng.gameRender().addDebugString("PlayerHits = " + numPlyHits, 1);
            if (fixB.getFilterData().groupIndex == gM) {
                Monster = fixB.getBody();
                Player = fixA.getBody();
            } else {
                Monster = fixA.getBody();
                Player = fixB.getBody();
            }
            WorldManifold mani = contact.getWorldManifold();
            combat.computeStrikeToMonster(Player, Monster, mani);
        } else if ((fixA.getFilterData().groupIndex == gP && fixB.getFilterData().groupIndex == gM)
                || (fixA.getFilterData().groupIndex == gM && fixB.getFilterData().groupIndex == gP)) {
            ++numMonHits;
            eng.gameRender().addDebugString("MonsterHits = " + numMonHits, 2);
            if (fixB.getFilterData().groupIndex == gP) {
                Player = fixB.getBody();
                Monster = fixA.getBody();
            } else {
                Player = fixA.getBody();
                Monster = fixB.getBody();
            }
            WorldManifold mani = contact.getWorldManifold();
            combat.computeStrikeToPlayer(Monster, Player, mani);
        } else if ((fixA.getFilterData().groupIndex == gP && fixB.getFilterData().groupIndex == gMV)
                || (fixA.getFilterData().groupIndex == gMV && fixB.getFilterData().groupIndex == gP)) {
            ++numMonDetect;
            eng.gameRender().addDebugString("MonsterDetection = " + numMonDetect, 3);
            if (fixB.getFilterData().groupIndex == gP) {
                Player = fixB.getBody();
                Monster = fixA.getBody();
            } else {
                Player = fixA.getBody();
                Monster = fixB.getBody();
            }

            int monsterID = (Integer) Monster.getUserData();
            gmap.getEnemy(monsterID).getIA().actAlert(Player);

        } else if ((fixA.getFilterData().groupIndex == gP && fixB.getFilterData().groupIndex == gB)
                || (fixA.getFilterData().groupIndex == gB && fixB.getFilterData().groupIndex == gP)) {
            if (fixB.getFilterData().groupIndex == gP) {
                Player = fixB.getBody();
                Monster = fixA.getBody();
            } else {
                Player = fixA.getBody();
                Monster = fixB.getBody();
            }
            WorldManifold mani = contact.getWorldManifold();
            combat.computeStrikeToPlayer(Monster, Player, mani);

            //SE 
            //eng.gamePhysics().getWorld().
        }
    }

    @Override
    public void endContact(Contact contact) {

    }

    @Override
    public void postSolve(Contact contact, ContactImpulse impulse) {

    }

    @Override
    public void preSolve(Contact contact, Manifold oldManifold) {

    }
}