Skip to content

Commit

Permalink
linked the android part to the code with basic graphics
Browse files Browse the repository at this point in the history
  • Loading branch information
Natanel Rudyuklakir committed Jan 1, 2023
1 parent 45d5230 commit 56496d5
Show file tree
Hide file tree
Showing 37 changed files with 1,343 additions and 16 deletions.
2 changes: 2 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ android {
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
}

Expand Down
1 change: 1 addition & 0 deletions app/google-services.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"project_info": {
"project_number": "786174912789",
"firebase_url": "https://chess-firebase-711c4-default-rtdb.europe-west1.firebasedatabase.app",
"project_id": "chess-firebase-711c4",
"storage_bucket": "chess-firebase-711c4.appspot.com"
},
Expand Down
5 changes: 3 additions & 2 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.chessfirebase">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<application
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
Expand All @@ -12,7 +13,7 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.ChessFirebase"
tools:targetApi="31">
tools:targetApi="29">
<activity
android:name=".GameAvtivity"
android:exported="false" />
Expand Down
71 changes: 70 additions & 1 deletion app/src/main/java/com/example/chessfirebase/GameAvtivity.java
Original file line number Diff line number Diff line change
@@ -1,14 +1,83 @@
package com.example.chessfirebase;

import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;

import android.Manifest;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.FrameLayout;

