text:
<file_sep>
var NumberOfSquares = 6;
var colors = ColorGeneratorMachine(NumberOfSquares);
var pickedColor = PickColor();
var RGB = document.getElementById("title");
RGB.textContent = pickedColor ;

var WelcomeTable = document.querySelector("#WelcomeTable");

var squares = document.querySelectorAll(".square");
var MessageDisplay = document.querySelector("#Message");

var Easybtn = document.querySelector("#EasyBtn");
var HardBtn = document.querySelector("#HardBtn");
var Reset = document.querySelector("#Reset");

Easybtn.addEventListener("click",function(){

	HardBtn.classList.remove("selected");
	Easybtn.classList.add("selected");
	NumberOfSquares=3;
	 ResetProgram();
});

HardBtn.addEventListener("click",function(){

	HardBtn.classList.add("selected");
	Easybtn.classList.remove("selected");
	NumberOfSquares=6;
	ResetProgram();
});

Reset.addEventListener("click",function(){

	HardBtn.classList.remove("selected");
	EasyBtn.classList.remove("selected");
	ResetProgram();

});

for(var i =0; i < squares.length;i++){
	squares[i].style.backgroundColor= colors[i];

	squares[i].addEventListener("click",function(){

		// Take the color of this square and compare to picked Color
		var clickedColor = this.style.backgroundColor	 ;
		if(clickedColor === pickedColor){
			MessageDisplay.textContent = "Congratulation !!!";
			ColorChangeWinning(pickedColor);
		}
		else{
			MessageDisplay.textContent = "Try Again !!!";
			this.style.backgroundColor	 = "#232323"
		}

	});

}

function ColorChangeWinning(Color) {
	for(var i =0; i < colors.length;i++){
			squares[i].style.backgroundColor = Color
	}
	WelcomeTable.style.backgroundColor = pickedColor;

}

function PickColor(){

	var random  = Math.floor(Math.random()*colors.length);
	return colors[random];
}

function ColorGeneratorMachine(size){

	var colors = [];

	for( var i =0 ;i < size ;i++){
		colors.push(ColorGenerator());
	}

	return colors;
}

function ColorGenerator(){

	var red = Math.floor(Math.random()*255+1)
	var blue = Math.floor(Math.random()*255+1)
	var green = Math.floor(Math.random()*255+1)

	return "rgb(" + red + ", " + blue + ", " + green + ")";
}

function ResetProgram() {

	colors = ColorGeneratorMachine(NumberOfSquares)
	pickedColor = PickColor();
	RGB.textContent = pickedColor ;
	MessageDisplay.textContent = "";
	WelcomeTable.style.backgroundColor = "steelblue";

	for(var i =0; i < squares.length;i++) {

		if(colors[i])
			squares[i].style.backgroundColor= colors[i];
		else
			squares[i].style.backgroundColor = "#232323";
	}

}

<file_sep># Personal_website
My personal_website

languages: Markdown JavaScript


