public void addCharacter(IrisCharacter charac) { if (characters == null) { characters = new List <IrisCharacter>(); } characters.Add(charac); }
public void switchCharacter(IrisCharacter ic) { if (!npcName.IsVisible) { npcName.Visibility = System.Windows.Visibility.Visible; } if (ic.charName == null) { npcName.Text = "???"; } else { npcName.Text = ic.charName; } }
public IrisCharacter parseCharacter() { IrisCharacter charac = new IrisCharacter(); String fieldName, fieldValue; nextTokenIfEquals(Token.TokenValue.CHARACTER); if (currentTokenEquals(Token.TokenValue.VALUE_IDENTIFIER)) { charac.name = currentToken.stringValue; nextToken(); nextTokenIfEquals(Token.TokenValue.LBRACE); while (!currentTokenEquals(Token.TokenValue.RBRACE)) { if (currentTokenEquals(Token.TokenValue.VALUE_IDENTIFIER)) { fieldName = currentToken.stringValue; nextToken(); nextTokenIfEquals(Token.TokenValue.EQ); //name = "name"; if (fieldName.Equals("name")) { if (currentTokenEquals(Token.TokenValue.STRING)) { charac.charName = currentToken.stringValue; nextToken(); nextTokenIfEquals(Token.TokenValue.SEMICOLON); } else { throw new SyntaxError(lineNumber, colNumber, Token.TokenValue.STRING); } } //color = "#0077FF"; else if (fieldName.Equals("color")) { if (currentTokenEquals(Token.TokenValue.STRING)) { charac.setColor(currentToken.stringValue); } else { throw new SyntaxError(lineNumber, colNumber, Token.TokenValue.STRING); } } //images = { // happy = "happy_and_cool.png"; // light = "emotions/shining.png"; // ..... = ....................; //}; else if (fieldName.Equals("images")) { nextTokenIfEquals(Token.TokenValue.LBRACE); while (!currentTokenEquals(Token.TokenValue.RBRACE)) { if (currentTokenEquals(Token.TokenValue.VALUE_IDENTIFIER)) { fieldName = currentToken.stringValue; nextToken(); nextTokenIfEquals(Token.TokenValue.EQ); if (currentTokenEquals(Token.TokenValue.STRING)) { fieldValue = currentToken.stringValue; nextToken(); nextTokenIfEquals(Token.TokenValue.SEMICOLON); charac.addImage(fieldName, fieldValue); } else { throw new SyntaxError(lineNumber, colNumber, Token.TokenValue.STRING); } } else { throw new SyntaxError(lineNumber, colNumber, Token.TokenValue.VALUE_IDENTIFIER); } } nextTokenIfEquals(Token.TokenValue.RBRACE); nextTokenIfEquals(Token.TokenValue.SEMICOLON); } else { throw new UnknownField(lineNumber, colNumber, charac.name, fieldName); } } } nextTokenIfEquals(Token.TokenValue.RBRACE); //nextTokenIfEquals(Token.TokenValue.SEMICOLON); return(charac); } else { throw new SyntaxError(lineNumber, colNumber, Token.TokenValue.VALUE_IDENTIFIER); } //erreur //return null; }
public void evalInstruction(InstructionExpression instr) { if (instr is ValueExpression) { valueExp = (ValueExpression)instr; if (valueExp.type == ObjectType.intType) { variables.Add(valueExp.name, new ObjectExpression(valueExp.type, 0)); } else if (valueExp.type == ObjectType.booleanType) { variables.Add(valueExp.name, new ObjectExpression(valueExp.type, false)); } else if (valueExp.type == ObjectType.stringType) { variables.Add(valueExp.name, new ObjectExpression(valueExp.type, "")); } if (valueExp.value != null) { variables[valueExp.name] = new ObjectExpression(valueExp.type, evalSimpleExpression(valueExp.value).value); } return; } else if (instr is AssignExpression) { assignExp = (AssignExpression)instr; variables[assignExp.name] = evalSimpleExpression(assignExp.value); return; } else if (instr is OpenMsgDialogInstruction) { gScreen.msgBox.openBox(); return; } else if (instr is MsgDisplayInstruction) { msgExp = (MsgDisplayInstruction)instr; o1 = evalSimpleExpression(msgExp.msg); if (o1.type != ObjectType.stringType) { return; } gScreen.msgBox.setText((string)o1.value); return; } else if (instr is NextMsgDialogInstruction) { shouldEvalSeq = false; gScreen.msgBox.showNextButton(); return; } else if (instr is CloseMsgDialogInstruction) { shouldEvalSeq = false; gScreen.msgBox.showCloseButton(); return; } else if (instr is SwitchCharacterInstruction) { try { gScreen.msgBox.switchCharacter(IrisData.characters[((SwitchCharacterInstruction)instr).character.name]); } catch (Exception e) { return; } return; } else if (instr is RemoveCharacter) { gScreen.msgBox.removeCharacter(); return; } else if (instr is SetVariableInstruction) { setExp = (SetVariableInstruction)instr; /*if (!playerVariables.ContainsKey(setExp.variable.name)) * { * playerVariables.Add(setExp.variable.name, -1); * } * * playerVariables[setExp.variable.name] = (int)(evalSimpleExpression(setExp.value).value);*/ IrisData.setPlayerVariable(setExp.variable.name, (int)(evalSimpleExpression(setExp.value).value)); return; } else if (instr is InputInstruction) { inputExp = (InputInstruction)instr; o1 = variables[inputExp.name]; shouldEvalSeq = false; if (o1.type == ObjectType.intType) { gScreen.iBox.openBox(InputBox.InputType.INT_INPUT); lastInstr = inputExp; } else if (o1.type == ObjectType.stringType) { gScreen.iBox.openBox(InputBox.InputType.STRING_INPUT); lastInstr = inputExp; } return; } else if (instr is MenuInstruction) { menuExp = (MenuInstruction)instr; shouldEvalSeq = false; gScreen.menBox.setChoices(((MenuInstruction)instr).choices); gScreen.menBox.openMenu(); lastInstr = menuExp; return; } else if (instr is PlayMediaInstruction) { playExp = (PlayMediaInstruction)instr; /*if (!IrisData.sounds.ContainsKey(playExp.name)) * { * return; * }*/ //else if(IrisData. try { gScreen.playMedia(IrisData.sounds[playExp.name]); } catch (Exception e) { return; } return; } else if (instr is StopMediaInstruction) { gScreen.stopMedia(); return; } else if (instr is ShowImageInstruction) { showExp = (ShowImageInstruction)instr; if (showExp.image is VariableExpression) { img = IrisData.images[((VariableExpression)showExp.image).name]; } else { memberExp = (MemberAccessExpression)showExp.image; charac = IrisData.characters[memberExp.name]; img = charac.getImage(memberExp.field); } gScreen.showImage(img, showExp.position); return; } else if (instr is SetBackgroundInstruction) { bgdInstr = (SetBackgroundInstruction)instr; try { gScreen.setBackground(IrisData.backgrounds[bgdInstr.image.name]); } catch (Exception e) { return; } return; } else if (instr is CleanBackgroundInstruction) { gScreen.clearBackground(); return; } else if (instr is CleanForegroundInstruction) { gScreen.clearForeGround(); return; } else if (instr is GotoInstruction) { gotoExp = (GotoInstruction)instr; npcExp = gotoExp.npc; evalExpression(IrisData.npcs[npcExp.npc].labels[npcExp.label]); return; } }