public class GameAvtivity extends AppCompatActivity {
import com.example.chessfirebase.chessClasses.BoardCell;
import com.example.chessfirebase.chessClasses.Piece;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;

public class GameAvtivity extends AppCompatActivity {
private static final int REQUEST_READ_PHONE_STATE = 1;
String roomName;
private FirebaseAuth mAuth;
private FirebaseDatabase database;
private boolean firebaseConn = false;
private DatabaseReference player;
FrameLayout frmview;
customGameView cgv;
socketPlayer p;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_game_avtivity);
StrictMode.ThreadPolicy gfgPolicy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(gfgPolicy);
Intent i=getIntent();
mAuth=FirebaseAuth.getInstance();
frmview = findViewById(R.id.cgv);

cgv = new customGameView(GameAvtivity.this, frmview.getWidth(), frmview.getHeight());
frmview.addView(cgv);
Piece.size=1080.0f/8.0f;
BoardCell.size=Piece.size;
if(i.getBooleanExtra("FireBase",false)) {
firebaseConn = true;
roomName = i.getExtras().getString("roomName");
//create a firebasePlayer
}else{
p=new socketPlayer();
Thread th=new Thread(p);
th.start();

try {
Thread.sleep(250);
} catch (InterruptedException e) {
e.printStackTrace();
}
cgv.start(p.getBoard());
cgv.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
p.getBoard().psuedoClickListener(event.getX(),event.getY());
return false;
}
});
}


}
@Override
public void onWindowFocusChanged(boolean hasFocus) {
super.onWindowFocusChanged(hasFocus);
if ( cgv == null && hasFocus) {
cgv = new customGameView(GameAvtivity.this, frmview.getWidth(), frmview.getHeight());
frmview.addView(cgv);
cgv.start(p.getBoard());
}
}
}
30 changes: 22 additions & 8 deletions app/src/main/java/com/example/chessfirebase/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@
import android.preference.PreferenceManager;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
Expand All @@ -31,7 +33,7 @@ public class MainActivity extends AppCompatActivity {
private TextView tvName;
private TextView tvElo;
private FirebaseAuth mAuth;
private Button btRooms;
private Button btRooms,btQPair;
private FirebaseDatabase database;
private DatabaseReference player;
@Override
Expand All @@ -43,23 +45,32 @@ protected void onCreate(Bundle savedInstanceState) {//TODO: add all the buttons
tvName=findViewById(R.id.tvName);
tvElo=findViewById(R.id.tvElo);
btRooms=findViewById(R.id.btBrowseRooms);
btQPair=findViewById(R.id.btQuickPair);
String name=FirebaseAuth.getInstance().getCurrentUser().getDisplayName();
tvName.setText(name);
tvElo.setText(sharedPreferences.getInt("Elo",800)+"");
mAuth = FirebaseAuth.getInstance();
database=FirebaseDatabase.getInstance();
player= database.getReference("players/"+name);
player.setValue(name+":"+sharedPreferences.getInt("Elo",800));//set the value by default to the name and rating so that we read
player= database.getReference("players/"+mAuth.getUid()+":"+name);
player.setValue(sharedPreferences.getInt("Elo",800));//set the value by default to the name and rating so that we read
//it at the start and know what to display
btRooms.setOnClickListener(new View.OnClickListener() {
btRooms.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
btRooms.setEnabled(false);
startActivity(new Intent(MainActivity.this,RoomBrowse.class));
readFromDB();
MainActivity.this.finish();
}
});
//readFromDB();
btQPair.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent u=new Intent(MainActivity.this,GameAvtivity.class);
u.putExtra("Firebase",false);
startActivity(u);
MainActivity.this.finish();
}
});
}
private String readFromFile(Context context, String fileName) {

Expand Down Expand Up @@ -107,11 +118,12 @@ public void signOut(View v){
this.finish();
}

public void readFromDB(){
public void checkForFailure(){
player.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {//occurs when another player joins the room
public void onDataChange(@NonNull DataSnapshot snapshot) {
//start an activity to roomBrowse

startActivity(new Intent(MainActivity.this,RoomBrowse.class));
MainActivity.this.finish();
}
Expand All @@ -120,6 +132,8 @@ public void onDataChange(@NonNull DataSnapshot snapshot) {//occurs when another
public void onCancelled(@NonNull DatabaseError error) {
//error
//TODO: try and handle the error (think about how to handle)
btRooms.setEnabled(true);
Toast.makeText(MainActivity.this,"Error creating player",Toast.LENGTH_LONG).show();
}
});
}
Expand Down
86 changes: 83 additions & 3 deletions app/src/main/java/com/example/chessfirebase/RoomBrowse.java
Original file line number Diff line number Diff line change
@@ -1,19 +1,29 @@
package com.example.chessfirebase;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.text.InputType;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Toast;

import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DataSnapshot;
import com.google.firebase.database.DatabaseError;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import com.google.firebase.database.ValueEventListener;

import java.util.ArrayList;
import java.util.List;
Expand All @@ -28,6 +38,7 @@ public class RoomBrowse extends AppCompatActivity {

FirebaseDatabase db;
DatabaseReference roomRef;
DatabaseReference player;
FirebaseAuth mAuth;
@Override
protected void onCreate(Bundle savedInstanceState) {
Expand All @@ -36,14 +47,13 @@ protected void onCreate(Bundle savedInstanceState) {

mAuth=FirebaseAuth.getInstance();
db=FirebaseDatabase.getInstance();

player=db.getReference(mAuth.getUid());
name=mAuth.getCurrentUser().getDisplayName();

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
lv=findViewById(R.id.lvRoomView);
btCreateRoom=findViewById(R.id.btCreateRoom);

roomList=new ArrayList<>();

btCreateRoom.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Expand All @@ -56,17 +66,87 @@ public void onClick(View v) {
@Override
public void onClick(DialogInterface dialog, int which) {
roomName=et.getText().toString();
btCreateRoom.setEnabled(false);
}
});
bldr.setNegativeButton("Cancel" ,new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
btCreateRoom.setEnabled(true);
}
});
bldr.show();
roomRef=db.getReference("rooms/"+roomName+"/white");
readFromDB();
roomRef.setValue(mAuth.getCurrentUser().getDisplayName()+":"+sharedPreferences.getInt("Elo",-100));
}
});
lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
roomName=roomList.get(position);
roomRef=db.getReference("rooms/"+roomName+"/black");
readFromDB();
roomRef.setValue(mAuth.getCurrentUser().getDisplayName()+":"+sharedPreferences.getInt("Elo",-100));
//possible to add random color pick for the room creation
/*roomRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.hasChild("/white")){
roomRef=db.getReference("rooms/"+roomName+"/black");
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});*/
}
});
updateRoomList();
}


public void readFromDB(){//constant;y read from db to update the list
roomRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {//occurs when another player joins the room
//
//start an activity to roomBrowse
startActivity(new Intent(getApplicationContext(),GameAvtivity.class).putExtra("roomName",roomName));
}

@Override
public void onCancelled(@NonNull DatabaseError error) {
//error
//TODO: try and handle the error (think about how to handle)
Toast.makeText(getApplicationContext(),"error",Toast.LENGTH_LONG).show();
btCreateRoom.setEnabled(true);
}
});
}
public void updateRoomList(){
roomRef=db.getReference("rooms");
roomRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
roomList.clear();
Iterable<DataSnapshot> it=snapshot.getChildren();
for(DataSnapshot sn:it){
roomList.add(sn.getKey());
ArrayAdapter<String> adapter=new ArrayAdapter<>(RoomBrowse.this, android.R.layout.simple_list_item_1);
lv.setAdapter(adapter);
}
}

@Override
public void onCancelled(@NonNull DatabaseError error) {

}
});
}

}
Loading

0 comments on commit 56496d5

Please sign in to comment.