text:
<file_sep>#!/bin/bash
### Desenvolvido por <NAME>
### <EMAIL>
### http://www.sysoplinux.com.br
HR_M1="0000"
HR_M2="0800"
HR_INI="1200"
HR_FIM="1330"
HR_N1="1800"
HR_N2="2359"
HR=$(date +%H%M)
FW="FIREWALL.SH"
for R in facebook twitter
do
	if [ "$HR" -ge "$HR_M1" ] && [ "$HR" -lt "$HR_M2" ] ; then
		L=`cat $FW | grep -n "string \"$R" | awk -F":" '{print $1}'`
		T=$(cat $FW | grep "string \"$R" | awk -F" " {'print $11'})
		if [ "$T" == "DROP" ] ; then
			sed -i "$L s/DROP/ACCEPT/" $FW
			echo $FW
			$FW restart
		elif exit ; then
			exit
		fi
	elif [ "$HR" -ge "$HR_M2" ] && [ "$HR" -lt "$HR_INI" ] ; then
		L=`cat $FW | grep -n "string \"$R" | awk -F":" '{print $1}'`
		T=$(cat $FW | grep "string \"$R" | awk -F" " {'print $11'})
		if [ "$T" == "ACCEPT" ] ; then
			sed -i "$L s/ACCEPT/DROP/" $FW
			echo $FW
			$FW restart
		elif exit ; then
			exit
		fi
	elif [ "$HR" -ge "$HR_INI" ] && [ "$HR" -lt "$HR_FIM" ] ; then
		L=`cat $FW | grep -n "string \"$R" | awk -F":" '{print $1}'`
		T=$(cat $FW | grep "string \"$R" | awk -F" " {'print $11'})
		if [ "$T" == "DROP" ] ; then
			sed -i "$L s/DROP/ACCEPT/" $FW
			echo $FW
			$FW restart
		elif exit ; then
			exit
		fi
	elif [ "$HR" -ge "$HR_FIM" ] && [ "$HR" -lt "$HR_N1" ] ; then
		L=`cat $FW | grep -n "string \"$R" | awk -F":" '{print $1}'`
		T=$(cat $FW | grep "string \"$R" | awk -F" " {'print $11'})
		if [ "$T" == "ACCEPT" ] ; then
			sed -i "$L s/ACCEPT/DROP/" $FW
			echo $FW
			$FW restart
		elif exit ; then
			exit
		fi
	elif [ "$HR" -ge "$HR_N1" ] && [ "$HR" -lt "$HR_N2" ] ; then
		L=`cat $FW | grep -n "string \"$R" | awk -F":" '{print $1}'`
		T=$(cat $FW | grep "string \"$R" | awk -F" " {'print $11'})
		if [ "$T" == "DROP" ] ; then
			sed -i "$L s/DROP/ACCEPT/" $FW
			echo $FW
			$FW restart
		elif exit ; then
			exit
		fi
	fi
done
<file_sep># firewall_redesocial
# Para meu amigos Administradores ou entusiastas em Servidores Linux -- Automatizando liberação e bloqueio de
# determinados conteúdos por horário usando Shell Script Cron e regras Netfilter Iptables. A princípio parace
# simples mas vai ajudar muito esse conteúdo que desenvolvi, pois o netfilter abre o pacote e verifica o seu conteúdo
# usando essas regas de alto nível, rápido e eficiente.
# Quero compartilhar com todos e qualquer idéia ou ajuda será bem vinda para melhorar o código. Dúvidas é só perguntar.
#
###### Usar o cront para executar este script nos horarios 0800 1200 1330 1800 horas - outros horarios que preferir
# só alterar dentro do script e em FOR, o que se quer liberar/bloquear. ######
# OBS: Não esquecer de mudar o caminho da VAR FW / script Firewall.

 ###### Usar estas regras Mangle no seu Script de Firewall devidamente bem alocado, para mais chaves de bloqueio
 # repetir a linha e informar conteudo do pacote ######

iptables -A INPUT -m string --string "facebook" --algo bm -j DROP
iptables -A INPUT -m string --string "twitter" --algo bm -j DROP
iptables -A INPUT -m string --string "X-Kazaa" --algo bm -j DROP
iptables -A INPUT -m string --string "torrent" --algo bm -j DROP

branch_name: refs/heads/master

languages: Markdown Shell

repo_language: Markdown


text:
<file_sep>package com.base01;

// 4.1.5 Java程序初始化的顺序是怎样的？

class Base {

    static {
        System.out.println("Base static block");
    }

    public Base() {
        System.out.println("Base constructor");
    }

    {
        System.out.println("Base block");
    }

}

public class Derived extends Base {

    static {
        System.out.println("Derived static block");
    }

    public Derived() {
        System.out.println("Derived constructor");
    }

    {
        System.out.println("Derived block");
    }

    public static void main(String[] args) {
        new Derived();

        // 我的答案：

        // 父类静态方代码块
        // 子类静态方代码块

        // 父类非静态代码块，父类构造方法

        // 子类非静态代码块，子类构造函数

        /**
         * 答案：
         *
         * Base static block
         * Derived static block
         *
         * Base block
         * Base constructor
         *
         * Derived block
         * Derived constructor
         */
    }

}
<file_sep>package com.base01;

public class Obj01 implements Cloneable {

    private int anInt = 0;

    public int getAnInt() {
        return anInt;
    }

    public void setAnInt(int anInt) {
        this.anInt = 666;
    }

    @Override
    protected Object clone() throws CloneNotSupportedException {
        return super.clone();
    }

    @Override
    public String toString() {
        return anInt + "";
    }
}

