void Start() { inputController = Camera.main.GetComponent <TutorialInputController>(); uiController = Camera.main.GetComponent <TutorialUIController>(); soundController = gameObject.GetComponent <SoundController>(); camController = Camera.main.GetComponent <CameraController>(); TileFactory.tileMaterial = tileMaterial; matrix = new Matrix(MapParser.ReadMap("Maps/tutorial")); MapDrawer.instantiateMap(matrix.getIterable()); players = new List <Player> (); players.Add(new Player("Jugador", StatsFactory.GetStat(SlimeCoreTypes.SLOTH))); // Test with 2 players //players.Add(new Player("IA Tutorial", 1, StatsFactory.GetStat(SlimeCoreTypes.SLOTH))); // Test with 2 players players[0].SetColor(new Color(1, 1, 1)); //players[1].SetColor(new Color(1,0,1)); playerSlime = SlimeFactory.instantiateSlime(players[0], new Vector2(0f, -2f)); //SlimeFactory.instantiateSlime(players[1], new Vector2(0f,2f)); status = GameControllerStatus.WAITINGFORACTION; currentPlayer = players [0]; uiController.UpdateRound(currentTurn + 1); uiController.UpdatePlayer(GetCurrentPlayer().GetColor()); uiController.UpdateActions(playerActions, GetCurrentPlayer().actions); uiController.ShowBothPanels(); InitDialogChains(); InitMarker(); marker.SetParentTransform(playerSlime.transform); marker.SetMarkerRelativeSize(); marker.SetActive(false); FloatingTextController.Initialize(); }
public int GetDamageReduction() { if (elementType != null) { return((int)(StatsFactory.GetStat(elementType).maxDamageReduction *100f)); } else { return(0); } }
public int GetDamage() { if (elementType != null) { return(StatsFactory.GetStat(elementType).maxBaseAttack); } else { return(0); } }
public int GetMovementRange() { if (elementType != null) { return(StatsFactory.GetStat(elementType).movement); } else { return(0); } }
public int GetAttackRange() { if (elementType != null) { return(StatsFactory.GetStat(elementType).range); } else { return(0); } }
public void ChangeElement(ElementType newElement) { if (elementType == ElementType.NONE) { elementType = newElement; element = StatsFactory.GetStat(elementType); } if (elementType == ElementType.FIRE || elementType == ElementType.WATER || elementType == ElementType.EARTH) { switch (newElement) { case ElementType.EARTH: if (elementType == ElementType.FIRE) { elementType = ElementType.LAVA; } else if (elementType == ElementType.WATER) { elementType = ElementType.MUD; } break; case ElementType.FIRE: if (elementType == ElementType.EARTH) { elementType = ElementType.LAVA; } else if (elementType == ElementType.WATER) { elementType = ElementType.STEAM; } break; case ElementType.WATER: if (elementType == ElementType.FIRE) { elementType = ElementType.STEAM; } else if (elementType == ElementType.EARTH) { elementType = ElementType.MUD; } break; default: break; } element = StatsFactory.GetStat(elementType); } }
private void changeInfo() { StatsContainer stats; if (coreSelector [currentPlayer] == 0) { stats = StatsFactory.GetStat(SlimeCoreTypes.WRATH); } else if (coreSelector [currentPlayer] == 1) { stats = StatsFactory.GetStat(SlimeCoreTypes.SLOTH); } else if (coreSelector [currentPlayer] == 2) { stats = StatsFactory.GetStat(SlimeCoreTypes.GLUTTONY); } else if (coreSelector [currentPlayer] == 3) { stats = StatsFactory.GetStat(SlimeCoreTypes.ENVY); } else if (coreSelector [currentPlayer] == 4) { stats = StatsFactory.GetStat(SlimeCoreTypes.GREED); } else if (coreSelector [currentPlayer] == 5) { stats = StatsFactory.GetStat(SlimeCoreTypes.LUST); } else if (coreSelector [currentPlayer] == 6) { stats = StatsFactory.GetStat(SlimeCoreTypes.PRIDE); } else if (coreSelector [currentPlayer] == 7) { stats = StatsFactory.GetStat(SlimeCoreTypes.INNOCENCE); } else if (coreSelector [currentPlayer] == 8) { stats = StatsFactory.GetStat(SlimeCoreTypes.ULTIMATE); // Por ahora peta } else { stats = StatsFactory.GetStat(SlimeCoreTypes.GLUTTONY); } int dmg = stats.maxBaseAttack; int hp = stats.baseMass; int rng = stats.range; int move = stats.movement; GameObject.Find("CoreInfo").GetComponent <Text> ().text = " " + hp + " " + dmg + "\n " + rng + " " + move; }
public RawSlime(float mass, ElementType elementType, StatsContainer stats, TileData tile) { this.mass = mass; this.element = stats; this.elementType = elementType; this.actualTile = tile; actualTile.SetSlimeOnTop(this); this.id = ID; ID++; if (stats == null) { element = StatsFactory.GetStat(ElementType.NONE); elementType = ElementType.NONE; } }
public RawSlime(int id, float mass, ElementType elementType, StatsContainer stats, TileData tile) { this.mass = mass; this.element = stats; this.elementType = elementType; this.actualTile = tile; actualTile.SetSlimeOnTop(this); this.id = id; if (id > ID) { ID = id + 1; // ID sempre es el maxim de tots els id de RawSlime } if (stats == null) { element = StatsFactory.GetStat(ElementType.NONE); elementType = ElementType.NONE; } }
public string GetElement() { if (element == StatsFactory.GetStat(ElementType.NONE)) { return("Sin recubrimiento"); } else if (element == StatsFactory.GetStat(ElementType.EARTH)) { return("Recubrimiento de tierra"); } else if (element == StatsFactory.GetStat(ElementType.FIRE)) { return("Recubrimiento de fuego"); } else if (element == StatsFactory.GetStat(ElementType.WATER)) { return("Recubrimiento de agua"); } return("Recubrimiento desconocido"); }
public void ChangeElement(ElementType newElement) { if (elementType == ElementType.NONE) { elementType = newElement; element = StatsFactory.GetStat(elementType); canimation = new SpriteAnimation(gameObject.GetComponent <SpriteRenderer> ()); canimation.LoadSprites(element.picDirection, element.picCount); canimation.SetMode(SpriteAnimationMode.BOUNCE); canimation.playAnimation(); changeScaleSlime(); } if (elementType == ElementType.FIRE || elementType == ElementType.WATER || elementType == ElementType.EARTH) { switch (newElement) { case ElementType.EARTH: if (elementType == ElementType.FIRE) { elementType = ElementType.LAVA; } else if (elementType == ElementType.WATER) { elementType = ElementType.MUD; } break; case ElementType.FIRE: if (elementType == ElementType.EARTH) { elementType = ElementType.LAVA; } else if (elementType == ElementType.WATER) { elementType = ElementType.STEAM; } break; case ElementType.WATER: if (elementType == ElementType.FIRE) { elementType = ElementType.STEAM; } else if (elementType == ElementType.EARTH) { elementType = ElementType.MUD; } break; default: break; } element = StatsFactory.GetStat(elementType); canimation = new SpriteAnimation(gameObject.GetComponent <SpriteRenderer> ()); canimation.LoadSprites(element.picDirection, element.picCount); canimation.playAnimation(); canimation.SetMode(SpriteAnimationMode.LOOP); changeScaleSlime(); } CenterFace(); }
public void InitElementTypeNone() { elementType = ElementType.NONE; element = StatsFactory.GetStat(elementType); }
static void Main(string[] args) { #region Strategy //Hero heroAxe = new Hero(new Axe(damage: 90)); //Hero heroBlade = new Hero(new Blade(damage: 95)); //int monsterDef = 75; //Console.WriteLine($"Axe: {heroAxe.Attack(monsterDef)}"); //Console.WriteLine($"Axe: {heroBlade.Attack(monsterDef)}"); #endregion #region Factory Method //Necromancer necromancer = new Necromancer(); //Undead undead = necromancer.RaiseUndead<Sceleton>(); #endregion #region TamplateMethod ArmorSmith aSmith = new ArmorSmith(); WeaponSmith wSmith = new WeaponSmith(); aSmith.ForgeGear(); Console.WriteLine("Armor Ready!!!\n"); wSmith.ForgeGear(); Console.WriteLine("Weapon Ready!!!\n"); #endregion #region Builder //string player = "Me"; //string target = "Foe"; //string world = "sand"; //SpellDirector lol = new SpellDirector(); //SpellBuffBuilder builder = new SpellBuffBuilder(player, target, world); //lol.Builder = builder; //lol.BuildSpell(); //builder.GetSpell(); #endregion #region Abstract Factory AbstractFactory statsFactory = new StatsFactory(); IncreasePotions potion = statsFactory.GetIncreasePotion(); Console.WriteLine(potion.Effect); #endregion #region Singleton Team team = Team.GetTeam(); team.AddMember(new TeamMember()); #endregion Console.ReadLine(); }
public void tutorialFSMCheck() { List <String> texts = new List <String>(); switch (tutorialStatus) { case TutorialFSMStatus.SELECTSLIME: chainTextDialog.Hide(); texts.Add("¿Has visto que ha aparecido alrededor?\nEsas son las casillas por las que tu slime se puede mover en una acción"); texts.Add("Prueba a moverte aquí"); chainTextDialog.SetTextList(texts); chainTextDialog.Show(); chainTextDialog.SetOnClickFunction(() => { inputController.SetActiveInput(true); marker.SetActive(true); marker.SetParentTransform(MapDrawer.GetTileAt(-1, -3).transform); }); inputController.SetActiveInput(false); inputController.SetActiveMove(true); tutorialStatus = TutorialFSMStatus.MOVEFIRSTSLIME; break; case TutorialFSMStatus.MOVEFIRSTSLIME: texts.Add("Muy bien.\nAhora vuelve a donde estabas"); chainTextDialog.SetTextList(texts); chainTextDialog.Show(); chainTextDialog.SetOnClickFunction(() => { }); inputController.SetActiveInput(true); inputController.SetActiveMove(true); marker.SetActive(true); marker.SetParentTransform(MapDrawer.GetTileAt(0, -2).transform); tutorialStatus = TutorialFSMStatus.RETURNSLIME; break; case TutorialFSMStatus.RETURNSLIME: texts.Add("Perfecto"); texts.Add("¿Sabias que los slimes pueden hacer muchas mas cosas además de moverse?"); texts.Add("Ya verás, si mantienes pulsado el slime verás que se marcan alrededor unas casillas.\nPrueba a arrastrar y soltar encima de esas casillas a ver que pasa"); chainTextDialog.SetTextList(texts); chainTextDialog.Show(); chainTextDialog.SetOnClickFunction(() => { inputController.SetActiveInput(true); marker.SetActive(true); marker.SetParentTransform(MapDrawer.GetTileAt(0, -1).transform); }); inputController.SetActiveInput(false); inputController.SetActiveMove(false); inputController.SetActiveSplit(true); marker.SetActive(false); tutorialStatus = TutorialFSMStatus.SPLITSLIME; break; case TutorialFSMStatus.SPLITSLIME: texts.Add("Wow, se han separado"); texts.Add("Como has conseguido separarte puedes ovservar que la cantidad de acciones que puedes hacer en un turno ha aumentado"); texts.Add("Mueve el nuevo slime aquí"); chainTextDialog.SetTextList(texts); chainTextDialog.Show(); chainTextDialog.SetOnClickFunction(() => { inputController.SetActiveInput(true); marker.SetActive(true); marker.SetParentTransform(MapDrawer.GetTileAt(1, -2).transform); }); inputController.SetActiveSplit(false); inputController.SetActiveInput(false); inputController.SetActiveMove(true); tutorialStatus = TutorialFSMStatus.MOVESECONDARYSLIME; break; case TutorialFSMStatus.MOVESECONDARYSLIME: texts.Add("Para juntar tu slime, has de hacer lo mismo que para separarlo pero sobre el slime nuevo"); chainTextDialog.SetTextList(texts); chainTextDialog.Show(); chainTextDialog.SetOnClickFunction(() => { inputController.SetActiveInput(true); inputController.SetActiveJoin(true); marker.SetActive(true); marker.SetParentTransform(MapDrawer.GetTileAt(1, -2).transform); }); tutorialStatus = TutorialFSMStatus.JOINSLIME; break; case TutorialFSMStatus.JOINSLIME: texts.Add("¡Cuidado! Un slime enemigo ha aparecido, prueba a atacarle"); chainTextDialog.SetTextList(texts); chainTextDialog.Show(); chainTextDialog.SetOnClickFunction(() => { inputController.SetActiveAttack(true); inputController.SetActiveInput(true); marker.SetActive(true); marker.SetParentTransform(MapDrawer.GetTileAt(0, 0).transform); }); Player p = new Player("Sida", StatsFactory.GetStat(SlimeCoreTypes.INNOCENCE)); p.SetColor(new Color(1, 0, 0)); SlimeFactory.instantiateSlime(p, 0, 0); inputController.SetActiveJoin(false); inputController.SetActiveInput(false); marker.SetActive(false); inputController.SetActiveInput(false); tutorialStatus = TutorialFSMStatus.ATTACKSLIME; break; case TutorialFSMStatus.ATTACKSLIME: texts.Add("¿Por que no conviertes conquistas una casilla y te curas?"); chainTextDialog.SetTextList(texts); chainTextDialog.Show(); chainTextDialog.SetOnClickFunction(() => { inputController.SetActiveMove(true); inputController.SetActiveInput(true); marker.SetActive(true); marker.SetParentTransform(MapDrawer.GetTileAt(-1, -1).transform); }); inputController.SetActiveJoin(false); inputController.SetActiveInput(false); inputController.SetActiveMove(false); marker.SetActive(false); tutorialStatus = TutorialFSMStatus.MOVETOCONQUER; break; case TutorialFSMStatus.MOVETOCONQUER: texts.Add("Ahora selecciona tu slime y vuelve a hacer click en el"); chainTextDialog.SetTextList(texts); chainTextDialog.Show(); chainTextDialog.SetOnClickFunction(() => { inputController.SetActiveConquer(true); inputController.SetActiveInput(true); marker.SetActive(true); marker.SetParentTransform(MapDrawer.GetTileAt(-1, -1).transform); }); inputController.SetActiveInput(false); inputController.SetActiveConquer(false); inputController.SetActiveMove(false); marker.SetActive(false); tutorialStatus = TutorialFSMStatus.CONQUERTILE; break; case TutorialFSMStatus.CONQUERTILE: texts.Add("Vuelve a tocar la casilla conquistada para curarte"); chainTextDialog.SetTextList(texts); chainTextDialog.Show(); chainTextDialog.SetOnClickFunction(() => { inputController.SetActiveEat(true); inputController.SetActiveConquer(true); inputController.SetActiveInput(true); marker.SetActive(true); marker.SetParentTransform(MapDrawer.GetTileAt(-1, -1).transform); }); inputController.SetActiveInput(false); inputController.SetActiveEat(false); inputController.SetActiveConquer(false); marker.SetActive(false); tutorialStatus = TutorialFSMStatus.ATTACKWITHFIRE; break; case TutorialFSMStatus.ATTACKWITHFIRE: texts.Add("Te has curado"); texts.Add("Ahora ya conoces las bases de SLIMERS"); texts.Add("Explora los diferentes retos para descubrir sus verdaderos límites, si es que los tienen"); chainTextDialog.SetTextList(texts); chainTextDialog.Show(); chainTextDialog.SetOnClickFunction(() => { SceneManager.LoadScene(0); }); inputController.SetActiveInput(false); inputController.SetActiveEat(false); inputController.SetActiveConquer(false); marker.SetActive(false); break; } }
// Use this for initialization void Start() { /* * TipDialog a = new TipDialog (); * a.SetButtonImage(SpritesLoader.GetInstance ().GetResource ("Buttons/button_template")); * a.SetBackgroundImage(SpritesLoader.GetInstance ().GetResource ("Panels/emergent")); * a.SetInfoTextText ("Has aceptado"); * a.Hide (); * TwoOptionsDialog t = new TwoOptionsDialog(); * t.SetButtonsImage(SpritesLoader.GetInstance ().GetResource ("Buttons/button_template")); * t.SetBackgroundImage(SpritesLoader.GetInstance ().GetResource ("Panels/emergent")); * t.SetAceptButtonColor (new Color(0f,0f,1f)); * t.SetDeclineButtonColor (new Color(1f,0f,0f)); * t.SetOnClickAceptFunction(()=>{ * a.Show(); * }); */ /* * Time.timeScale = 1; * ChainTextDialog ctd = new ChainTextDialog (); * ctd.SetButtonImage(SpritesLoader.GetInstance ().GetResource ("Buttons/button_template")); * ctd.SetBackgroundImage(SpritesLoader.GetInstance ().GetResource ("Panels/emergent")); */ TileFactory.tileMaterial = tileMaterial; //InGameMarker igm = new InGameMarker (); //igm.SetSprite (SpritesLoader.GetInstance().GetResource("Test/testTileSlim")); FloatingTextController.Initialize(); uiController = Camera.main.GetComponent <UIController>(); soundController = gameObject.GetComponent <SoundController>(); camController = Camera.main.GetComponent <CameraController>(); conquerSprite = SpritesLoader.GetInstance().GetResource("Tiles/conquest_flag"); //panelTip = GameObject.Find("PanelTip"); //ja tenim el panell, per si el necessitem activar, i desactivar amb : panelTip.GetComponent<DialogInfo> ().Active (boolean); //textTip = GameObject.Find("TextTip"); //ja tenim el textBox, per canviar el text : textTip.GetComponent<Text> ().text = "Text nou"; //panelTip.GetComponent<DialogInfo>().Active(false); //textTip.GetComponent<Text>().text = "Aquí es mostraran els diferents trucs que pot fer el jugador"; players = new List <Player>(); Time.timeScale = 1f; if (ModosVictoria.IsDefined(typeof(ModosVictoria), GameSelection.modoVictoria)) { condicionVictoria = (ModosVictoria)GameSelection.modoVictoria; } else { condicionVictoria = ModosVictoria.ASESINATO; //por defecto } MAX_TURNS = GameSelection.MAX_TURNS; int maxPlayers = GameSelection.playerColors.Count; if (maxPlayers == 0) { GameSelection.playerColors.Add(new Color(0, 0, 1)); GameSelection.playerColors.Add(new Color(1, 0, 0)); GameSelection.playerCores.Add(SlimeCoreTypes.SLOTH); GameSelection.playerCores.Add(SlimeCoreTypes.WRATH); GameSelection.playerIAs.Add(false); GameSelection.playerIAs.Add(true); maxPlayers = 2; } for (int i = 0; i < maxPlayers; i++) { if (GameSelection.playerIAs [i]) { //players.Add(new Player("Jugador "+(i+1),StatsFactory.GetStat(GameSelection.playerCores[i]))); Debug.Log("Ia true"); players.Add(new Player("Jugador " + (i + 1), StatsFactory.GetStat(GameSelection.playerCores[i]), AIManager.GetAIByVictoryCondition(this, condicionVictoria))); } else { players.Add(new Player("Jugador " + (i + 1), StatsFactory.GetStat(GameSelection.playerCores[i]))); } players[i].SetColor(GameSelection.playerColors[i]); } matrix = GameSelection.map;//new Matrix(11, 0.3f, 1234567); if (matrix == null) { matrix = new Matrix(5 * players.Count, 0.3f, Random.Range(0, 10000)); } MapDrawer.instantiateMap(matrix.getIterable()); int numSlimesPerPlayer = 2; List <List <Vector2> > positions = matrix.GetPositions(players.Count, numSlimesPerPlayer); int j = 0; foreach (Player player in players) { List <Vector2> positionsSlimes = positions[j]; foreach (Vector2 positionSlime in positionsSlimes) { SlimeFactory.instantiateSlime(player, positionSlime); } j++; } if (players.Count == 0) { players.Add(new Player("Jugador 1", StatsFactory.GetStat(SlimeCoreTypes.WRATH), AIManager.GetAIByVictoryCondition(this, condicionVictoria))); // Test with 2 players players.Add(new Player("Jugador 2", StatsFactory.GetStat(SlimeCoreTypes.GLUTTONY))); players[0].SetColor(Color.blue); players[1].SetColor(Color.red); positions = matrix.GetPositions(players.Count, 1); SlimeFactory.instantiateSlime(players[0], positions[0][0]); SlimeFactory.instantiateSlime(players[1], positions[1][0]); } //matrix = new Matrix(MapParser.ReadMap(MapTypes.Medium)); currentTurn = 0; currentPlayer = players[0]; playerActions = 0; uiController.UpdateRound(currentTurn + 1); uiController.UpdatePlayer(GetCurrentPlayer().GetColor()); uiController.UpdateActions(playerActions, GetCurrentPlayer().actions); uiController.ShowBothPanels(); //iniciem la informacio de game over totalTiles = matrix.TotalNumTiles(); //Debug.Log("TILES TOTALS: "+ totalTiles); // La condicio de victoria s'assigna mes amunt, aqui nomes s'actualitzen els requisits. switch (condicionVictoria) { case ModosVictoria.CONQUISTA: //define percentage tiles to win if (MAX_TURNS == 0) { percentageTilesToWin = 0.25f; } else { percentageTilesToWin = 0.75f; } //Debug.Log("Porcentaje de conquista para ganar: "+percentageTilesToWin); break; case ModosVictoria.MASA: //define mass to win massToWin = 0; foreach (Player player in players) { if (player.GetTotalMass() > massToWin) { massToWin = player.GetTotalMass(); } } massToWin *= 2; //Debug.Log("Masa total del jugador para ganar: "+massToWin); break; } GameOverInfo.Init(); AudioClip clip = SoundsLoader.GetInstance().GetResource("Sounds/MainGameTheme"); soundController.PlayLoop(clip); camController.InitMaxZoom(); status = GameControllerStatus.CHECKINGLOGIC; }
public static Slime instantiateSlime(Player pl, int x, int y) { GameObject slimeGameObjectContainer = new GameObject("Slime " + (pl.GetNumSlimes() + 1).ToString() + " - " + pl.GetName()); GameObject slime = new GameObject("Core"); slime.transform.SetParent(slimeGameObjectContainer.transform); slime.AddComponent <SpriteRenderer>(); slime.tag = "Slime"; GameObject face = new GameObject("SlimeFace"); face.AddComponent <SpriteRenderer> (); face.transform.SetParent(slime.transform); face.GetComponent <SpriteRenderer>().sortingLayerName = "TileElement"; face.GetComponent <SpriteRenderer> ().sprite = SpritesLoader.GetInstance().GetResource(pl.statsCoreInfo.picDirection); slime.AddComponent <Slime>().face = face; slime.GetComponent <SpriteRenderer>().sprite = SpritesLoader.GetInstance().GetResource(StatsFactory.GetStat(ElementType.NONE).picDirection + 0); slime.GetComponent <SpriteRenderer>().sortingLayerName = "TileElement"; slime.AddComponent <BoxCollider2D>(); slime.AddComponent <SlimeMovement>().parent = slimeGameObjectContainer; pl.AddSlime(slime.GetComponent <Slime>()); Tile tile = MapDrawer.GetTileAt(x, y); Vector2 tileWorldPosition = tile.GetTileData().GetRealWorldPosition(); //MapDrawer.drawInternCoordenates(new Vector2(x0, y0)); slimeGameObjectContainer.transform.position = new Vector3(tileWorldPosition.x, tileWorldPosition.y, 0f); slime.GetComponent <Slime>().SetActualTile(tile); slime.GetComponent <Slime> ().InitElementTypeNone(); slime.GetComponent <Slime>().setPlayer(pl); slime.transform.localPosition = new Vector3(0f, 0.35f, 0f); slime.GetComponent <Slime>().SetId(ID); ID++; return(slime.GetComponent <Slime> ()); }