Skip to content

Commit 76e9df6

Browse files
committed
fixed mouse over so only one object can be mouse overed
1 parent 9542f05 commit 76e9df6

File tree

8 files changed

+110
-16
lines changed

8 files changed

+110
-16
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
2+
############################################
3+
MULTIPLAYER
4+
############################################
5+
6+
[Client - Server]
7+
8+
-> Start server (create socket)
9+
-> Create buffer listener on socket
10+
11+
**********
12+
{READER}
13+
-> Read string from client
14+
-> Convert from JSON to class
15+
{{{ (Aforementioned class):
16+
{
17+
Header: {
18+
ClientID: ...
19+
Custom: /* Anything the developer would like to know which is separate from the game events */
20+
}
21+
Body: {
22+
deltaPos: [{objectID, vector2}] /* To include changes in objects position (Update) */
23+
}
24+
}
25+
}}}
26+
// The aforementioned class is the same one used for sending data

src/Testing/Level4.kt

Lines changed: 48 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,65 @@
11
package Testing
22

33
import javagameengine.backend.Scene
4+
import javagameengine.backend.input.Input
5+
import javagameengine.components.GameObject
46
import javagameengine.msc.Debug
57
import javagameengine.msc.Vector2
8+
import java.awt.Color
9+
import java.util.logging.Level
610

711
class Level4 : Scene(){
812

13+
var selectedObject : Test? = Test(color = Color.BLUE, level4 = this);
14+
915
init {
16+
1017
Debug.showWhere = true
1118

12-
//UpdateThread.camera.addChild(CameraMovement(4f))
19+
var e = Test(color = Color.BLUE, level4 = this);
20+
e.layer = 0;
21+
components.add(e)
22+
var colors = listOf<Color>(Color.black,Color.CYAN, Color.GREEN,Color.red,Color.yellow)
23+
for(i in 1..3){
24+
components.add(Test(Vector2(i*50F, 50F),color= colors[i],level4=this))
25+
}
26+
27+
}
1328

14-
var player = Player(Vector2(0f,0f));
15-
components.add(player)
16-
components.add(Ground(Vector2(0f,100f)))
1729

30+
open fun setSelected(selected:Test){
31+
selectedObject!!.layer = 0;
32+
selected.layer = 10;
33+
selectedObject = selected
1834
}
1935

2036
}
2137

38+
class Test(pos : Vector2= Vector2(0f,0f),color: Color=Color.darkGray,level4 : Level4) : GameObject(){
39+
40+
var main : Level4? = null;
41+
init {
42+
this.position = pos
43+
this.color = color
44+
main = level4;
45+
}
46+
47+
override fun update() {
48+
super.update()
49+
if(isMouseInside && Input.isMouseDown()){
50+
main!!.setSelected(this);
51+
position = Input.getMousePosition()
52+
}
53+
}
54+
55+
override fun onMouseEntered() {
56+
super.onMouseEntered()
57+
setScale(getScale().multiply(1.05f))
58+
}
59+
60+
override fun onMouseExit() {
61+
super.onMouseEntered()
62+
setScale(getScale().devide(1.05f))
63+
}
64+
}
65+

src/Testing/Player.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ public Player(Vector2 pos) {
6767
@Override
6868
public void onTrigger(Component c) {
6969
super.onTrigger(c);
70-
Debug.log(c.getPosition());
70+
//Debug.log(c.getPosition());
7171
if(c.getTag().equals("Coin")){
7272
switch (Main.level){
7373
case 1:

src/javagameengine/backend/Scene.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -93,16 +93,16 @@ protected void paintComponent(Graphics g) {
9393
private void drawComponents(Graphics g){
9494
g.drawString(fps,10,20);
9595

96-
g.drawString(Input.getMouseWorldPosition().toString(), (int) Input.getMousePosition().getX(), (int) Input.getMousePosition().getY());
96+
//g.drawString(Input.getMouseWorldPosition().toString(), (int) Input.getMousePosition().getX(), (int) Input.getMousePosition().getY());
9797

9898
Graphics2D g1 = (Graphics2D) g;
9999
Vector2 scale = UpdateThread.camera.getScale();
100100
//scale = scale.devide(JavaGameEngine.getWindowSize());
101101
g1.scale(scale.getX(),scale.getY());
102102

103-
float width = g1.getClip().getBounds().height/2;
103+
float width = g1.getClip().getBounds().width/2;
104104
float percentW = 1-scale.getX();
105-
float height = g1.getClip().getBounds().width/2;
105+
float height = g1.getClip().getBounds().height/2;
106106
float percentH = 1-scale.getY();
107107

108108
g1.translate(width*percentW,height*percentH);

src/javagameengine/components/Component.java

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import javagameengine.backend.input.Input;
44
import javagameengine.backend.UpdateThread;
55
import javagameengine.JavaGameEngine;
6+
import javagameengine.msc.Debug;
67
import javagameengine.msc.Vector2;
78

89
import java.awt.*;
@@ -328,8 +329,36 @@ private boolean insideComp(){
328329

329330
float mx = Input.getMousePosition().getX();
330331
float my = Input.getMousePosition().getY();
332+
// if mouse is indide
333+
if(mx > xMin && mx < xMax && my > yMin && my < yMax){
334+
// colla alla objects
335+
LinkedList<Component> components = JavaGameEngine.getScene().components;
336+
Component l = this;
337+
for(Component c : components){
338+
width = c.getScale().getX();
339+
height = c.getScale().getY();
340+
xMin = c.getSpritePosition().getX();
341+
xMax = c.getSpritePosition().getX()+width;
342+
yMin = c.getSpritePosition().getY();
343+
yMax = c.getSpritePosition().getY()+height;
344+
mx = Input.getMousePosition().getX();
345+
my = Input.getMousePosition().getY();
346+
//if mouse is inside component
347+
if(mx > xMin && mx < xMax && my > yMin && my < yMax){
348+
//if components layer is bigger then me mouse is not over
349+
if(c.getLayer()>l.getLayer()){
350+
return false;
351+
}
352+
//if mouse was is inside another we are not over
353+
if(c!=this && c.isMouseInside()){
354+
return false;
355+
}
356+
}
357+
}
358+
return true;
359+
}
360+
return false;
331361

332-
return mx > xMin && mx < xMax && my > yMin && my < yMax;
333362
}
334363

335364
/**
@@ -411,6 +440,7 @@ public void onMousePressed() {
411440
}
412441

413442
public void onMouseEntered() {
443+
//Debug.log("entered "+this);
414444
}
415445

416446
public void onMouseExit() {

src/javagameengine/components/GameObject.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,5 +175,4 @@ public Vector2 movePosition(Vector2 position) {
175175
return dir;
176176
}
177177

178-
179178
}

src/javagameengine/mapeditor/DrawingBoard.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class DrawingBoard : Scene(){
2828
var size : Vector2 = Vector2(50f,50f);
2929

3030
init {
31-
31+
components.add(GameObject())
3232
UpdateThread.camera.addChild(CameraMovement(4f))
3333
}
3434

src/javagameengine/networking/Tcp_server.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package javagameengine.networking;
22

3-
import com.google.gson.Gson;
43

54
import java.io.BufferedReader;
65
import java.io.IOException;
@@ -43,10 +42,6 @@ public BufferData read_client()
4342

4443
reader = new BufferedReader(new InputStreamReader(input));
4544
data = reader.readLine();
46-
47-
Gson json_parser = new Gson();
48-
49-
parsed = json_parser.fromJson(data, BufferData.class);
5045
} catch (IOException e) {
5146
throw new RuntimeException(e);
5247
}

0 commit comments

Comments
 (0)