repo_language: Java


text:
<file_sep># pemweb
pemweb


text: <file_sep># ionic-ps-fb

repo_name: fabbau/ionic-ps-fb


text:
<repo_name>mukulchn/REST-API-starter<file_sep>/readme.md
# REST API Starter project specification

## Introduction

The REST API Starter project is a hands-on task to apply the knowledge gained during the previous days of the MEP pathway.

The project touches on modern teck stack of javascript, nodeJs, REST, Microservices, JSON, TDD, testing using JEST and builds a project using REST/ Microservices architecture pattern.

Part 1 is a try to acquaint the developer with version control (git), day-to-day and some advanced git commands, comfort at applying this version control process, branching, reverting etc.

Part 2 is a try to touch of docker, containers, jenkins, devops, webhooks, GCP, GKE, service accounts etc. It's quite lot in a short time but a very good attempt to learn and adopt.

## Part 1 - Installation

To initialise the project you will need to install several dependencies, open up a git bash terminal from the repo directory and run the command:

~~~ bash
$ npm install
~~~

## Running the application

In order to run the application, from your git bash terminal run:

~~~ bash
$ npm start
API Listening on http://localhost:8080
~~~

## Stopping the application

In order to stop the application from the git bash terminal that is running the server press ``CTRL`` + ``C``

## Running on a different port

To start the application on an alternative port to the default (8080) from your git bash terminal run:

~~~ bash
$ PORT=9090 npm start
API Listening on http://localhost:9090
~~~

## Functionality

n.b: For these commands anything surrounded by angled braces <> needs to be replaced by you

#### CREATE

To create the example product run the command:

~~~ bash
$ curl -s -X POST http://localhost:8080/product/create -H 'Content-type:application/json' -d '{"name":"example product", "description":"this is an example", "price":9.99}'
~~~

#### READ (all)

To read all of the products run the command:

~~~ bash
$ curl -s -X GET http://localhost:8080/product/read
~~~

#### READ (one)

To read one of the products run the command:

~~~ bash
$ curl -s -X GET http://localhost:8080/product/read/<id>
~~~

#### UPDATE

To update one of the products run the command:

~~~ bash
$ curl -s -X PUT http://localhost:8080/product/update/<id> -H 'Content-type:application/json'  -d '{"name":"updated product", "description":"its brand new", "price":99.99}'
~~~

#### DELETE

To delete one of the products run the command:

~~~ bash
$ curl -s -X DELETE http://localhost:8080/product/delete/<id>
~~~

### Testing

To run tests, from the terminal run the command:

~~~ bash
$ npm test
~~~

### Quick Git cheatsheet

~~~ bash
  git commit -m "MK: exercise 1,2,3"
  git config --global user.email "<EMAIL>"
  git config --global user.name "mukulchn"
  git commit -m "MK: exercise 1,2,3"
  git push origin main
  ssh-keygen -t rsa -f ~/.ssh/id_rsa <<< y
  cat ~/.ssh/id_rsa.pub
~~~

## Part 2 - Dockerisation of an application

Install docker:

~~~ bash
    sudo apt-get update
    sudo apt install curl -y
    curl https://get.docker.com | sudo bash
    id
    sudo usermod -aG docker $(whoami)
    id
    whoami
    id
~~~

You will need to log off and log on back to take the group change take place.

### Write Dockerfile, build image and run locally with docker

In order to build docker image and run the application, from your terminal run:

~~~ bash
   touch Dockerfile
   ls -ltr
   vi Dockerfile
   touch .dockerignore
   vi .dockerignore
   docker build -t nodeapp .
   sudo usermod -aG docker $(whoami)
   id
   docker build -t nodeapp .
   exit
   id
   cd REST-API-starter/
   docker build -t nodeapp .
   docker images
   docker run -d -p 8080:8080 --name nodeapp-ins nodeapp

   vi package.json
   docker ls
   docker ps
   docker images
   docker rmi nodeapp
   docker ps -a
   docker rm nodeapp-ins
   docker ps -a
   docker rmi nodeapp
   docker images
   ~~~

### Creating build script and configure an app

This step is just to create a bash script and a config activity.
check build.sh file for this, nothing fancy here.

### Setting up Jenkins and pipeline and add jenkins user to docker group

This step is to download and install a Jenkins server on your local machine, Initialize a basic Jenkins configuration, Create an SCM pipeline polling latest changes from your Git server, Configure your pipeline to run tests and build an application on every Git commit.

~~~ bash
   touch install_jenkins.sh
  ls -ltr
  chmod 755 install_jenkins.sh
  ls -ltr
  vi install_jenkins.sh
  ./install_jenkins.sh
  sudo usermod -aG docker jenkins
  sudo su - jenkins
  sudo systemctl restart jenkins
~~~

Check Jenkinsfile for pipeline details.

#### Configure your pipeline to run tests and build an application on every Git commit.
This step required setting up webhook in github repo, so goto  repo>>settings>>webhooks and paste below (IP will change for you)
http://172.16.58.3:8080/github-webhook/
Content-Type: application/json

This also requires the jenkins pipeline flag set for
[]GitHub hook trigger for GITScm polling

### Building docker image in Jenkins

This step is to Modify an existing Jenkins pipeline to build Docker image of an application on every commit to the main/master branch.

Check Jenkinsfile for pipeline details.

### Publishing a docker image into GCP GCR

This step requird a Service Account to be created in GCP IAM.
Roles:
Storage Object Admin,
Storage Admin

~~~ bash
  gcloud auth activate-service-account <EMAIL> --key-file=training-325404-d4b1ebf9fa72.json
  docker tag nodeapp:v10 gcr.io/training-325404/nodeapp-mukul:v10
  docker push gcr.io/training-325404/nodeapp-mukul:v10
~~~

Check Jenkinsfile for more details.

### Push a docker image from Jenkins into GCP GCR

added service account <EMAIL> to Jenkins as credential >> Secret file

added below command to Jenkins file, check Jenkinsfile for more details.
~~~ bash
  gcloud auth activate-service-account <EMAIL> --key-file=training-325404-d4b1ebf9fa72.json
  docker tag nodeapp:v10 gcr.io/training-325404/nodeapp-mukul:v10
  docker push gcr.io/training-325404/nodeapp-mukul:v10
~~~

### Creating GCP GKE cluster

Below command I ran from cloud shell to create GKE cluster (dont want to use user auth on VM)

~~~ bash
gcloud container clusters create k8-cluster-mukul --num-nodes=2 --machine-type=n1-standard-1 --zone=europe-west2-b
~~~

now Install kubectl to communicate with a Kubernetes cluster.
This step is done on the GCP VM which is used as client through out this course.

Also, created service account <EMAIL> with Compute Admin, Kubernetes Engine Admin, Service Account Token Creator, Service Account User, Storage Admin

~~~ bash
  curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
  ls -ltr
  sudo chmod +x /usr/local/bin/kubectl
  sudo mv ./kubectl /usr/local/bin/kubectl
  kubectl
  gcloud auth activate-service-account <EMAIL> --key-file=training-325404-6e9760bc1e2f-gke.json
  gcloud container clusters get-credentials k8-cluster-mukul --zone=europe-west2-b
~~~

last command sets up kubeconfig for cluster.

### Deploy app container into GCP GKE cluster

added service account <EMAIL> to Jenkins as credential >> Secret file

Added Deployment and Service(type Loadbalancer) manifests with image built from jenkins, this auto updates the version, using sed to do this. Updated Jenkinsfile, please check for more details. This has got sed to

This page is in progress of updates...some commands may not be in order as rushing currently. Hope you enjoyed.

<file_sep>/Project-part-I.md
# Lloyds Bank Group Modern Engineering Bootcamp project specification

## Introduction

This is a project proposal for the Lloyds Bank Group Modern Engineering Pathway. The intention of this project is to provide students a hands-on task to apply the knowledge they gained during the previous days of the pathway.

The project is divided into two parts. Each project part is divided into tasks. Tasks should be completed in an order - a student should complete a previous task before going to a next one. Students can stop implementing the project at any stage they want - the more tasks they complete however, the more they learn.

## Part I

This project work covers the following topics:

* Source Control
* Node applications
* Cloud Native principles
* Theory of testing

Project tasks are aligned with Sprint 1 learning.

### 1. REST application development in Node

**Goals:**

* This is the first stage of our project in which students create a very simple REST application in Node.
* This application will be used by us in the later stages of the project.

**Tasks:**

* Create a simple Node application exposing REST API.
* An application should listen to incoming HTTP requests on port 8080.
* An application API should be used to expose catalog of products for an e-commerce system.
* An application should use an in-memory database to store a catalog of products.
* API endpoint /product should be used to manipulate a product catalog.
* Proper REST verbs (POST, GET, etc) should be used to in manipulate and access the catalog.
* The product catalog REST API should use JSON as a data format.
* Product itself should contain the following fields:
	* Name
	* Description
	* Price

### 2. Development of an application with a version control

**Goals:**

* Demonstrate how to use the Git version control to locally manage an application development process.
* Understand how to roll back changes to an application.

**Tasks:**

* Initialize a local git repository in your application’s directory.
* Add your application’s code to the version control.
* Perform some change to the codebase and then use git to rollback that change.

### 3. Working with version control branches

**Goals:**

* Demonstrate how to work with Git branches.

**Tasks:**

* Create a git branch to your application codebase.
* Add a readme.md markdown file with a documentation to your project (use your new branch for this purpose).
* After you finish working on your documentation, merge it back to your main/master branch.

### 4. Testing application

**Goals:**

* Demonstrate how to test REST application using Jest.
* Understand when to use unit tests and when REST API tests.

**Tasks:**

* Create tests verifying that the product JSON object returned by your REST API is a valid API response you expected to receive.
* Create unit test verifying the logic used to create the product instance returned by the API.
* Change something in your application and see how tests are failing to simulate regression happening to your application.

### 5. Logging

**Goals:**

* Understand how to log an application even to the standard output.
* Take advantage of the best logging 12 Factor logging practices.

**Tasks:**

* Whenever your application’s REST API is being called, log an appropriate information about this event.
* Use the standard output for logging.
* Use standard console.log utility for logging.
* Choose the right logging level for the given event.
* Verify that you can see a log line output in the console whenever a new REST API request event is handled by your application.<file_sep>/build.sh
#!/bin/sh

if [ $# -ne 1 ]
then
  echo "Pass the version number. \n"
  echo "Systex: $0 <version to build>"
  exit 10
fi

docker build -t nodeapp:v$1 .
<file_sep>/Jenkinsfile
pipeline {
    agent any

    environment {
        CREDS = credentials('sa-mkc-vm-gcr')
	CREDS_GKE = credentials('sa-mkc-gke-auth')
    }

    stages {
        stage('Build App') {
            steps {
                //
                sh "echo $CREDS"

		//sh ./build.sh ${BUILD_NUMBER}
		sh "npm install"
            }
        }
        stage('Test App') {
            steps {
                sh "npm test"
            }
        }
        stage('Build Container') {
            steps {
                //
		sh "echo 'Deployment yet to be sorted'"
		sh "docker build -t nodeapp:v${BUILD_NUMBER} ."
		sh "docker tag nodeapp:v${BUILD_NUMBER} gcr.io/training-325404/nodeapp-mukul:v${BUILD_NUMBER}"
		sh "cat $CREDS | docker login -u _json_key --password-stdin https://gcr.io"
		sh "docker push gcr.io/training-325404/nodeapp-mukul:v${BUILD_NUMBER}"
            }
        }
        stage('Deploy to GKE') {
            steps {
                //
                sh "echo 'Deployment started...'"
		sh "gcloud auth activate-service-account <EMAIL> --key-file=$CREDS_GKE"
		sh "gcloud container clusters get-credentials k8-cluster-mukul --zone=europe-west2-b"
		sh "cat ~/.kube/config"
		sh "sed 's/VERSION/${BUILD_NUMBER}/g' ./k8s/deployment.yml > ./k8s/deploymenttmp.yml"
		sh "kubectl apply -f ./k8s/deploymenttmp.yml"
		sh "rm ./k8s/deploymenttmp.yml"
		sh "kubectl get pods"
		sh "echo 'deployed successfully...'"
            }
        }
    }
}
<file_sep>/Dockerfile
FROM node:14
COPY . .
RUN npm install
ENTRYPOINT ["npm", "start"]

branch_name: refs/heads/main

languages: Markdown Shell Dockerfile Groovy

repo_name: mukulchn/REST-API-starter


text:
<file_sep># portfolio-xue
Online portfolio

repo_name: etudie/portfolio-xue


text:
<file_sep>using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerManager : MonoBehaviour {
    public float shieldTimer = 0.0f;
    public bool isShielded = false;
    bool doOnce = true;
    bool isHitFinal = false;
    int count = 0;
    int explosionTimer = 0;
    bool explosionActive = false;
    public int lives = 3;
    public SpriteRenderer render;
    public Sprite shielded;
    public Sprite normal;
    public Animator anim;
    // Use this for initialization
    void Start () {
        anim = GetComponent<Animator>();
        anim.Play("null");
	}

	// Update is called once per frame
	void Update () {
        if (isShielded == true)
        {
            render.sprite = shielded;
            anim.Play("shield");

            shieldTimer += Time.deltaTime;
            if (shieldTimer > 5.5f && shieldTimer < 7 && doOnce == true)
            {
                GameObject.Find("Player").GetComponent<PlayerMovement>().speedUp -= 20;
                doOnce = false;
            }
            if (shieldTimer >= 7)
            {

                isShielded = false;
                doOnce = true;
                anim.Play("null");
            }
        }
        else
        {
            render.sprite = normal;
        }

        if (isHitFinal == true)
        {
            count++;
            if (count == 30)
            {
                Destroy(this.gameObject);
                Application.LoadLevel("DeathScreen");
                isHitFinal = false;
                count = 0;
            }
        }

        if (explosionActive == true)
        {
            explosionTimer++;
            if (explosionTimer == 25)
            {
                explosionTimer = 0;
                explosionActive = false;
                anim.Play("null");
            }
        }
    }

    void OnTriggerEnter(Collider collision)
    {
        if (collision.gameObject.tag == "Obstacle" && isShielded == false && lives > 0)
        {
            lives--;
            anim.Play("ExplosionAnim");
            explosionActive = true;
        }

        if (collision.gameObject.tag == "Obstacle" && isShielded == false && lives <= 0)
        {
            isHitFinal = true;
            anim.Play("ExplosionAnim");
            explosionActive = true;
        }

    }

}
<file_sep>using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using EZCameraShake;

public class PlayerManager : MonoBehaviour {
    public float shieldTimer = 0.0f;
    public bool isShielded = false;
    bool doOnce = true;
    bool isHitFinal = false;
    int count = 0;
    int explosionTimer = 0;
    bool explosionActive = false;
    public int lives = 3;
    Animator anim;
    Animator anim2;

    public CameraShakeScript cameraShake;
    // Use this for initialization
    void Start () {
        anim = GameObject.Find("Explosion").GetComponent<Animator>();
        anim2 = GameObject.Find("Shield").GetComponent<Animator>();
        anim.Play("null");
        anim2.Play("null");
	}

	// Update is called once per frame
	void Update () {

        if (isShielded == true)
        {
            anim2.Play("Shield");

            shieldTimer += Time.deltaTime;
            if (shieldTimer > 5.5f && shieldTimer < 7 && doOnce == true)
            {
                GameObject.Find("Player").GetComponent<PlayerMovement>().speedUp -= 20;
                doOnce = false;
            }
            if (shieldTimer >= 7)
            {

                isShielded = false;
                doOnce = true;
                anim2.Play("null");

            }
        }

        if (isHitFinal == true)
        {
            count++;
            if (count == 30)
            {
                Destroy(this.gameObject);
                Application.LoadLevel("DeathScreen");
                isHitFinal = false;
                count = 0;
            }
        }

        if (explosionActive == true)
        {
            explosionTimer++;
            if (explosionTimer == 25)
            {
                explosionTimer = 0;
                explosionActive = false;
                anim.Play("null");
            }
        }
    }

    void OnTriggerEnter(Collider collision)
    {
        if (collision.gameObject.tag == "Obstacle" && isShielded == false && lives > 0)
        {
            lives--;
            anim.Play("ExplodeItself");
            explosionActive = true;
            CameraShaker.Instance.ShakeOnce(4f, 4f, 1f, 1f);
        }

        if (collision.gameObject.tag == "Obstacle" && isShielded == false && lives <= 0)
        {
            isHitFinal = true;
            anim.Play("ExplodeItself");
            explosionActive = true;
        }

    }

}

repo_language: C#

repo_name: Sevarish/StarRacerNew